Commit d21d5fc

mo <mo@mokhan.ca>
2017-11-02 18:28:22
pass request to user model to choose what attributes to include.
1 parent 43a07da
Changed files (3)
proof
app
models
saml-kit
lib
saml
spec
proof/app/models/user.rb
@@ -4,7 +4,7 @@ class User < ApplicationRecord
     self.uuid = SecureRandom.uuid unless self.uuid
   end
 
-  def assertion_attributes
+  def assertion_attributes_for(request)
     {
       id: uuid,
       email: email,
saml-kit/lib/saml/kit/response.rb
@@ -75,7 +75,7 @@ module Saml
                 end
               end
               xml.AttributeStatement do
-                user.assertion_attributes.each do |key, value|
+                user.assertion_attributes_for(request).each do |key, value|
                   xml.Attribute Name: key, NameFormat: Namespaces::URI, FriendlyName: key do
                     xml.AttributeValue value.to_s
                   end
saml-kit/spec/saml/response_spec.rb
@@ -3,7 +3,7 @@ require 'spec_helper'
 RSpec.describe Saml::Kit::Response do
   describe "#acs_url" do
     let(:acs_url) { "https://#{FFaker::Internet.domain_name}/acs" }
-    let(:user) { double(:user, uuid: SecureRandom.uuid, assertion_attributes: { }) }
+    let(:user) { double(:user, uuid: SecureRandom.uuid, assertion_attributes_for: { }) }
     let(:request) { double(id: SecureRandom.uuid, acs_url: acs_url, issuer: FFaker::Movie.title) }
     subject { described_class::Builder.new(user, request).build }
 
@@ -14,7 +14,7 @@ RSpec.describe Saml::Kit::Response do
 
   describe "#to_xml" do
     subject { described_class::Builder.new(user, request) }
-    let(:user) { double(:user, uuid: SecureRandom.uuid, assertion_attributes: { email: email, created_at: Time.now.utc.iso8601 }) }
+    let(:user) { double(:user, uuid: SecureRandom.uuid, assertion_attributes_for: { email: email, created_at: Time.now.utc.iso8601 }) }
     let(:request) { double(id: SecureRandom.uuid, acs_url: acs_url, issuer: FFaker::Movie.title) }
     let(:acs_url) { "https://#{FFaker::Internet.domain_name}/acs" }
     let(:issuer) { FFaker::Movie.title }