Commit e00dbdd

mokha <mokha@cisco.com>
2018-03-06 21:27:43
move report header to saml kit classes.
1 parent e9f0652
Changed files (4)
lib
spec
saml
kit
cli
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