@@ -897,6 +897,7 @@ def generate_audience_error(expected, actual)
897897 settings . idp_cert_fingerprint = signature_fingerprint_1
898898 response . settings = settings
899899 assert !response . send ( :validate_signature )
900+ assert_includes response . errors , "Fingerprint mismatch"
900901 assert_includes response . errors , "Invalid Signature on SAML Response"
901902 end
902903
@@ -917,15 +918,29 @@ def generate_audience_error(expected, actual)
917918 assert_includes response_valid_signed . errors , "IdP x509 certificate expired"
918919 end
919920
920- it "return false when no X509Certificate and the cert provided at settings mismatches" do
921+ it "return false when X509Certificate and the cert provided at settings mismatches" do
921922 settings . idp_cert_fingerprint = nil
922923 settings . idp_cert = signature_1
923924 response_valid_signed_without_x509certificate . settings = settings
924925 assert !response_valid_signed_without_x509certificate . send ( :validate_signature )
926+ assert_includes response_valid_signed_without_x509certificate . errors , "Key validation error"
925927 assert_includes response_valid_signed_without_x509certificate . errors , "Invalid Signature on SAML Response"
926928 end
927929
928- it "return true when no X509Certificate and the cert provided at settings matches" do
930+ it "return false when X509Certificate has invalid content" do
931+ settings . idp_cert_fingerprint = nil
932+ settings . idp_cert = ruby_saml_cert_text
933+ content = read_response ( 'response_with_signed_message_and_assertion.xml' )
934+ content = content . sub ( /<ds:X509Certificate>.*<\/ ds:X509Certificate>/ ,
935+ "<ds:X509Certificate>an-invalid-certificate</ds:X509Certificate>" )
936+ response_invalid_x509certificate = OneLogin ::RubySaml ::Response . new ( content )
937+ response_invalid_x509certificate . settings = settings
938+ assert !response_invalid_x509certificate . send ( :validate_signature )
939+ assert_includes response_invalid_x509certificate . errors , "Document Certificate Error"
940+ assert_includes response_invalid_x509certificate . errors , "Invalid Signature on SAML Response"
941+ end
942+
943+ it "return true when X509Certificate and the cert provided at settings matches" do
929944 settings . idp_cert_fingerprint = nil
930945 settings . idp_cert = ruby_saml_cert_text
931946 response_valid_signed_without_x509certificate . settings = settings
@@ -953,7 +968,7 @@ def generate_audience_error(expected, actual)
953968 :encryption => [ ]
954969 }
955970 response_valid_signed . settings = settings
956- assert response_valid_signed . send ( :validate_signature )
971+ res = response_valid_signed . send ( :validate_signature )
957972 assert_empty response_valid_signed . errors
958973 end
959974
@@ -965,6 +980,7 @@ def generate_audience_error(expected, actual)
965980 }
966981 response_valid_signed . settings = settings
967982 assert !response_valid_signed . send ( :validate_signature )
983+ assert_includes response_valid_signed . errors , "Certificate of the Signature element does not match provided certificate"
968984 assert_includes response_valid_signed . errors , "Invalid Signature on SAML Response"
969985 end
970986 end
0 commit comments