Lines 37-47
my $anonymous_bind = 1;
Link Here
|
37 |
# Variables controlling LDAP behaviour |
37 |
# Variables controlling LDAP behaviour |
38 |
my $desired_authentication_result = 'success'; |
38 |
my $desired_authentication_result = 'success'; |
39 |
my $desired_connection_result = 'error'; |
39 |
my $desired_connection_result = 'error'; |
40 |
my $desired_bind_result = 'error'; |
40 |
my $desired_admin_bind_result = 'error'; |
41 |
my $desired_compare_result = 'error'; |
41 |
my $desired_compare_result = 'error'; |
42 |
my $desired_search_result = 'error'; |
42 |
my $desired_search_result = 'error'; |
43 |
my $desired_count_result = 1; |
43 |
my $desired_count_result = 1; |
44 |
my $non_anonymous_bind_result = 'error'; |
44 |
my $desired_bind_result = 'error'; |
45 |
my $ret; |
45 |
my $ret; |
46 |
|
46 |
|
47 |
# Mock the context module |
47 |
# Mock the context module |
Lines 90-96
subtest "checkpw_ldap tests" => sub {
Link Here
|
90 |
|
90 |
|
91 |
$desired_authentication_result = 'success'; |
91 |
$desired_authentication_result = 'success'; |
92 |
$anonymous_bind = 1; |
92 |
$anonymous_bind = 1; |
93 |
$desired_bind_result = 'error'; |
93 |
$desired_admin_bind_result = 'error'; |
94 |
$desired_search_result = 'error'; |
94 |
$desired_search_result = 'error'; |
95 |
reload_ldap_module(); |
95 |
reload_ldap_module(); |
96 |
|
96 |
|
Lines 103-117
subtest "checkpw_ldap tests" => sub {
Link Here
|
103 |
|
103 |
|
104 |
$desired_authentication_result = 'success'; |
104 |
$desired_authentication_result = 'success'; |
105 |
$anonymous_bind = 1; |
105 |
$anonymous_bind = 1; |
106 |
$desired_bind_result = 'success'; |
106 |
$desired_admin_bind_result = 'success'; |
107 |
$desired_search_result = 'success'; |
107 |
$desired_search_result = 'success'; |
108 |
$desired_count_result = 0; # user auth problem |
108 |
$desired_count_result = 0; # user auth problem |
109 |
$non_anonymous_bind_result = 'success'; |
109 |
$desired_bind_result = 'success'; |
110 |
reload_ldap_module(); |
110 |
reload_ldap_module(); |
111 |
is ( C4::Auth_with_ldap::checkpw_ldap( $dbh, 'hola', password => 'hey' ), |
111 |
is ( C4::Auth_with_ldap::checkpw_ldap( $dbh, 'hola', password => 'hey' ), |
112 |
0, "checkpw_ldap returns 0 if user lookup returns 0"); |
112 |
0, "checkpw_ldap returns 0 if user lookup returns 0"); |
113 |
|
113 |
|
114 |
$non_anonymous_bind_result = 'error'; |
114 |
$desired_bind_result = 'error'; |
115 |
reload_ldap_module(); |
115 |
reload_ldap_module(); |
116 |
|
116 |
|
117 |
warning_like { $ret = C4::Auth_with_ldap::checkpw_ldap( |
117 |
warning_like { $ret = C4::Auth_with_ldap::checkpw_ldap( |
Lines 123-132
subtest "checkpw_ldap tests" => sub {
Link Here
|
123 |
# regression tests for bug 12831 |
123 |
# regression tests for bug 12831 |
124 |
$desired_authentication_result = 'error'; |
124 |
$desired_authentication_result = 'error'; |
125 |
$anonymous_bind = 0; |
125 |
$anonymous_bind = 0; |
126 |
$desired_bind_result = 'error'; |
126 |
$desired_admin_bind_result = 'error'; |
127 |
$desired_search_result = 'success'; |
127 |
$desired_search_result = 'success'; |
128 |
$desired_count_result = 0; # user auth problem |
128 |
$desired_count_result = 0; # user auth problem |
129 |
$non_anonymous_bind_result = 'error'; |
129 |
$desired_bind_result = 'error'; |
130 |
reload_ldap_module(); |
130 |
reload_ldap_module(); |
131 |
|
131 |
|
132 |
warning_like { $ret = C4::Auth_with_ldap::checkpw_ldap( |
132 |
warning_like { $ret = C4::Auth_with_ldap::checkpw_ldap( |
Lines 145-152
subtest "checkpw_ldap tests" => sub {
Link Here
|
145 |
|
145 |
|
146 |
# Anonymous bind |
146 |
# Anonymous bind |
147 |
$anonymous_bind = 1; |
147 |
$anonymous_bind = 1; |
148 |
$desired_bind_result = 'error'; |
148 |
$desired_admin_bind_result = 'error'; |
149 |
$non_anonymous_bind_result = 'error'; |
149 |
$desired_bind_result = 'error'; |
150 |
reload_ldap_module(); |
150 |
reload_ldap_module(); |
151 |
|
151 |
|
152 |
warning_like { $ret = C4::Auth_with_ldap::checkpw_ldap( |
152 |
warning_like { $ret = C4::Auth_with_ldap::checkpw_ldap( |
Lines 156-164
subtest "checkpw_ldap tests" => sub {
Link Here
|
156 |
is ( $ret, 0, "checkpw_ldap returns 0 if bind fails"); |
156 |
is ( $ret, 0, "checkpw_ldap returns 0 if bind fails"); |
157 |
|
157 |
|
158 |
$anonymous_bind = 1; |
158 |
$anonymous_bind = 1; |
159 |
$desired_bind_result = 'success'; |
159 |
$desired_admin_bind_result = 'success'; |
160 |
$non_anonymous_bind_result = 'success'; |
160 |
$desired_bind_result = 'error'; |
161 |
$desired_compare_result = 'error'; |
|
|
162 |
reload_ldap_module(); |
161 |
reload_ldap_module(); |
163 |
|
162 |
|
164 |
warning_like { $ret = C4::Auth_with_ldap::checkpw_ldap( |
163 |
warning_like { $ret = C4::Auth_with_ldap::checkpw_ldap( |
Lines 169-177
subtest "checkpw_ldap tests" => sub {
Link Here
|
169 |
|
168 |
|
170 |
# Non-anonymous bind |
169 |
# Non-anonymous bind |
171 |
$anonymous_bind = 0; |
170 |
$anonymous_bind = 0; |
172 |
$desired_bind_result = 'success'; |
171 |
$desired_admin_bind_result = 'error'; |
173 |
$non_anonymous_bind_result = 'error'; |
172 |
$desired_bind_result = 'error'; |
174 |
$desired_compare_result = 'dont care'; |
|
|
175 |
reload_ldap_module(); |
173 |
reload_ldap_module(); |
176 |
|
174 |
|
177 |
warning_like { $ret = C4::Auth_with_ldap::checkpw_ldap( |
175 |
warning_like { $ret = C4::Auth_with_ldap::checkpw_ldap( |
Lines 181-189
subtest "checkpw_ldap tests" => sub {
Link Here
|
181 |
is ( $ret, 0, "checkpw_ldap returns 0 if bind fails"); |
179 |
is ( $ret, 0, "checkpw_ldap returns 0 if bind fails"); |
182 |
|
180 |
|
183 |
$anonymous_bind = 0; |
181 |
$anonymous_bind = 0; |
184 |
$desired_bind_result = 'success'; |
182 |
$desired_admin_bind_result = 'success'; |
185 |
$non_anonymous_bind_result = 'success'; |
183 |
$desired_bind_result = 'error'; |
186 |
$desired_compare_result = 'error'; |
|
|
187 |
reload_ldap_module(); |
184 |
reload_ldap_module(); |
188 |
|
185 |
|
189 |
warning_like { $ret = C4::Auth_with_ldap::checkpw_ldap( |
186 |
warning_like { $ret = C4::Auth_with_ldap::checkpw_ldap( |
Lines 265-305
sub mock_net_ldap {
Link Here
|
265 |
my $mocked_ldap = Test::MockObject->new(); |
262 |
my $mocked_ldap = Test::MockObject->new(); |
266 |
|
263 |
|
267 |
$mocked_ldap->mock( 'bind', sub { |
264 |
$mocked_ldap->mock( 'bind', sub { |
268 |
|
265 |
if (is_admin_bind(@_)) { |
269 |
my @args = @_; |
266 |
return mock_net_ldap_message( |
270 |
my $mocked_message; |
267 |
($desired_admin_bind_result eq 'error' ) ? 1 : 0, # code |
271 |
|
268 |
($desired_admin_bind_result eq 'error' ) ? 1 : 0, # error |
272 |
if ( $#args > 1 ) { |
269 |
($desired_admin_bind_result eq 'error' ) ? 'error_name' : 0, # error_name |
273 |
# Args passed => non-anonymous bind |
270 |
($desired_admin_bind_result eq 'error' ) ? 'error_text' : 0 # error_text |
274 |
if ( $non_anonymous_bind_result eq 'error' ) { |
|
|
275 |
return mock_net_ldap_message(1,1,'error_name','error_text'); |
276 |
} else { |
277 |
return mock_net_ldap_message(0,0,'',''); |
278 |
} |
279 |
} else { |
280 |
$mocked_message = mock_net_ldap_message( |
281 |
($desired_bind_result eq 'error' ) ? 1 : 0, # code |
282 |
($desired_bind_result eq 'error' ) ? 1 : 0, # error |
283 |
($desired_bind_result eq 'error' ) ? 'error_name' : 0, # error_name |
284 |
($desired_bind_result eq 'error' ) ? 'error_text' : 0 # error_text |
285 |
); |
271 |
); |
286 |
} |
|
|
287 |
|
288 |
return $mocked_message; |
289 |
}); |
290 |
|
291 |
$mocked_ldap->mock( 'compare', sub { |
292 |
|
293 |
my $mocked_message; |
294 |
|
295 |
if ( $desired_compare_result eq 'error' ) { |
296 |
$mocked_message = mock_net_ldap_message(1,1,'error_name','error_text'); |
297 |
} else { |
272 |
} else { |
298 |
# we expect return code 6 for success |
273 |
if ( $desired_bind_result eq 'error' ) { |
299 |
$mocked_message = mock_net_ldap_message(6,0,'',''); |
274 |
return mock_net_ldap_message(1,1,'error_name','error_text'); |
|
|
275 |
} |
276 |
return mock_net_ldap_message(0,0,'',''); |
300 |
} |
277 |
} |
301 |
|
|
|
302 |
return $mocked_message; |
303 |
}); |
278 |
}); |
304 |
|
279 |
|
305 |
$mocked_ldap->mock( 'search', sub { |
280 |
$mocked_ldap->mock( 'search', sub { |
Lines 374-379
sub reload_ldap_module {
Link Here
|
374 |
C4::Auth_with_ldap->import; |
349 |
C4::Auth_with_ldap->import; |
375 |
} |
350 |
} |
376 |
|
351 |
|
|
|
352 |
sub is_admin_bind { |
353 |
my @args = @_; |
354 |
|
355 |
if ($#args <= 1 || $args[1] eq 'cn=Manager,dc=metavore,dc=com') { |
356 |
return 1; |
357 |
} |
358 |
|
359 |
return 0; |
360 |
} |
361 |
|
377 |
$dbh->rollback; |
362 |
$dbh->rollback; |
378 |
|
363 |
|
379 |
1; |
364 |
1; |
380 |
- |
|
|