Commit 74df8b2
Changed files (3)
lib
saml
spec
lib/saml/kit/identity_provider_metadata.rb
@@ -22,7 +22,7 @@ module Saml
end
end
- def single_sign_on_service_for(binding:)
+ def single_sign_on_service_for(binding)
binding = Saml::Kit::Namespaces.binding_for(binding)
result = single_sign_on_services.find do |item|
item[:binding] == binding
lib/saml/kit/metadata.rb
@@ -62,6 +62,14 @@ module Saml
end
end
+ def single_logout_service_for(binding)
+ binding = Saml::Kit::Namespaces.binding_for(binding)
+ result = single_logout_services.find do |item|
+ item[:binding] == binding
+ end
+ return result[:location] if result
+ end
+
def matches?(fingerprint, use: :signing)
if :signing == use.to_sym
hash_value = fingerprint.algorithm(hash_algorithm)
spec/saml/identity_provider_metadata_spec.rb
@@ -233,8 +233,8 @@ RSpec.describe Saml::Kit::IdentityProviderMetadata do
end
it 'returns the binding that matches the requested' do
- 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)
+ expect(subject.single_sign_on_service_for(:post)).to eql(post_url)
+ expect(subject.single_sign_on_service_for(:http_redirect)).to eql(redirect_url)
end
it 'returns nil if the binding cannot be found' do
@@ -282,4 +282,25 @@ RSpec.describe Saml::Kit::IdentityProviderMetadata do
expect(subject.build_request(Saml::Kit::AuthenticationRequest)).to_not be_signed
end
end
+
+ describe "#single_logout_service_for" do
+ let(:builder) { described_class::Builder.new }
+ let(:redirect_url) { FFaker::Internet.http_url }
+ let(:post_url) { FFaker::Internet.http_url }
+ let(:subject) { builder.build }
+
+ before :each do
+ builder.add_single_logout_service(redirect_url, binding: :http_redirect)
+ builder.add_single_logout_service(post_url, binding: :post)
+ end
+
+ it 'returns the location for the matching binding' do
+ expect(subject.single_logout_service_for(:post)).to eql(post_url)
+ expect(subject.single_logout_service_for(:http_redirect)).to eql(redirect_url)
+ end
+
+ it 'returns nil if the binding is not available' do
+ expect(subject.single_logout_service_for(:soap)).to be_nil
+ end
+ end
end