View | Details | Raw Unified | Return to bug 36536
Collapse All | Expand All

(-)a/t/db_dependent/api/v1/password_validation.t (-2 / +50 lines)
Lines 129-135 subtest 'password validation - unauthenticated user' => sub { Link Here
129
129
130
subtest 'Password validation - authorized requests tests' => sub {
130
subtest 'Password validation - authorized requests tests' => sub {
131
131
132
    plan tests => 24;
132
    plan tests => 25;
133
133
134
    $schema->storage->txn_begin;
134
    $schema->storage->txn_begin;
135
135
Lines 216-221 subtest 'Password validation - authorized requests tests' => sub { Link Here
216
        ->status_is( 400, 'Passing both parameters forbidden' )
216
        ->status_is( 400, 'Passing both parameters forbidden' )
217
        ->json_is( { error => 'Bad request. Only one identifier attribute can be passed.' } );
217
        ->json_is( { error => 'Bad request. Only one identifier attribute can be passed.' } );
218
218
219
    subtest 'TrackLastPatronActivityTriggers tests' => sub {
220
221
        plan tests => 9;
222
223
        my $patron          = $builder->build_object( { class => 'Koha::Patrons', value => { lastseen => undef } } );
224
        my $patron_password = 'thePassword123';
225
        $patron->set_password( { password => $patron_password, skip_validation => 1 } );
226
227
        # to avoid interference
228
        t::lib::Mocks::mock_preference( 'FailedLoginAttempts', 99 );
229
230
        # api_verify disabled
231
        t::lib::Mocks::mock_preference( 'TrackLastPatronActivityTriggers', 'login' );
232
233
        $patron->lastseen(undef)->store();
234
        $t->post_ok( "//$userid:$password@/api/v1/auth/password/validation" => json =>
235
                { identifier => $patron->userid, password => $patron_password } )->status_is( 201, 'Validation works' );
236
237
        # read patron from the DB
238
        $patron->discard_changes();
239
        is(
240
            $patron->lastseen, undef,
241
            "'lastseen' flag untouched if no 'api_verify' in TrackLastPatronActivityTriggers"
242
        );
243
244
        # good scenario
245
        t::lib::Mocks::mock_preference( 'TrackLastPatronActivityTriggers', 'api_verify' );
246
247
        $patron->lastseen(undef)->store();
248
        $t->post_ok( "//$userid:$password@/api/v1/auth/password/validation" => json =>
249
                { identifier => $patron->userid, password => 'wrong password :-D' } )
250
            ->status_is( 400, 'Validation failed due to bad password' );
251
252
        # read patron from the DB
253
        $patron->discard_changes();
254
        is( $patron->lastseen, undef, "'lastseen' flag not updated as validation failed" );
255
256
        $patron->lastseen(undef)->store();
257
        $t->post_ok( "//$userid:$password@/api/v1/auth/password/validation" => json =>
258
                { identifier => $patron->userid, password => $patron_password } )->status_is( 201, 'Validation works' );
259
260
        # read patron from the DB
261
        $patron->discard_changes();
262
        ok(
263
            $patron->lastseen,
264
            "'lastseen' flag updated TrackLastPatronActivityTriggers includes 'api_verify'"
265
        );
266
    };
267
219
    $schema->storage->txn_rollback;
268
    $schema->storage->txn_rollback;
220
};
269
};
221
270
222
- 

Return to bug 36536