main
 1RSpec.describe "Service Provider Metadata" do
 2  it 'consumes service provider_metadata' do
 3    raw_xml = <<-XML
 4<?xml version="1.0" encoding="UTF-8"?>
 5<EntityDescriptor entityID="myEntityId" xmlns="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
 6  <SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
 7    <NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:persistent</NameIDFormat>
 8  </SPSSODescriptor>
 9</EntityDescriptor>
10    XML
11
12    metadata = Saml::Kit::ServiceProviderMetadata.new(raw_xml)
13    expect(metadata.entity_id).to eql('myEntityId')
14    expect(metadata.name_id_formats).to match_array([Saml::Kit::Namespaces::PERSISTENT])
15  end
16
17  it 'produces service provider metadata' do
18    metadata = Saml::Kit::Metadata.build do |builder|
19      builder.contact_email = 'hi@example.com'
20      builder.organization_name = "Acme, Inc"
21      builder.organization_url = 'https://www.example.com'
22      builder.build_service_provider do |x|
23        x.add_assertion_consumer_service('https://www.example.com/consume', binding: :http_post)
24        x.add_single_logout_service('https://www.example.com/logout', binding: :http_post)
25      end
26    end
27    xml = metadata.to_xml(pretty: true)
28    expect(xml).to be_present
29    expect(xml).to_not have_xpath("//md:EntityDescriptor//md:IDPSSODescriptor")
30    expect(xml).to have_xpath("//md:EntityDescriptor//md:SPSSODescriptor")
31  end
32end