-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathuser_spec.rb
More file actions
105 lines (95 loc) · 3.86 KB
/
user_spec.rb
File metadata and controls
105 lines (95 loc) · 3.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
require 'rails_helper'
describe User do
attr_reader :student_id
attr_reader :student_record
attr_reader :employee_id
attr_reader :employee_record
attr_reader :cs_id
attr_reader :cs_record
attr_reader :ucpath_id
attr_reader :ucpath_record
attr_reader :uid
before do
allow(Alma::User).to receive(:find).and_raise(Error::PatronNotFoundError)
end
describe :from_omniauth do
it 'rejects invalid providers' do
auth = { 'provider' => 'not calnet' }
expect { User.from_omniauth(auth) }.to raise_error(Error::InvalidAuthProviderError)
end
it 'populates a User object' do
framework_admin_ldap = 'cn=edu:berkeley:org:libr:framework:LIBR-framework-admins,ou=campus groups,dc=berkeley,dc=edu'
auth = {
'provider' => 'calnet',
'extra' => {
'berkeleyEduAffiliations' => 'expected affiliation',
'departmentNumber' => 'expected dept. number',
'displayName' => 'expected display name',
'berkeleyEduAlternateID' => 'expected email',
'employeeNumber' => 'expected employee ID',
'givenName' => 'expected given name',
'berkeleyEduStuID' => 'expected student ID',
'surname' => 'expected surname',
'berkeleyEduUCPathID' => 'expected UC Path ID',
'uid' => 'expected UID',
'berkeleyEduIsMemberOf' => framework_admin_ldap
}
}
[true, false].each do |is_framework_admin|
auth['extra']['berkeleyEduIsMemberOf'] = is_framework_admin ? framework_admin_ldap : ''
user = User.from_omniauth(auth)
expect(user.affiliations).to eq('expected affiliation')
expect(user.department_number).to eq('expected dept. number')
expect(user.display_name).to eq('expected display name')
expect(user.email).to eq('expected email')
expect(user.employee_id).to eq('expected employee ID')
expect(user.given_name).to eq('expected given name')
expect(user.student_id).to eq('expected student ID')
expect(user.surname).to eq('expected surname')
expect(user.ucpath_id).to eq('expected UC Path ID')
expect(user.uid).to eq('expected UID')
expect(user.framework_admin).to eq(is_framework_admin)
end
end
it 'handles a user without CalGroups' do
auth = {
'provider' => 'calnet',
'extra' => {
'berkeleyEduAffiliations' => 'expected affiliation',
'departmentNumber' => 'expected dept. number',
'displayName' => 'expected display name',
'berkeleyEduAlternateID' => 'expected email',
'employeeNumber' => 'expected employee ID',
'givenName' => 'expected given name',
'berkeleyEduStuID' => 'expected student ID',
'surname' => 'expected surname',
'berkeleyEduUCPathID' => 'expected UC Path ID',
'uid' => 'expected UID'
}
}
user = User.from_omniauth(auth)
expect(user.affiliations).to eq('expected affiliation')
expect(user.department_number).to eq('expected dept. number')
expect(user.display_name).to eq('expected display name')
expect(user.email).to eq('expected email')
expect(user.employee_id).to eq('expected employee ID')
expect(user.given_name).to eq('expected given name')
expect(user.student_id).to eq('expected student ID')
expect(user.surname).to eq('expected surname')
expect(user.ucpath_id).to eq('expected UC Path ID')
expect(user.uid).to eq('expected UID')
expect(user.framework_admin).to eq(false)
expect(user.alma_admin).to eq(false)
end
end
describe :authenticated? do
it 'returns true if user has an ID' do
user = User.new(uid: '12345')
expect(user.authenticated?).to eq(true)
end
it 'returns false if user ID is nil' do
user = User.new(uid: nil)
expect(user.authenticated?).to eq(false)
end
end
end