main
 1# frozen_string_literal: true
 2
 3module Saml
 4  module Kit
 5    # This class represents a
 6    # SPSSODescriptor element in a
 7    # SAML metadata document.
 8    # {include:file:spec/examples/service_provider_metadata_spec.rb}
 9    class ServiceProviderMetadata < Metadata
10      def initialize(xml)
11        super('SPSSODescriptor', xml)
12      end
13
14      # Returns each of the AssertionConsumerService bindings.
15      def assertion_consumer_services
16        services('AssertionConsumerService')
17      end
18
19      # Returns the AssertionConsumerService for the specified binding.
20      #
21      # @param binding [Symbol] can be either `:http_post` or `:http_redirect`
22      def assertion_consumer_service_for(binding:)
23        service_for(binding: binding, type: 'AssertionConsumerService')
24      end
25
26      # Returns true when the metadata demands that Assertions must be signed.
27      def want_assertions_signed
28        element = at_xpath("/md:EntityDescriptor/md:#{name}")
29        attribute = element.attribute('WantAssertionsSigned')
30        return true if attribute.nil?
31
32        attribute.text.casecmp('true').zero?
33      end
34
35      # @!visibility private
36      def self.builder_class
37        Saml::Kit::Builders::ServiceProviderMetadata
38      end
39    end
40  end
41end