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

(-)a/t/db_dependent/api/v1/suggestions.t (-2 / +84 lines)
Lines 17-23 Link Here
17
17
18
use Modern::Perl;
18
use Modern::Perl;
19
19
20
use Test::More tests => 5;
20
use Test::More tests => 6;
21
use Test::Mojo;
21
use Test::Mojo;
22
22
23
use t::lib::TestBuilder;
23
use t::lib::TestBuilder;
Lines 420-422 subtest 'delete() tests' => sub { Link Here
420
420
421
    $schema->storage->txn_rollback;
421
    $schema->storage->txn_rollback;
422
};
422
};
423
- 
423
424
subtest 'Permissions tests' => sub {
425
    plan tests => 11;
426
427
    $schema->storage->txn_begin;
428
429
    my $librarian = $builder->build_object(
430
        {
431
            class => 'Koha::Patrons',
432
            value => { flags => 2**4 }    # 4 = catalogue
433
        }
434
    );
435
436
    my $password = 'thePassword123';
437
    $librarian->set_password( { password => $password, skip_validation => 1 } );
438
    my $userid = $librarian->userid;
439
440
    my $patron = $builder->build_object(
441
        {
442
            class => 'Koha::Patrons',
443
            value => { flags => 0 }
444
        }
445
    );
446
    my $patron_id = $patron->id;
447
448
    my $suggestion = $builder->build_object(
449
        {
450
            class => 'Koha::Suggestions',
451
            value => { suggestedby => $patron_id, STATUS => 'ASKED' }
452
        }
453
    );
454
    my $suggestion_data = $suggestion->to_api;
455
    delete $suggestion_data->{suggestion_id};
456
    $suggestion->delete;
457
458
    # Unauthorized attempt to write
459
    $t->post_ok( "//$userid:$password@/api/v1/suggestions" => json => $suggestion_data )
460
        ->status_is( 403, 'SWAGGER3.2.1' );
461
462
    $builder->build(
463
        {
464
            source => 'UserPermission',
465
            value  => {
466
                borrowernumber => $librarian->id,
467
                module_bit     => 12,                     # 12 = suggestions
468
                code           => 'suggestions_create',
469
            },
470
        }
471
    );
472
473
    # Authorized attempt to write
474
    my $generated_suggestion =
475
        $t->post_ok( "//$userid:$password@/api/v1/suggestions" => json => $suggestion_data )
476
        ->status_is( 201, 'SWAGGER3.2.1' )->header_like(
477
        Location => qr|^\/api\/v1\/suggestions\/\d*|,
478
        'SWAGGER3.4.1'
479
    )->tx->res->json;
480
481
    my $suggestion_id = $generated_suggestion->{suggestion_id};
482
    is_deeply(
483
        $generated_suggestion,
484
        Koha::Suggestions->find($suggestion_id)->to_api,
485
        'The object is returned'
486
    );
487
488
    $t->delete_ok("//$userid:$password@/api/v1/suggestions/$suggestion_id")->status_is(403);
489
490
    $builder->build(
491
        {
492
            source => 'UserPermission',
493
            value  => {
494
                borrowernumber => $librarian->id,
495
                module_bit     => 12,                     # 12 = suggestions
496
                code           => 'suggestions_delete',
497
            },
498
        }
499
    );
500
501
    $t->delete_ok("//$userid:$password@/api/v1/suggestions/$suggestion_id")->status_is( 204, 'SWAGGER3.2.4' )
502
        ->content_is( q{}, 'SWAGGER3.3.4' );
503
504
    $schema->storage->txn_rollback;
505
};

Return to bug 33363