Commit e00dbdd
Changed files (4)
lib
saml
kit
spec
saml
kit
cli
commands
lib/saml/kit/cli/report.rb
@@ -27,58 +27,7 @@ module Saml
text.length >= max ? "#{text[0..max]}..." : text
end
- def build_header_for(document)
- table = []
- case document
- when Saml::Kit::Document
- table.push(['ID', document.id])
- table.push(['Issuer', document.issuer])
- table.push(['Version', document.version])
- table.push(['Issue Instant', document.issue_instant.iso8601])
- table.push(['Type', document.send(:name)])
- table.push(['Valid', document.valid?])
- table.push(['Signed?', document.signed?])
- table.push(['Trusted?', document.trusted?])
- when Saml::Kit::Metadata
- table.push(['Entity Id', document.entity_id])
- table.push(['Type', document.send(:name)])
- table.push(['Valid', document.valid?])
- table.push(['Name Id Formats', document.name_id_formats.inspect])
- table.push(['Organization', document.organization_name])
- table.push(['Url', document.organization_url])
- table.push(['Contact', document.contact_person_company])
- %w[
- SingleSignOnService
- SingleLogoutService
- AssertionConsumerService
- ].each do |type|
- document.services(type).each do |service|
- table.push([type, [service.location, service.binding]])
- end
- end
- document.certificates.each do |certificate|
- table.push(['', certificate.x509.to_text])
- end
- end
- if document.signature.present?
- signature = document.signature
- table.push(['Digest Value', signature.digest_value])
- table.push([
- 'Expected Digest Value', signature.expected_digest_value
- ])
- table.push(['Digest Method', signature.digest_method])
- table.push(['Signature Value', truncate(signature.signature_value)])
- table.push(['Signature Method', signature.signature_method])
- table.push([
- 'Canonicalization Method', signature.canonicalization_method
- ])
- table.push(['', signature.certificate.x509.to_text])
- end
- table
- end
-
- def build_body_for(document)
- table = []
+ def build_body_for(document, table)
case document
when Saml::Kit::AuthenticationRequest
table.push(['ACS', document.assertion_consumer_service_url])
@@ -117,7 +66,10 @@ module Saml
end
def build_table_for(document)
- build_header_for(document) + build_body_for(document)
+ table = []
+ document.build_header(table)
+ build_body_for(document, table)
+ table
end
end
end
lib/saml/kit/core_ext/document.rb
@@ -0,0 +1,58 @@
+module Saml
+ module Kit
+ class Document
+ def build_header(table = [])
+ table.push(['ID', id])
+ table.push(['Issuer', issuer])
+ table.push(['Version', version])
+ table.push(['Issue Instant', issue_instant.iso8601])
+ table.push(['Type', send(:name)])
+ table.push(['Valid', valid?])
+ table.push(['Signed?', signed?])
+ table.push(['Trusted?', trusted?])
+ signature.build_header(table) if signature.present?
+ end
+
+ def truncate(text, max: 50)
+ text.length >= max ? "#{text[0..max]}..." : text
+ end
+ end
+
+ class Metadata
+ def build_header(table = [])
+ table.push(['Entity Id', entity_id])
+ table.push(['Type', send(:name)])
+ table.push(['Valid', valid?])
+ table.push(['Name Id Formats', name_id_formats.inspect])
+ table.push(['Organization', organization_name])
+ table.push(['Url', organization_url])
+ table.push(['Contact', contact_person_company])
+ %w[SingleSignOnService SingleLogoutService AssertionConsumerService].each do |type|
+ services(type).each do |service|
+ table.push([type, [service.location, service.binding]])
+ end
+ end
+ certificates.each do |certificate|
+ table.push(['', certificate.x509.to_text])
+ end
+ signature.build_header(table) if signature.present?
+ end
+ end
+
+ class Signature
+ def build_header(table = [])
+ table.push(['Digest Value', digest_value])
+ table.push([
+ 'Expected Digest Value', expected_digest_value
+ ])
+ table.push(['Digest Method', digest_method])
+ table.push(['Signature Value', truncate(signature_value)])
+ table.push(['Signature Method', signature_method])
+ table.push([
+ 'Canonicalization Method', canonicalization_method
+ ])
+ table.push(['', certificate.x509.to_text])
+ end
+ end
+ end
+end
lib/saml/kit/cli.rb
@@ -3,6 +3,8 @@ require 'thor'
require 'yaml/store'
require 'uri'
+require 'saml/kit/core_ext/document'
+
require 'saml/kit/cli/certificate_report'
require 'saml/kit/cli/commands'
require 'saml/kit/cli/generate_key_pair'
spec/saml/kit/cli/commands/metadata_spec.rb
@@ -19,7 +19,6 @@ RSpec.describe Saml::Kit::Cli::Commands::Metadata do
context 'when the entity_id is registered' do
before { execute("metadata register #{entity_id}") }
-
specify { expect(status).to be_success }
specify { expect(output).to include(entity_id) }
end