Commit b73fc75

mo <mo@mokhan.ca>
2017-11-30 18:02:18
decouple from builders.
1 parent 1155912
spec/saml/bindings/http_post_spec.rb
@@ -8,7 +8,7 @@ RSpec.describe Saml::Kit::Bindings::HttpPost do
     let(:relay_state) { "ECHO" }
 
     it 'encodes the request using the HTTP-POST encoding for a AuthenticationRequest' do
-      builder = Saml::Kit::Builders::AuthenticationRequest.new
+      builder = Saml::Kit::AuthenticationRequest.builder_class.new
       url, saml_params = subject.serialize(builder, relay_state: relay_state)
 
       expect(url).to eql(location)
@@ -22,7 +22,7 @@ RSpec.describe Saml::Kit::Bindings::HttpPost do
 
     it 'returns a SAMLRequest for a LogoutRequest' do
       user = double(:user, name_id_for: SecureRandom.uuid)
-      builder = Saml::Kit::Builders::LogoutRequest.new(user)
+      builder = Saml::Kit::LogoutRequest.builder_class.new(user)
       url, saml_params = subject.serialize(builder, relay_state: relay_state)
 
       expect(url).to eql(location)
@@ -37,7 +37,7 @@ RSpec.describe Saml::Kit::Bindings::HttpPost do
     it 'returns a SAMLResponse for a LogoutResponse' do
       user = double(:user, name_id_for: SecureRandom.uuid)
       request = instance_double(Saml::Kit::AuthenticationRequest, id: SecureRandom.uuid)
-      builder = Saml::Kit::Builders::LogoutResponse.new(user, request)
+      builder = Saml::Kit::LogoutResponse.builder_class.new(user, request)
       url, saml_params = subject.serialize(builder, relay_state: relay_state)
 
       expect(url).to eql(location)
@@ -50,7 +50,7 @@ RSpec.describe Saml::Kit::Bindings::HttpPost do
     end
 
     it 'excludes the RelayState when blank' do
-      builder = Saml::Kit::Builders::AuthenticationRequest.new
+      builder = Saml::Kit::AuthenticationRequest.builder_class.new
       url, saml_params = subject.serialize(builder)
 
       expect(url).to eql(location)
@@ -60,7 +60,7 @@ RSpec.describe Saml::Kit::Bindings::HttpPost do
 
   describe "#deserialize" do
     it 'deserializes to an AuthnRequest' do
-      builder = Saml::Kit::Builders::AuthenticationRequest.new
+      builder = Saml::Kit::AuthenticationRequest.builder_class.new
       _, params = subject.serialize(builder)
       result = subject.deserialize(params)
       expect(result).to be_instance_of(Saml::Kit::AuthenticationRequest)
@@ -68,7 +68,7 @@ RSpec.describe Saml::Kit::Bindings::HttpPost do
 
     it 'deserializes to a LogoutRequest' do
       user = double(:user, name_id_for: SecureRandom.uuid)
-      builder = Saml::Kit::Builders::LogoutRequest.new(user)
+      builder = Saml::Kit::LogoutRequest.builder_class.new(user)
       _, params = subject.serialize(builder)
       result = subject.deserialize(params)
       expect(result).to be_instance_of(Saml::Kit::LogoutRequest)
@@ -77,7 +77,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)
-      builder = Saml::Kit::Builders::Response.new(user, request)
+      builder = Saml::Kit::Response.builder_class.new(user, request)
       _, params = subject.serialize(builder)
       result = subject.deserialize(params)
       expect(result).to be_instance_of(Saml::Kit::Response)
spec/saml/bindings/http_redirect_spec.rb
@@ -8,7 +8,7 @@ RSpec.describe Saml::Kit::Bindings::HttpRedirect do
     let(:relay_state) { "ECHO" }
 
     it 'encodes the request using the HTTP-Redirect encoding' do
-      builder = Saml::Kit::Builders::AuthenticationRequest.new
+      builder = Saml::Kit::AuthenticationRequest.builder_class.new
       url, _ = subject.serialize(builder, relay_state: relay_state)
       expect(url).to start_with(location)
       expect(url).to have_query_param('SAMLRequest')
@@ -19,7 +19,7 @@ RSpec.describe Saml::Kit::Bindings::HttpRedirect do
 
   describe "#deserialize" do
     let(:issuer) { FFaker::Internet.http_url }
-    let(:provider) { Saml::Kit::Builders::IdentityProviderMetadata.new.build }
+    let(:provider) { Saml::Kit::IdentityProviderMetadata.build }
 
     before :each do
       allow(Saml::Kit.configuration.registry).to receive(:metadata_for).with(issuer).and_return(provider)
@@ -27,14 +27,14 @@ RSpec.describe Saml::Kit::Bindings::HttpRedirect do
     end
 
     it 'deserializes the SAMLRequest to an AuthnRequest' do
-      url, _ = subject.serialize(Saml::Kit::Builders::AuthenticationRequest.new)
+      url, _ = subject.serialize(Saml::Kit::AuthenticationRequest.builder_class.new)
       result = subject.deserialize(query_params_from(url))
       expect(result).to be_instance_of(Saml::Kit::AuthenticationRequest)
     end
 
     it 'deserializes the SAMLRequest to a LogoutRequest' do
       user = double(:user, name_id_for: SecureRandom.uuid)
-      url, _ = subject.serialize(Saml::Kit::Builders::LogoutRequest.new(user))
+      url, _ = subject.serialize(Saml::Kit::LogoutRequest.builder_class.new(user))
       result = subject.deserialize(query_params_from(url))
       expect(result).to be_instance_of(Saml::Kit::LogoutRequest)
     end
@@ -48,7 +48,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)
-      url, _ = subject.serialize(Saml::Kit::Builders::Response.new(user, request))
+      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)
     end
@@ -56,7 +56,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)
-      url, _ = subject.serialize(Saml::Kit::Builders::LogoutResponse.new(user, request))
+      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)
     end
@@ -74,7 +74,7 @@ RSpec.describe Saml::Kit::Bindings::HttpRedirect do
     end
 
     it 'raises an error when the signature does not match' do
-      url, _ = subject.serialize(Saml::Kit::Builders::AuthenticationRequest.new)
+      url, _ = subject.serialize(Saml::Kit::AuthenticationRequest.builder_class.new)
       query_params = query_params_from(url)
       query_params['Signature'] = 'invalid'
       expect do
@@ -83,9 +83,9 @@ RSpec.describe Saml::Kit::Bindings::HttpRedirect do
     end
 
     it 'returns a signed document, when a signature is missing' do
-      builder = Saml::Kit::Builders::ServiceProviderMetadata.new
-      builder.add_assertion_consumer_service(FFaker::Internet.http_url, binding: :http_post)
-      provider = builder.build
+      provider = Saml::Kit::ServiceProviderMetadata.build do |builder|
+        builder.add_assertion_consumer_service(FFaker::Internet.http_url, binding: :http_post)
+      end
       allow(Saml::Kit.configuration.registry).to receive(:metadata_for).with(issuer).and_return(provider)
 
       url, _ = subject.serialize(Saml::Kit::Builders::AuthenticationRequest.new)
spec/saml/authentication_request_spec.rb
@@ -52,7 +52,7 @@ RSpec.describe Saml::Kit::AuthenticationRequest do
     end
 
     it 'is invalid when not an AuthnRequest' do
-      xml = Saml::Kit::Builders::IdentityProviderMetadata.new.to_xml
+      xml = Saml::Kit::IdentityProviderMetadata.build.to_xml
       subject = described_class.new(xml)
       expect(subject).to be_invalid
       expect(subject.errors[:base]).to include(subject.error_message(:invalid))
spec/saml/xml_spec.rb
@@ -6,13 +6,13 @@ RSpec.describe Saml::Kit::Xml do
     let(:logout_url) { "https://#{FFaker::Internet.domain_name}/logout" }
 
     let(:signed_xml) do
-      builder = Saml::Kit::Builders::ServiceProviderMetadata.new
-      builder.entity_id = FFaker::Movie.title
-      builder.add_assertion_consumer_service(login_url, binding: :http_post)
-      builder.add_assertion_consumer_service(login_url, binding: :http_redirect)
-      builder.add_single_logout_service(logout_url, binding: :http_post)
-      builder.add_single_logout_service(logout_url, binding: :http_redirect)
-      builder.to_xml
+      Saml::Kit::ServiceProviderMetadata.build do |builder|
+        builder.entity_id = FFaker::Movie.title
+        builder.add_assertion_consumer_service(login_url, binding: :http_post)
+        builder.add_assertion_consumer_service(login_url, binding: :http_redirect)
+        builder.add_single_logout_service(logout_url, binding: :http_post)
+        builder.add_single_logout_service(logout_url, binding: :http_redirect)
+      end.to_xml
     end
 
     it 'returns true, when the digest and signature is valid' do