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

(-)a/t/db_dependent/api/v1/checkouts.t (-3 / +130 lines)
Lines 238-244 $schema->storage->txn_rollback; Link Here
238
238
239
subtest 'get_availability' => sub {
239
subtest 'get_availability' => sub {
240
240
241
    plan tests => 28;
241
    plan tests => 29;
242
242
243
    $schema->storage->txn_begin;
243
    $schema->storage->txn_begin;
244
    my $librarian = $builder->build_object(
244
    my $librarian = $builder->build_object(
Lines 340-352 subtest 'get_availability' => sub { Link Here
340
        ),
340
        ),
341
        'Correct token'
341
        'Correct token'
342
    );
342
    );
343
    %needsconfirmation = ();
344
345
    subtest 'public availability' => sub {
346
        plan tests => 18;
347
348
        # Available, Not authentication required
349
        $t->get_ok(
350
"/api/v1/public/checkouts/availability?item_id=$item1_id&patron_id=$patron_id"
351
        )->status_is(200)->json_is( '/blockers' => {} )
352
          ->json_is( '/confirms' => {} )->json_is( '/warnings' => {} )
353
          ->json_has('/confirmation_token');
354
355
        # Needs confirmation upgrade to blocker
356
        %needsconfirmation = ( TOO_MANY => 1, ISSUED_TO_ANOTHER => 1 );
357
        $t->get_ok(
358
"/api/v1/public/checkouts/availability?item_id=$item1_id&patron_id=$patron_id"
359
        )->status_is(200)
360
          ->json_is( '/blockers' => { TOO_MANY => 1, ISSUED_TO_ANOTHER => 1 } )
361
          ->json_is( '/confirms' => {} )->json_is( '/warnings' => {} )
362
          ->json_has('/confirmation_token');
363
        %needsconfirmation = ();
364
365
        # Remove personal information from public endpoint
366
        %issuingimpossible = (
367
            issued_borrowernumber => 'private',
368
            issued_cardnumber     => 'private',
369
            issued_firstname      => 'private',
370
            issued_surname        => 'private',
371
            resborrowernumber     => 'private',
372
            resbranchcode         => 'private',
373
            rescardnumber         => 'private',
374
            reserve_id            => 'private',
375
            resfirstname          => 'private',
376
            resreservedate        => 'private',
377
            ressurname            => 'private',
378
            item_notforloan       => 'private'
379
        );
380
        %alerts = (
381
            issued_borrowernumber => 'private',
382
            issued_cardnumber     => 'private',
383
            issued_firstname      => 'private',
384
            issued_surname        => 'private',
385
            resborrowernumber     => 'private',
386
            resbranchcode         => 'private',
387
            rescardnumber         => 'private',
388
            reserve_id            => 'private',
389
            resfirstname          => 'private',
390
            resreservedate        => 'private',
391
            ressurname            => 'private',
392
            item_notforloan       => 'private'
393
        );
394
395
        %needsconfirmation = (
396
            issued_borrowernumber => 'private',
397
            issued_cardnumber     => 'private',
398
            issued_firstname      => 'private',
399
            issued_surname        => 'private',
400
            resborrowernumber     => 'private',
401
            resbranchcode         => 'private',
402
            rescardnumber         => 'private',
403
            reserve_id            => 'private',
404
            resfirstname          => 'private',
405
            resreservedate        => 'private',
406
            ressurname            => 'private',
407
            item_notforloan       => 'private'
408
        );
409
        $t->get_ok(
410
"/api/v1/public/checkouts/availability?item_id=$item1_id&patron_id=$patron_id"
411
        )->status_is(200)->json_is( '/blockers' => {} )
412
          ->json_is( '/confirms' => {} )->json_is( '/warnings' => {} )
413
          ->json_has('/confirmation_token');
414
        %issuingimpossible = ();
415
        %alerts            = ();
416
        %needsconfirmation = ();
417
    };
343
418
344
    $schema->storage->txn_rollback;
419
    $schema->storage->txn_rollback;
345
};
420
};
346
421
347
subtest 'add checkout' => sub {
422
subtest 'add checkout' => sub {
348
423
349
    plan tests => 9;
424
    plan tests => 10;
350
425
351
    $schema->storage->txn_begin;
426
    $schema->storage->txn_begin;
352
    my $librarian = $builder->build_object(
427
    my $librarian = $builder->build_object(
Lines 426-430 subtest 'add checkout' => sub { Link Here
426
    )->status_is(201)->or(sub { diag $t->tx->res->body });
501
    )->status_is(201)->or(sub { diag $t->tx->res->body });
427
    %needsconfirmation = ();
502
    %needsconfirmation = ();
428
503
504
    subtest 'public add' => sub {
505
        plan tests => 14;
506
507
        my $useridp = $patron->userid;
508
        $patron->set_password(
509
            { password => $password, skip_validation => 1 } );
510
511
        # Feature disabled
512
        t::lib::Mocks::mock_preference( 'OpacTrustedCheckout', 0 );
513
514
        $t->post_ok( "/api/v1/public/patrons/$patron_id/checkouts" => json =>
515
              { item_id => $item1_id, patron_id => $patron_id } )
516
          ->status_is(401)->json_is(
517
            {
518
                error => "Authentication failure."
519
            }
520
          );
521
522
        $t->post_ok(
523
            "//$useridp:$password@/api/v1/public/patrons/$patron_id/checkouts"
524
              => json => { item_id => $item1_id, patron_id => $patron_id } )
525
          ->status_is(405)
526
          ->json_is(
527
            { error => "Feature disabled", error_code => "FEATURE_DISABLED" } );
528
529
        # Feature enabled
530
        t::lib::Mocks::mock_preference( 'OpacTrustedCheckout', 1 );
531
532
        $t->post_ok( "/api/v1/public/patrons/$patron_id/checkouts" => json =>
533
              { item_id => $item1_id, patron_id => $patron_id } )
534
          ->status_is(401)->json_is(
535
            {
536
                error => "Authentication failure."
537
            }
538
          );
539
540
        $t->post_ok(
541
            "//$userid:$password@/api/v1/public/patrons/$patron_id/checkouts"
542
              => json => { item_id => $item1_id, patron_id => $patron_id } )
543
          ->status_is(403)->json_is(
544
            {
545
                error =>
546
                  "Authorization failure. Missing required permission(s).",
547
                required_permissions => undef
548
            }
549
          );
550
551
        $t->post_ok(
552
            "//$useridp:$password@/api/v1/public/patrons/$patron_id/checkouts"
553
              => json => { item_id => $item1_id, patron_id => $patron_id } )
554
          ->status_is(201);
555
    };
556
429
    $schema->storage->txn_rollback;
557
    $schema->storage->txn_rollback;
430
};
558
};
431
- 

Return to bug 30979