Commit 6984d8b

mo <mo.khan@gmail.com>
2018-02-18 18:46:05
print report on metadata.
1 parent 0431462
Changed files (2)
lib
lib/saml/kit/cli/metadata.rb
@@ -18,7 +18,7 @@ module Saml
         def show(entity_id)
           metadata = registry.metadata_for(entity_id)
           if metadata
-            say metadata.to_xml(pretty: true), :green
+            Report.new(metadata).print(self)
           else
             say "`#{entity_id}` is not registered", :red
           end
lib/saml/kit/cli/report.rb
@@ -16,7 +16,7 @@ module Saml
             shell.say(document.signature.certificate.x509.to_text)
           end
           shell.say ""
-          shell.say document.to_xml(pretty: true), :green
+          #shell.say document.to_xml(pretty: true), :green
           shell.say ""
           document.errors.full_messages.each do |error|
             shell.say_status :error, error, :red
@@ -34,16 +34,38 @@ module Saml
         end
 
         def build_table_for(document)
-          table = [
-            ['ID', document.id],
-            ['Issuer', document.issuer],
-            ['Version', document.version],
-            ['Issue Instant', document.issue_instant.iso8601],
-            ['Type', document.send(:name)],
-            ['Valid', document.valid?],
-            ['Signed?', !!document.signed?],
-            ['Trusted?', !!document.trusted?],
-          ]
+          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])
+            [
+              '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])