@@ -6,7 +6,7 @@ class MetadataTest < Minitest::Test
66
77 describe 'Metadata' do
88 let ( :settings ) { OneLogin ::RubySaml ::Settings . new }
9- let ( :xml_text ) { OneLogin ::RubySaml ::Metadata . new . generate ( settings ) }
9+ let ( :xml_text ) { OneLogin ::RubySaml ::Metadata . new . generate ( settings , false ) }
1010 let ( :xml_doc ) { REXML ::Document . new ( xml_text ) }
1111 let ( :spsso_descriptor ) { REXML ::XPath . first ( xml_doc , "//md:SPSSODescriptor" ) }
1212 let ( :acs ) { REXML ::XPath . first ( xml_doc , "//md:AssertionConsumerService" ) }
@@ -17,9 +17,15 @@ class MetadataTest < Minitest::Test
1717 settings . assertion_consumer_service_url = "https://foo.example/saml/consume"
1818 end
1919
20+ it "generates Pretty Print Service Provider Metadata" do
21+ start = "<?xml version='1.0' encoding='UTF-8'?>\n <md:EntityDescriptor"
22+ xml_text_2 = OneLogin ::RubySaml ::Metadata . new . generate ( settings , true )
23+ assert xml_text_2 [ 0 ..start . length -1 ] == start
24+ end
25+
2026 it "generates Service Provider Metadata" do
2127 # assert correct xml declaration
22- start = "<?xml version='1.0' encoding='UTF-8'?>\n <md:EntityDescriptor"
28+ start = "<?xml version='1.0' encoding='UTF-8'?><md:EntityDescriptor"
2329 assert xml_text [ 0 ..start . length -1 ] == start
2430
2531 assert_equal "https://example.com" , REXML ::XPath . first ( xml_doc , "//md:EntityDescriptor" ) . attribute ( "entityID" ) . value
@@ -89,19 +95,25 @@ class MetadataTest < Minitest::Test
8995 it "creates a signed metadata" do
9096 assert_match %r[<ds:SignatureValue>\s *([a-zA-Z0-9/+=]+)\s *</ds:SignatureValue>]m , xml_text
9197 assert_match %r[<ds:SignatureMethod Algorithm='http://www.w3.org/2000/09/xmldsig#rsa-sha1'/>] , xml_text
92- assert_match %r[<ds:DigestMethod Algorithm='http://www.w3.org/2000/09/xmldsig#rsa-sha1'/>] , xml_text
98+ assert_match %r[<ds:DigestMethod Algorithm='http://www.w3.org/2000/09/xmldsig#sha1'/>] , xml_text
99+ signed_metadata = XMLSecurity ::SignedDocument . new ( xml_text )
100+ assert signed_metadata . validate_document ( ruby_saml_cert_fingerprint , false )
93101 end
94102
95103 describe "when digest and signature methods are specified" do
96104 before do
97- settings . security [ :signature_method ] = XMLSecurity ::Document ::SHA256
105+ settings . security [ :signature_method ] = XMLSecurity ::Document ::RSA_SHA256
98106 settings . security [ :digest_method ] = XMLSecurity ::Document ::SHA512
99107 end
100108
101109 it "creates a signed metadata with specified digest and signature methods" do
102110 assert_match %r[<ds:SignatureValue>\s *([a-zA-Z0-9/+=]+)\s *</ds:SignatureValue>]m , xml_text
103111 assert_match %r[<ds:SignatureMethod Algorithm='http://www.w3.org/2001/04/xmldsig-more#rsa-sha256'/>] , xml_text
104- assert_match %r[<ds:DigestMethod Algorithm='http://www.w3.org/2001/04/xmldsig-more#rsa-sha512'/>] , xml_text
112+ assert_match %r[<ds:DigestMethod Algorithm='http://www.w3.org/2001/04/xmldsig-more#sha512'/>] , xml_text
113+
114+ signed_metadata_2 = XMLSecurity ::SignedDocument . new ( xml_text )
115+
116+ assert signed_metadata_2 . validate_document ( ruby_saml_cert_fingerprint , false )
105117 end
106118 end
107119 end
0 commit comments