Commit 3d490e9

mo <mo.khan@gmail.com>
2017-12-17 18:39:17
pluck values from custom params object.
1 parent cf1e16f
Changed files (2)
lib
saml
kit
bindings
spec
lib/saml/kit/bindings/binding.rb
@@ -48,7 +48,10 @@ module Saml
         protected
 
         def saml_param_from(params)
-          parameters = params.with_indifferent_access
+          parameters = {
+            SAMLRequest: params[:SAMLRequest] || params['SAMLRequest'],
+            SAMLResponse: params[:SAMLResponse] || params['SAMLResponse'],
+          }
           if parameters[:SAMLRequest].present?
             parameters[:SAMLRequest]
           elsif parameters[:SAMLResponse].present?
spec/saml/bindings/http_redirect_spec.rb
@@ -43,6 +43,21 @@ RSpec.describe Saml::Kit::Bindings::HttpRedirect do
       expect(result).to be_instance_of(Saml::Kit::AuthenticationRequest)
     end
 
+    it 'deserializes the SAMLRequest to an AuthnRequest when given a custom params object' do
+      class Parameters
+        def initialize(params)
+          @params = params
+        end
+
+        def [](key)
+          @params[key]
+        end
+      end
+      url, _ = subject.serialize(Saml::Kit::AuthenticationRequest.builder_class.new)
+      result = subject.deserialize(Parameters.new(query_params_from(url)))
+      expect(result).to be_instance_of(Saml::Kit::AuthenticationRequest)
+    end
+
     it 'deserializes the SAMLRequest to a LogoutRequest' do
       user = double(:user, name_id_for: SecureRandom.uuid)
       url, _ = subject.serialize(Saml::Kit::LogoutRequest.builder_class.new(user))