Skip to content
This repository was archived by the owner on Oct 27, 2022. It is now read-only.

Commit 2f980e7

Browse files
authored
Merge pull request #963 from dmlond/DDS-859-mail_bugfix
DDS-859 mail bugfix
2 parents b72f44d + fd412c2 commit 2f980e7

File tree

3 files changed

+53
-17
lines changed

3 files changed

+53
-17
lines changed

app/models/ldap_identity_provider.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ def ldap_search(ldap_filter)
3636
username: entry.uid.first,
3737
first_name: entry.givenName.first,
3838
last_name: entry.sn.first,
39-
email: entry.attribute_names.include?(:uid) ? entry.mail.first : nil,
39+
email: entry.attribute_names.include?(:mail) ? entry.mail.first : nil,
4040
display_name: entry.displayName.first
4141
)
4242
end

spec/models/ldap_identity_provider_spec.rb

Lines changed: 50 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -56,21 +56,57 @@
5656
end
5757

5858
context 'greater than 3 characters' do
59-
let(:ldap_returns) { [test_user] }
60-
include_context 'mocked ldap', returns: :ldap_returns
61-
subject { auth_provider.identity_provider.affiliates(
62-
test_user[:last_name]
63-
) }
59+
context 'missing uid' do
60+
let(:test_user) { FactoryGirl.attributes_for(:user).reject{|k| k == :username } }
61+
let(:ldap_returns) { [test_user] }
62+
include_context 'mocked ldap', returns: :ldap_returns
63+
subject { auth_provider.identity_provider.affiliates(
64+
test_user[:last_name]
65+
) }
6466

65-
it {
66-
is_expected.to be_a Array
67-
expect(subject.length).to be > 0
68-
subject.each do |response|
69-
expect(response).to be_a User
70-
expect(response).not_to be_persisted
71-
expect(response.display_name).to eq test_user[:display_name]
72-
end
73-
}
67+
it {
68+
is_expected.to be_a Array
69+
expect(subject.length).to eq 0
70+
}
71+
end
72+
73+
context 'missing mail' do
74+
let(:test_user) { FactoryGirl.attributes_for(:user).reject{|k| k == :email } }
75+
let(:ldap_returns) { [test_user] }
76+
include_context 'mocked ldap', returns: :ldap_returns
77+
subject { auth_provider.identity_provider.affiliates(
78+
test_user[:last_name]
79+
) }
80+
81+
it {
82+
is_expected.to be_a Array
83+
expect(subject.length).to be > 0
84+
subject.each do |response|
85+
expect(response).to be_a User
86+
expect(response).not_to be_persisted
87+
expect(response.display_name).to eq test_user[:display_name]
88+
expect(response.email).not_to be
89+
end
90+
}
91+
end
92+
93+
context 'complete record' do
94+
let(:ldap_returns) { [test_user] }
95+
include_context 'mocked ldap', returns: :ldap_returns
96+
subject { auth_provider.identity_provider.affiliates(
97+
test_user[:last_name]
98+
) }
99+
100+
it {
101+
is_expected.to be_a Array
102+
expect(subject.length).to be > 0
103+
subject.each do |response|
104+
expect(response).to be_a User
105+
expect(response).not_to be_persisted
106+
expect(response.display_name).to eq test_user[:display_name]
107+
end
108+
}
109+
end
74110
end
75111
end
76112
end

spec/support/ldap_shared_examples.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
let(:expected_entries) {
44
entry_users.map { |test_user|
55
expected_entry = Net::LDAP::Entry.new
6-
expected_entry[:uid] = test_user[:username]
6+
expected_entry[:uid] = test_user[:username] if test_user[:username]
77
expected_entry[:givenName] = test_user[:first_name]
88
expected_entry[:sn] = test_user[:last_name]
9-
expected_entry[:mail] = test_user[:email]
9+
expected_entry[:mail] = test_user[:email] if test_user[:email]
1010
expected_entry[:displayName] = test_user[:display_name]
1111
expected_entry
1212
}

0 commit comments

Comments
 (0)