Commit ca33b9b

mo <mo.khan@gmail.com>
2017-11-12 00:10:59
start to define API for logout.
1 parent 1bfd092
lib/saml/kit/identity_provider_metadata.rb
@@ -24,9 +24,10 @@ module Saml
 
       def single_sign_on_service_for(binding:)
         binding = Saml::Kit::Namespaces.binding_for(binding)
-        single_sign_on_services.find do |item|
+        result = single_sign_on_services.find do |item|
           item[:binding] == binding
         end
+        return result[:location] if result
       end
 
       def attributes
spec/saml/identity_provider_metadata_spec.rb
@@ -222,19 +222,19 @@ RSpec.describe Saml::Kit::IdentityProviderMetadata do
   end
 
   describe "#single_sign_on_service_for" do
-    let(:url) { FFaker::Internet.http_url }
+    let(:post_url) { FFaker::Internet.http_url }
+    let(:redirect_url) { FFaker::Internet.http_url }
 
     subject do
       builder = Saml::Kit::IdentityProviderMetadata::Builder.new
-      builder.add_single_sign_on_service(FFaker::Internet.http_url, binding: :http_redirect)
-      builder.add_single_sign_on_service(url, binding: :post)
+      builder.add_single_sign_on_service(redirect_url, binding: :http_redirect)
+      builder.add_single_sign_on_service(post_url, binding: :post)
       builder.build
     end
 
     it 'returns the binding that matches the requested' do
-      result = subject.single_sign_on_service_for(binding: :post)
-      expect(result[:binding]).to eql(Saml::Kit::Namespaces::POST)
-      expect(result[:location]).to eql(url)
+      expect(subject.single_sign_on_service_for(binding: :post)).to eql(post_url)
+      expect(subject.single_sign_on_service_for(binding: :http_redirect)).to eql(redirect_url)
     end
 
     it 'returns nil if the binding cannot be found' do