Commit ca33b9b
Changed files (2)
lib
saml
spec
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