Commit 308b2e1
Changed files (5)
lib
lib/saml/kit/authentication_request.rb
@@ -3,7 +3,6 @@ module Saml
class AuthenticationRequest < Document
include Requestable
validates_presence_of :acs_url, if: :login?
- validate :must_be_request
validate :must_have_valid_signature
validate :must_be_registered
validate :must_match_xsd
@@ -56,12 +55,6 @@ module Saml
end
end
- def must_be_request
- return if to_h.nil?
-
- errors[:base] << error_message(:invalid) unless login?
- end
-
def must_match_xsd
matches_xsd?(PROTOCOL_XSD)
end
lib/saml/kit/logout_request.rb
@@ -3,7 +3,6 @@ module Saml
class LogoutRequest < Document
include Requestable
validates_presence_of :single_logout_service, if: :logout?
- validate :must_be_request
validate :must_have_valid_signature
validate :must_be_registered
validate :must_match_xsd
@@ -42,12 +41,6 @@ module Saml
end
end
- def must_be_request
- return if to_h.nil?
-
- errors[:base] << error_message(:invalid) unless logout?
- end
-
def must_be_registered
return unless logout?
if provider.nil?
lib/saml/kit/requestable.rb
@@ -1,9 +1,25 @@
module Saml
module Kit
module Requestable
+ extend ActiveSupport::Concern
+ included do
+ validate :must_be_request
+ end
+
def query_string_parameter
'SAMLRequest'
end
+
+ def must_be_request
+ return if to_h.nil?
+
+ errors[:base] << error_message(:invalid) unless request?
+ end
+
+ def request?
+ return false if to_xml.blank?
+ to_h[name].present?
+ end
end
end
end
spec/saml/authentication_request_spec.rb
@@ -79,7 +79,7 @@ RSpec.describe Saml::Kit::AuthenticationRequest do
xml = Saml::Kit::IdentityProviderMetadata::Builder.new.to_xml
subject = described_class.new(xml)
expect(subject).to be_invalid
- expect(subject.errors[:base]).to be_present
+ expect(subject.errors[:base]).to include(subject.error_message(:invalid))
end
it 'is invalid when the fingerprint of the certificate does not match the registered fingerprint' do
spec/saml/logout_request_spec.rb
@@ -63,7 +63,7 @@ RSpec.describe Saml::Kit::LogoutRequest do
xml = Saml::Kit::IdentityProviderMetadata::Builder.new.to_xml
subject = described_class.new(xml)
expect(subject).to be_invalid
- expect(subject.errors[:base]).to be_present
+ expect(subject.errors[:base]).to include(subject.error_message(:invalid))
end
it 'is invalid when the fingerprint of the certificate does not match the registered fingerprint' do