@@ -21,35 +21,34 @@ def initialize; end
2121 it "extract settings details from xml" do
2222 idp_metadata_parser = OneLogin ::RubySaml ::IdpMetadataParser . new
2323
24- settings = idp_metadata_parser . parse ( idp_metadata )
24+ settings = idp_metadata_parser . parse ( idp_metadata_descriptor )
2525
2626 assert_equal "https://hello.example.com/access/saml/idp.xml" , settings . idp_entity_id
2727 assert_equal "https://hello.example.com/access/saml/login" , settings . idp_sso_target_url
2828 assert_equal "F1:3C:6B:80:90:5A:03:0E:6C:91:3E:5D:15:FA:DD:B0:16:45:48:72" , settings . idp_cert_fingerprint
2929 assert_equal "https://hello.example.com/access/saml/logout" , settings . idp_slo_target_url
3030 assert_equal "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified" , settings . name_identifier_format
3131 assert_equal [ "AuthToken" , "SSOStartPage" ] , settings . idp_attribute_names
32- assert_equal "F1:3C:6B:80:90:5A:03:0E:6C:91:3E:5D:15:FA:DD:B0:16:45:48:72" , settings . idp_cert_fingerprint
3332 end
3433
3534 it "extract certificate from md:KeyDescriptor[@use='signing']" do
3635 idp_metadata_parser = OneLogin ::RubySaml ::IdpMetadataParser . new
37- idp_metadata = read_response ( "idp_descriptor.xml" )
36+ idp_metadata = idp_metadata_descriptor
3837 settings = idp_metadata_parser . parse ( idp_metadata )
3938 assert_equal "F1:3C:6B:80:90:5A:03:0E:6C:91:3E:5D:15:FA:DD:B0:16:45:48:72" , settings . idp_cert_fingerprint
4039 end
4140
4241 it "extract certificate from md:KeyDescriptor[@use='encryption']" do
4342 idp_metadata_parser = OneLogin ::RubySaml ::IdpMetadataParser . new
44- idp_metadata = read_response ( "idp_descriptor.xml" )
43+ idp_metadata = idp_metadata_descriptor
4544 idp_metadata = idp_metadata . sub ( /<md:KeyDescriptor use="signing">(.*?)<\/ md:KeyDescriptor>/m , "" )
4645 settings = idp_metadata_parser . parse ( idp_metadata )
4746 assert_equal "F1:3C:6B:80:90:5A:03:0E:6C:91:3E:5D:15:FA:DD:B0:16:45:48:72" , settings . idp_cert_fingerprint
4847 end
4948
5049 it "extract certificate from md:KeyDescriptor" do
5150 idp_metadata_parser = OneLogin ::RubySaml ::IdpMetadataParser . new
52- idp_metadata = read_response ( "idp_descriptor.xml" )
51+ idp_metadata = idp_metadata_descriptor
5352 idp_metadata = idp_metadata . sub ( /<md:KeyDescriptor use="signing">(.*?)<\/ md:KeyDescriptor>/m , "" )
5453 idp_metadata = idp_metadata . sub ( '<md:KeyDescriptor use="encryption">' , '<md:KeyDescriptor>' )
5554 settings = idp_metadata_parser . parse ( idp_metadata )
@@ -58,7 +57,7 @@ def initialize; end
5857
5958 it "uses settings options as hash for overrides" do
6059 idp_metadata_parser = OneLogin ::RubySaml ::IdpMetadataParser . new
61- idp_metadata = read_response ( "idp_descriptor.xml" )
60+ idp_metadata = idp_metadata_descriptor
6261 settings = idp_metadata_parser . parse ( idp_metadata , {
6362 :settings => {
6463 :security => {
@@ -74,10 +73,32 @@ def initialize; end
7473
7574 end
7675
76+ describe "parsing an IdP descriptor file with multiple signing certs" do
77+ it "extract settings details from xml" do
78+ idp_metadata_parser = OneLogin ::RubySaml ::IdpMetadataParser . new
79+
80+ settings = idp_metadata_parser . parse ( idp_metadata_descriptor2 )
81+
82+ assert_equal "https://hello.example.com/access/saml/idp.xml" , settings . idp_entity_id
83+ assert_equal "https://hello.example.com/access/saml/login" , settings . idp_sso_target_url
84+ assert_equal "https://hello.example.com/access/saml/logout" , settings . idp_slo_target_url
85+ assert_equal "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified" , settings . name_identifier_format
86+ assert_equal [ "AuthToken" , "SSOStartPage" ] , settings . idp_attribute_names
87+
88+ assert_nil settings . idp_cert_fingerprint
89+ assert_nil settings . idp_cert
90+ assert_equal 2 , settings . idp_cert_multi . size
91+ assert settings . idp_cert_multi . key? ( "signing" )
92+ assert_equal 2 , settings . idp_cert_multi [ "signing" ] . size
93+ assert settings . idp_cert_multi . key? ( "encryption" )
94+ assert_equal 1 , settings . idp_cert_multi [ "encryption" ] . size
95+ end
96+ end
97+
7798 describe "download and parse IdP descriptor file" do
7899 before do
79100 mock_response = MockSuccessResponse . new
80- mock_response . body = idp_metadata
101+ mock_response . body = idp_metadata_descriptor
81102 @url = "https://example.com"
82103 uri = URI ( @url )
83104
@@ -140,7 +161,7 @@ def initialize; end
140161 describe "parsing metadata with many entity descriptors" do
141162 before do
142163 @idp_metadata_parser = OneLogin ::RubySaml ::IdpMetadataParser . new
143- @idp_metadata = read_response ( "idp_multiple_descriptors.xml" )
164+ @idp_metadata = idp_metadata_multiple_descriptors
144165 @settings = @idp_metadata_parser . parse ( @idp_metadata )
145166 end
146167
0 commit comments