@@ -8,6 +8,7 @@ class RubySamlTest < Minitest::Test
88
99 let ( :settings ) { OneLogin ::RubySaml ::Settings . new }
1010 let ( :response ) { OneLogin ::RubySaml ::Response . new ( response_document_without_recipient ) }
11+ let ( :response_without_recipient ) { OneLogin ::RubySaml ::Response . new ( signed_response_document_without_recipient ) }
1112 let ( :response_without_attributes ) { OneLogin ::RubySaml ::Response . new ( response_document_without_attributes ) }
1213 let ( :response_with_multiple_attribute_statements ) { OneLogin ::RubySaml ::Response . new ( fixture ( :response_with_multiple_attribute_statements ) ) }
1314 let ( :response_without_reference_uri ) { OneLogin ::RubySaml ::Response . new ( response_document_without_reference_uri ) }
@@ -139,7 +140,8 @@ def generate_audience_error(expected, actual)
139140 it "raise when evil attack vector is present, soft = false " do
140141 @response . soft = false
141142
142- assert_raises ( OneLogin ::RubySaml ::ValidationError ) do
143+ error_msg = "XML load failed: Dangerous XML detected. No Doctype nodes allowed"
144+ assert_raises ( OneLogin ::RubySaml ::ValidationError , error_msg ) do
143145 @response . send ( :validate_structure )
144146 end
145147 end
@@ -246,13 +248,14 @@ def generate_audience_error(expected, actual)
246248
247249 it "raise when encountering a condition that prevents the document from being valid" do
248250 settings . idp_cert_fingerprint = ruby_saml_cert_fingerprint
249- response . settings = settings
250- response . soft = false
251+ response_without_recipient . settings = settings
252+ response_without_recipient . soft = false
251253 error_msg = "Current time is on or after NotOnOrAfter condition"
252254 assert_raises ( OneLogin ::RubySaml ::ValidationError , error_msg ) do
253- response . is_valid?
255+ response_without_recipient . is_valid?
254256 end
255- assert_includes response . errors [ 0 ] , error_msg
257+ assert !response_without_recipient . errors . empty?
258+ assert_includes response_without_recipient . errors [ 0 ] , error_msg
256259 end
257260
258261 it "raise when encountering a SAML Response with bad formatted" do
@@ -266,7 +269,7 @@ def generate_audience_error(expected, actual)
266269
267270 it "raise when the inResponseTo value does not match the Request ID" do
268271 settings . soft = false
269- settings . idp_cert_fingerprint = signature_fingerprint_1
272+ settings . idp_cert_fingerprint = ruby_saml_cert_fingerprint
270273 opts = { }
271274 opts [ :settings ] = settings
272275 opts [ :matches_request_id ] = "invalid_request_id"
@@ -279,14 +282,15 @@ def generate_audience_error(expected, actual)
279282 end
280283
281284 it "raise when there is no valid audience" do
282- settings . idp_cert_fingerprint = signature_fingerprint_1
285+ settings . idp_cert_fingerprint = ruby_saml_cert_fingerprint
283286 settings . sp_entity_id = 'invalid'
284287 response_valid_signed . settings = settings
285288 response_valid_signed . soft = false
286289 error_msg = generate_audience_error ( response_valid_signed . settings . sp_entity_id , [ 'https://someone.example.com/audience' ] )
287290 assert_raises ( OneLogin ::RubySaml ::ValidationError , error_msg ) do
288291 response_valid_signed . is_valid?
289292 end
293+
290294 assert_includes response_valid_signed . errors , error_msg
291295 end
292296
@@ -407,10 +411,11 @@ def generate_audience_error(expected, actual)
407411
408412 it "return false when encountering a condition that prevents the document from being valid" do
409413 settings . idp_cert_fingerprint = ruby_saml_cert_fingerprint
410- response . settings = settings
414+ response_without_recipient . settings = settings
411415 error_msg = "Current time is on or after NotOnOrAfter condition"
412- assert !response . is_valid?
413- assert_includes response . errors [ 0 ] , error_msg
416+ assert !response_without_recipient . is_valid?
417+ assert !response_without_recipient . errors . empty?
418+ assert_includes response_without_recipient . errors [ 0 ] , error_msg
414419 end
415420
416421 it "return false when encountering a SAML Response with bad formatted" do
@@ -424,7 +429,7 @@ def generate_audience_error(expected, actual)
424429
425430 it "return false when the inResponseTo value does not match the Request ID" do
426431 settings . soft = true
427- settings . idp_cert_fingerprint = signature_fingerprint_1
432+ settings . idp_cert_fingerprint = ruby_saml_cert_fingerprint
428433 opts = { }
429434 opts [ :settings ] = settings
430435 opts [ :matches_request_id ] = "invalid_request_id"
@@ -434,7 +439,7 @@ def generate_audience_error(expected, actual)
434439 end
435440
436441 it "return false when there is no valid audience" do
437- settings . idp_cert_fingerprint = signature_fingerprint_1
442+ settings . idp_cert_fingerprint = ruby_saml_cert_fingerprint
438443 settings . sp_entity_id = 'invalid'
439444 response_valid_signed . settings = settings
440445 response_valid_signed . is_valid?
0 commit comments