Commit 9211bd4

mo <mo@mokhan.ca>
2017-12-01 23:26:42
acs_url -> assertion_consumer_service_url.
1 parent 0bdf3a5
lib/saml/kit/builders/authentication_request.rb
@@ -2,7 +2,7 @@ module Saml
   module Kit
     module Builders
       class AuthenticationRequest
-        attr_accessor :id, :now, :issuer, :acs_url, :name_id_format, :sign, :destination
+        attr_accessor :id, :now, :issuer, :assertion_consumer_service_url, :name_id_format, :sign, :destination
         attr_accessor :version
 
         def initialize(configuration: Saml::Kit.configuration, sign: true)
@@ -39,7 +39,7 @@ module Saml
             IssueInstant: now.utc.iso8601,
             Destination: destination,
           }
-          options[:AssertionConsumerServiceURL] = acs_url if acs_url.present?
+          options[:AssertionConsumerServiceURL] = assertion_consumer_service_url if assertion_consumer_service_url.present?
           options
         end
       end
lib/saml/kit/builders/response.rb
@@ -123,7 +123,7 @@ module Saml
 
         def destination_for(request)
           if request.signed? && request.trusted?
-            request.acs_url || request.provider.assertion_consumer_service_for(binding: :http_post).try(:location)
+            request.assertion_consumer_service_url || request.provider.assertion_consumer_service_for(binding: :http_post).try(:location)
           else
             request.provider.assertion_consumer_service_for(binding: :http_post).try(:location)
           end
@@ -158,7 +158,7 @@ module Saml
           {
             InResponseTo: request.id,
             NotOnOrAfter: 3.hours.since(now).utc.iso8601,
-            Recipient: request.acs_url,
+            Recipient: request.assertion_consumer_service_url,
           }
         end
 
lib/saml/kit/authentication_request.rb
@@ -7,7 +7,7 @@ module Saml
         super(xml, name: "AuthnRequest")
       end
 
-      def acs_url
+      def assertion_consumer_service_url
         to_h[name]['AssertionConsumerServiceURL']
       end
 
spec/saml/bindings/http_post_spec.rb
@@ -76,7 +76,7 @@ RSpec.describe Saml::Kit::Bindings::HttpPost do
 
     it 'deserializes to a Response' do
       user = double(:user, name_id_for: SecureRandom.uuid, assertion_attributes_for: [])
-      request = double(:request, id: SecureRandom.uuid, provider: nil, acs_url: FFaker::Internet.http_url, name_id_format: Saml::Kit::Namespaces::PERSISTENT, issuer: FFaker::Internet.http_url, signed?: true, trusted?: true)
+      request = double(:request, id: SecureRandom.uuid, provider: nil, assertion_consumer_service_url: FFaker::Internet.http_url, name_id_format: Saml::Kit::Namespaces::PERSISTENT, issuer: FFaker::Internet.http_url, signed?: true, trusted?: true)
       builder = Saml::Kit::Response.builder_class.new(user, request)
       _, params = subject.serialize(builder)
       result = subject.deserialize(params)
spec/saml/bindings/http_redirect_spec.rb
@@ -47,7 +47,7 @@ RSpec.describe Saml::Kit::Bindings::HttpRedirect do
 
     it 'deserializes the SAMLResponse to a Response' do
       user = double(:user, name_id_for: SecureRandom.uuid, assertion_attributes_for: [])
-      request = double(:request, id: SecureRandom.uuid, provider: nil, acs_url: FFaker::Internet.http_url, name_id_format: Saml::Kit::Namespaces::PERSISTENT, issuer: issuer, signed?: true, trusted?: true)
+      request = double(:request, id: SecureRandom.uuid, provider: nil, assertion_consumer_service_url: FFaker::Internet.http_url, name_id_format: Saml::Kit::Namespaces::PERSISTENT, issuer: issuer, signed?: true, trusted?: true)
       url, _ = subject.serialize(Saml::Kit::Response.builder_class.new(user, request))
       result = subject.deserialize(query_params_from(url))
       expect(result).to be_instance_of(Saml::Kit::Response)
@@ -55,7 +55,7 @@ RSpec.describe Saml::Kit::Bindings::HttpRedirect do
 
     it 'deserializes the SAMLResponse to a LogoutResponse' do
       user = double(:user, name_id_for: SecureRandom.uuid, assertion_attributes_for: [])
-      request = double(:request, id: SecureRandom.uuid, provider: provider, acs_url: FFaker::Internet.http_url, name_id_format: Saml::Kit::Namespaces::PERSISTENT, issuer: FFaker::Internet.http_url)
+      request = double(:request, id: SecureRandom.uuid, provider: provider, assertion_consumer_service_url: FFaker::Internet.http_url, name_id_format: Saml::Kit::Namespaces::PERSISTENT, issuer: FFaker::Internet.http_url)
       url, _ = subject.serialize(Saml::Kit::LogoutResponse.builder_class.new(user, request))
       result = subject.deserialize(query_params_from(url))
       expect(result).to be_instance_of(Saml::Kit::LogoutResponse)
spec/saml/builders/authentication_request_spec.rb
@@ -10,17 +10,17 @@ RSpec.describe Saml::Kit::Builders::AuthenticationRequest do
 
   describe "#to_xml" do
     let(:issuer) { FFaker::Movie.title }
-    let(:acs_url) { "https://airport.dev/session/acs" }
+    let(:assertion_consumer_service_url) { "https://airport.dev/session/acs" }
 
     it 'returns a valid authentication request' do
       travel_to 1.second.from_now
-      subject.acs_url = acs_url
+      subject.assertion_consumer_service_url = assertion_consumer_service_url
       result = Hash.from_xml(subject.to_xml)
 
       expect(result['AuthnRequest']['ID']).to be_present
       expect(result['AuthnRequest']['Version']).to eql('2.0')
       expect(result['AuthnRequest']['IssueInstant']).to eql(Time.now.utc.iso8601)
-      expect(result['AuthnRequest']['AssertionConsumerServiceURL']).to eql(acs_url)
+      expect(result['AuthnRequest']['AssertionConsumerServiceURL']).to eql(assertion_consumer_service_url)
       expect(result['AuthnRequest']['Issuer']).to eql(issuer)
       expect(result['AuthnRequest']['NameIDPolicy']['Format']).to eql(Saml::Kit::Namespaces::PERSISTENT)
     end
spec/saml/builders/response_spec.rb
@@ -3,9 +3,9 @@ require 'spec_helper'
 RSpec.describe Saml::Kit::Builders::Response do
   subject { described_class.new(user, request) }
   let(:email) { FFaker::Internet.email }
-  let(:acs_url) { FFaker::Internet.uri("https") }
+  let(:assertion_consumer_service_url) { FFaker::Internet.uri("https") }
   let(:user) { double(:user, name_id_for: SecureRandom.uuid, assertion_attributes_for: { email: email, created_at: Time.now.utc.iso8601 }) }
-  let(:request) { double(:request, id: "_#{SecureRandom.uuid}", acs_url: acs_url, issuer: issuer, name_id_format: Saml::Kit::Namespaces::EMAIL_ADDRESS, provider: provider, trusted?: true, signed?: true) }
+  let(:request) { double(:request, id: "_#{SecureRandom.uuid}", assertion_consumer_service_url: assertion_consumer_service_url, issuer: issuer, name_id_format: Saml::Kit::Namespaces::EMAIL_ADDRESS, provider: provider, trusted?: true, signed?: true) }
   let(:provider) { double(want_assertions_signed: false, encryption_certificates: [Saml::Kit::Certificate.new(encryption_pem, use: :encryption)]) }
   let(:encryption_pem) { Saml::Kit.configuration.stripped_encryption_certificate }
   let(:issuer) { FFaker::Internet.uri("https") }
@@ -39,7 +39,7 @@ RSpec.describe Saml::Kit::Builders::Response do
       expect(hash['Response']['ID']).to be_present
       expect(hash['Response']['Version']).to eql('2.0')
       expect(hash['Response']['IssueInstant']).to eql(Time.now.utc.iso8601)
-      expect(hash['Response']['Destination']).to eql(acs_url)
+      expect(hash['Response']['Destination']).to eql(assertion_consumer_service_url)
       expect(hash['Response']['InResponseTo']).to eql(request.id)
       expect(hash['Response']['Issuer']).to eql(issuer)
       expect(hash['Response']['Status']['StatusCode']['Value']).to eql("urn:oasis:names:tc:SAML:2.0:status:Success")
@@ -52,7 +52,7 @@ RSpec.describe Saml::Kit::Builders::Response do
       expect(hash['Response']['Assertion']['Subject']['NameID']).to eql(user.name_id_for)
       expect(hash['Response']['Assertion']['Subject']['SubjectConfirmation']['Method']).to eql("urn:oasis:names:tc:SAML:2.0:cm:bearer")
       expect(hash['Response']['Assertion']['Subject']['SubjectConfirmation']['SubjectConfirmationData']['NotOnOrAfter']).to eql(3.hours.from_now.utc.iso8601)
-      expect(hash['Response']['Assertion']['Subject']['SubjectConfirmation']['SubjectConfirmationData']['Recipient']).to eql(acs_url)
+      expect(hash['Response']['Assertion']['Subject']['SubjectConfirmation']['SubjectConfirmationData']['Recipient']).to eql(assertion_consumer_service_url)
       expect(hash['Response']['Assertion']['Subject']['SubjectConfirmation']['SubjectConfirmationData']['InResponseTo']).to eql(request.id)
 
       expect(hash['Response']['Assertion']['Conditions']['NotBefore']).to eql(0.seconds.ago.utc.iso8601)
@@ -106,21 +106,21 @@ RSpec.describe Saml::Kit::Builders::Response do
   end
 
   describe "#destination" do
-    let(:acs_url) { "https://#{FFaker::Internet.domain_name}/acs" }
+    let(:assertion_consumer_service_url) { "https://#{FFaker::Internet.domain_name}/acs" }
     let(:user) { double(:user, name_id_for: SecureRandom.uuid, assertion_attributes_for: []) }
     subject { described_class.new(user, request).build }
 
     describe "when the request is signed and trusted" do
-      let(:request) { instance_double(Saml::Kit::AuthenticationRequest, id: SecureRandom.uuid, acs_url: acs_url, issuer: FFaker::Movie.title, name_id_format: Saml::Kit::Namespaces::EMAIL_ADDRESS, provider: nil, signed?: true, trusted?: true) }
+      let(:request) { instance_double(Saml::Kit::AuthenticationRequest, id: SecureRandom.uuid, assertion_consumer_service_url: assertion_consumer_service_url, issuer: FFaker::Movie.title, name_id_format: Saml::Kit::Namespaces::EMAIL_ADDRESS, provider: nil, signed?: true, trusted?: true) }
 
       it 'returns the ACS embedded in the request' do
-        expect(subject.destination).to eql(acs_url)
+        expect(subject.destination).to eql(assertion_consumer_service_url)
       end
     end
 
     describe "when the request is not trusted" do
       let(:registered_acs_url) { FFaker::Internet.uri("https") }
-      let(:request) { instance_double(Saml::Kit::AuthenticationRequest, id: SecureRandom.uuid, acs_url: acs_url, issuer: FFaker::Movie.title, name_id_format: Saml::Kit::Namespaces::EMAIL_ADDRESS, provider: provider, signed?: true, trusted?: false) }
+      let(:request) { instance_double(Saml::Kit::AuthenticationRequest, id: SecureRandom.uuid, assertion_consumer_service_url: assertion_consumer_service_url, issuer: FFaker::Movie.title, name_id_format: Saml::Kit::Namespaces::EMAIL_ADDRESS, provider: provider, signed?: true, trusted?: false) }
       let(:provider) { instance_double(Saml::Kit::ServiceProviderMetadata, want_assertions_signed: false) }
 
       it 'returns the registered ACS embedded in the metadata' do
spec/saml/builders/service_provider_metadata_spec.rb
@@ -1,12 +1,12 @@
 require 'spec_helper'
 
 RSpec.describe Saml::Kit::Builders::ServiceProviderMetadata do
-  let(:acs_url) { FFaker::Internet.http_url }
+  let(:assertion_consumer_service_url) { FFaker::Internet.http_url }
   let(:entity_id) { FFaker::Internet.uri("https") }
 
   it 'builds the service provider metadata' do
     subject.entity_id = entity_id
-    subject.add_assertion_consumer_service(acs_url, binding: :http_post)
+    subject.add_assertion_consumer_service(assertion_consumer_service_url, binding: :http_post)
     subject.name_id_formats = [
       Saml::Kit::Namespaces::PERSISTENT,
       Saml::Kit::Namespaces::TRANSIENT,
@@ -26,7 +26,7 @@ RSpec.describe Saml::Kit::Builders::ServiceProviderMetadata do
       Saml::Kit::Namespaces::EMAIL_ADDRESS,
     ])
     expect(result['EntityDescriptor']['SPSSODescriptor']['AssertionConsumerService']['Binding']).to eql("urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST")
-    expect(result['EntityDescriptor']['SPSSODescriptor']['AssertionConsumerService']['Location']).to eql(acs_url)
+    expect(result['EntityDescriptor']['SPSSODescriptor']['AssertionConsumerService']['Location']).to eql(assertion_consumer_service_url)
     expect(result['EntityDescriptor']['SPSSODescriptor']['AssertionConsumerService']['isDefault']).to eql('true')
     expect(result['EntityDescriptor']['SPSSODescriptor']['AssertionConsumerService']['index']).to eql('0')
     expect(result['EntityDescriptor']['Signature']).to be_present
spec/saml/authentication_request_spec.rb
@@ -3,7 +3,7 @@ require 'spec_helper'
 RSpec.describe Saml::Kit::AuthenticationRequest do
   subject { described_class.new(raw_xml) }
   let(:id) { SecureRandom.uuid }
-  let(:acs_url) { "https://#{FFaker::Internet.domain_name}/acs" }
+  let(:assertion_consumer_service_url) { "https://#{FFaker::Internet.domain_name}/acs" }
   let(:issuer) { FFaker::Movie.title }
   let(:destination) { FFaker::Internet.http_url }
   let(:name_id_format) { Saml::Kit::Namespaces::EMAIL_ADDRESS }
@@ -12,7 +12,7 @@ RSpec.describe Saml::Kit::AuthenticationRequest do
       builder.id = id
       builder.now = Time.now.utc
       builder.issuer = issuer
-      builder.acs_url = acs_url
+      builder.assertion_consumer_service_url = assertion_consumer_service_url
       builder.name_id_format = name_id_format
       builder.destination = destination
     end.to_xml
@@ -20,7 +20,7 @@ RSpec.describe Saml::Kit::AuthenticationRequest do
 
   it { expect(subject.issuer).to eql(issuer) }
   it { expect(subject.id).to eql("_#{id}") }
-  it { expect(subject.acs_url).to eql(acs_url) }
+  it { expect(subject.assertion_consumer_service_url).to eql(assertion_consumer_service_url) }
   it { expect(subject.name_id_format).to eql(name_id_format) }
   it { expect(subject.destination).to eql(destination) }
 
@@ -62,7 +62,7 @@ RSpec.describe Saml::Kit::AuthenticationRequest do
       allow(metadata).to receive(:matches?).and_return(false)
       subject = described_class.build do |builder|
         builder.issuer = issuer
-        builder.acs_url = acs_url
+        builder.assertion_consumer_service_url = assertion_consumer_service_url
       end
 
       expect(subject).to be_invalid
@@ -79,7 +79,7 @@ RSpec.describe Saml::Kit::AuthenticationRequest do
     it 'validates the schema of the request' do
       id = SecureRandom.uuid
       signed_xml = Saml::Kit::Signature.sign(sign: true) do |xml, signature|
-        xml.tag!('samlp:AuthnRequest', "xmlns:samlp" => Saml::Kit::Namespaces::PROTOCOL, AssertionConsumerServiceURL: acs_url, ID: "_#{id}") do
+        xml.tag!('samlp:AuthnRequest', "xmlns:samlp" => Saml::Kit::Namespaces::PROTOCOL, AssertionConsumerServiceURL: assertion_consumer_service_url, ID: "_#{id}") do
           signature.template(id)
           xml.Fake do
             xml.NotAllowed "Huh?"
@@ -92,7 +92,7 @@ RSpec.describe Saml::Kit::AuthenticationRequest do
     it 'validates a request without a signature' do
       now = Time.now.utc
 raw_xml = <<-XML
-<samlp:AuthnRequest AssertionConsumerServiceURL='#{acs_url}' ID='_#{SecureRandom.uuid}' IssueInstant='#{now.iso8601}' Version='2.0' xmlns:saml='#{Saml::Kit::Namespaces::ASSERTION}' xmlns:samlp='#{Saml::Kit::Namespaces::PROTOCOL}'>
+<samlp:AuthnRequest AssertionConsumerServiceURL='#{assertion_consumer_service_url}' ID='_#{SecureRandom.uuid}' IssueInstant='#{now.iso8601}' Version='2.0' xmlns:saml='#{Saml::Kit::Namespaces::ASSERTION}' xmlns:samlp='#{Saml::Kit::Namespaces::PROTOCOL}'>
   <saml:Issuer>#{issuer}</saml:Issuer>
   <samlp:NameIDPolicy AllowCreate='true' Format='#{Saml::Kit::Namespaces::EMAIL_ADDRESS}'/>
 </samlp:AuthnRequest>
@@ -104,23 +104,23 @@ XML
     end
   end
 
-  describe "#acs_url" do
+  describe "#assertion_consumer_service_url" do
     let(:registry) { instance_double(Saml::Kit::DefaultRegistry) }
     let(:metadata) { instance_double(Saml::Kit::ServiceProviderMetadata) }
 
     it 'returns the ACS in the request' do
       subject = described_class.build do |builder|
-        builder.acs_url = acs_url
+        builder.assertion_consumer_service_url = assertion_consumer_service_url
       end
-      expect(subject.acs_url).to eql(acs_url)
+      expect(subject.assertion_consumer_service_url).to eql(assertion_consumer_service_url)
     end
 
     it 'returns nil' do
       subject = described_class.build do |builder|
-        builder.acs_url = nil
+        builder.assertion_consumer_service_url = nil
       end
 
-      expect(subject.acs_url).to be_nil
+      expect(subject.assertion_consumer_service_url).to be_nil
     end
   end
 
@@ -131,12 +131,12 @@ XML
     it 'provides a nice API for building metadata' do
       result = described_class.build do |builder|
         builder.issuer = entity_id
-        builder.acs_url = url
+        builder.assertion_consumer_service_url = url
       end
 
       expect(result).to be_instance_of(described_class)
       expect(result.issuer).to eql(entity_id)
-      expect(result.acs_url).to eql(url)
+      expect(result.assertion_consumer_service_url).to eql(url)
     end
   end
 end
spec/saml/response_spec.rb
@@ -2,7 +2,7 @@ require 'spec_helper'
 
 RSpec.describe Saml::Kit::Response do
   describe "#valid?" do
-    let(:request) { instance_double(Saml::Kit::AuthenticationRequest, id: "_#{SecureRandom.uuid}", issuer: FFaker::Internet.http_url, acs_url: FFaker::Internet.http_url, name_id_format: Saml::Kit::Namespaces::PERSISTENT, provider: nil, signed?: true, trusted?: true) }
+    let(:request) { instance_double(Saml::Kit::AuthenticationRequest, id: "_#{SecureRandom.uuid}", issuer: FFaker::Internet.http_url, assertion_consumer_service_url: FFaker::Internet.http_url, name_id_format: Saml::Kit::Namespaces::PERSISTENT, provider: nil, signed?: true, trusted?: true) }
     let(:user) { double(:user, name_id_for: SecureRandom.uuid, assertion_attributes_for: { id: SecureRandom.uuid }) }
     let(:registry) { instance_double(Saml::Kit::DefaultRegistry) }
     let(:metadata) { instance_double(Saml::Kit::IdentityProviderMetadata) }
@@ -322,7 +322,7 @@ RSpec.describe Saml::Kit::Response do
   describe "encrypted assertion" do
     let(:id) { SecureRandom.uuid }
     let(:now) { Time.now.utc }
-    let(:acs_url) { FFaker::Internet.uri("https") }
+    let(:assertion_consumer_service_url) { FFaker::Internet.uri("https") }
     let(:password) { FFaker::Movie.title }
     let(:assertion) do
       FFaker::Movie.title
@@ -371,7 +371,7 @@ XML
       encrypted = cipher.update(assertion) + cipher.final
 
       xml = <<-XML
-<samlp:Response xmlns:samlp="#{Saml::Kit::Namespaces::PROTOCOL}" xmlns:saml="#{Saml::Kit::Namespaces::ASSERTION}" ID="_#{id}" Version="2.0" IssueInstant="#{now.iso8601}" Destination="#{acs_url}" InResponseTo="_#{SecureRandom.uuid}">
+<samlp:Response xmlns:samlp="#{Saml::Kit::Namespaces::PROTOCOL}" xmlns:saml="#{Saml::Kit::Namespaces::ASSERTION}" ID="_#{id}" Version="2.0" IssueInstant="#{now.iso8601}" Destination="#{assertion_consumer_service_url}" InResponseTo="_#{SecureRandom.uuid}">
   <saml:Issuer>#{FFaker::Internet.uri("https")}</saml:Issuer>
   <samlp:Status>
     <samlp:StatusCode Value="#{Saml::Kit::Namespaces::SUCCESS}"/>
spec/saml/service_provider_metadata_spec.rb
@@ -129,17 +129,17 @@ RSpec.describe Saml::Kit::ServiceProviderMetadata do
   end
 
   describe ".build" do
-    let(:acs_url) { FFaker::Internet.uri("https") }
+    let(:assertion_consumer_service_url) { FFaker::Internet.uri("https") }
 
     it 'provides a nice API for building metadata' do
       result = described_class.build do |builder|
         builder.entity_id = entity_id
-        builder.add_assertion_consumer_service(acs_url, binding: :http_post)
+        builder.add_assertion_consumer_service(assertion_consumer_service_url, binding: :http_post)
       end
 
       expect(result).to be_instance_of(described_class)
       expect(result.entity_id).to eql(entity_id)
-      expect(result.assertion_consumer_service_for(binding: :http_post).location).to eql(acs_url)
+      expect(result.assertion_consumer_service_for(binding: :http_post).location).to eql(assertion_consumer_service_url)
     end
   end