Commit 4df17ef

mo <mo@mokhan.ca>
2018-09-17 19:40:32
add specs to build a valid assertion.
1 parent 9d30e02
Changed files (2)
lib
saml
kit
spec
saml
lib/saml/kit/builders/assertion.rb
@@ -14,7 +14,7 @@ module Saml
         attr_accessor :issuer, :version
         attr_accessor :default_name_id_format
 
-        def initialize(user, request = nil, embed_signature, configuration: Saml::Kit.configuration, now: Time.now.utc, destination: nil, signing_key_pair: nil, issuer: nil)
+        def initialize(user, request, embed_signature, configuration: Saml::Kit.configuration, now: Time.now.utc, destination: nil, signing_key_pair: nil, issuer: nil)
           @user = user
           @request = request
           @destination = destination
spec/saml/kit/builders/assertion_builder_spec.rb
@@ -2,12 +2,12 @@ require 'spec_helper'
 
 RSpec.describe Saml::Kit::Builders::Assertion do
   describe '#build' do
-    subject { described_class.new(user, request, configuration: configuration) }
+    subject { described_class.new(user, authn_request, true, configuration: configuration) }
 
     let(:email) { FFaker::Internet.email }
     let(:assertion_consumer_service_url) { FFaker::Internet.uri('https') }
     let(:user) { User.new(attributes: { email: email, created_at: Time.now.utc.iso8601 }) }
-    let(:request) { instance_double(Saml::Kit::AuthenticationRequest, id: Xml::Kit::Id.generate, 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(:authn_request) { instance_double(Saml::Kit::AuthenticationRequest, id: Xml::Kit::Id.generate, 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) { instance_double(Saml::Kit::ServiceProviderMetadata, want_assertions_signed: false, encryption_certificates: [configuration.certificates(use: :encryption).last]) }
     let(:issuer) { FFaker::Internet.uri('https') }
     let(:configuration) do
@@ -19,5 +19,14 @@ RSpec.describe Saml::Kit::Builders::Assertion do
     end
 
     specify { expect(subject.build).to be_valid }
+    specify { expect(subject.build.issuer).to eql(issuer) }
+    specify { expect(subject.build.name_id).to eql(user.name_id) }
+    specify { expect(subject.build.name_id_format).to eql(Saml::Kit::Namespaces::EMAIL_ADDRESS) }
+    specify { expect(subject.build).to be_signed }
+    specify { expect(subject.build).not_to be_expired }
+    specify { expect(subject.build).to be_active }
+    specify { expect(subject.build).not_to be_encrypted }
+    specify { expect(subject.build.conditions.audiences).to include(issuer) }
+    specify { expect(subject.build.attributes).to eql('email' => user.attributes[:email], 'created_at' => user.attributes[:created_at]) }
   end
 end