| Lines 32-38
          my $t = Test::Mojo->new('Koha::REST::V1');
      
      
        Link Here | 
        
          | 32 |  | 32 |  | 
        
          | 33 | subtest 'success tests' => sub { | 33 | subtest 'success tests' => sub { | 
        
          | 34 |  | 34 |  | 
          
            
              | 35 |     plan tests => 10; | 35 |     plan tests => 2; | 
        
          | 36 |  | 36 |  | 
        
          | 37 |     $schema->storage->txn_begin; | 37 |     $schema->storage->txn_begin; | 
        
          | 38 |  | 38 |  | 
  
    | Lines 40-78
          subtest 'success tests' => sub {
      
      
        Link Here | 
        
          | 40 |  | 40 |  | 
        
          | 41 |     my $password = 'AbcdEFG123'; | 41 |     my $password = 'AbcdEFG123'; | 
        
          | 42 |  | 42 |  | 
          
            
              | 43 |     my $patron = $builder->build_object( | 43 |     my $patron = $builder->build_object( { class => 'Koha::Patrons', value => { userid => 'tomasito' } } ); | 
            
              | 44 |         { class => 'Koha::Patrons', value => { userid => 'tomasito', flags => 2**4 } } ); | 44 |     $patron->set_password( { password => $password } ); | 
            
              | 45 |     $patron->set_password({ password => $password }); | 45 |  | 
            
              | 46 |     my $userid = $patron->userid; | 46 |     my $userid     = $patron->userid; | 
            
              |  |  | 47 |     my $cardnumber = $patron->cardnumber; | 
        
          | 47 |  | 48 |  | 
        
          | 48 |     my $stash; | 49 |     my $stash; | 
        
          | 49 |     my $interface; | 50 |     my $interface; | 
        
          | 50 |     my $userenv; | 51 |     my $userenv; | 
        
          | 51 |  | 52 |  | 
          
            
              | 52 |     $t->app->hook(after_dispatch => sub { | 53 |     $t->app->hook( | 
            
              | 53 |         $stash     = shift->stash; | 54 |         after_dispatch => sub { | 
            
              | 54 |         $interface = C4::Context->interface; | 55 |             $stash     = shift->stash; | 
            
              | 55 |         $userenv   = C4::Context->userenv; | 56 |             $interface = C4::Context->interface; | 
            
              | 56 |     }); | 57 |             $userenv   = C4::Context->userenv; | 
            
              |  |  | 58 |         } | 
            
              | 59 |     ); | 
        
          | 57 |  | 60 |  | 
          
            
              | 58 |     $t->get_ok("//$userid:$password@/api/v1/patrons") | 61 |     subtest '`userid` login' => sub { | 
            
              | 59 |       ->status_is( 200, 'Successful authentication and permissions check' ); |  |  | 
        
          | 60 |  | 62 |  | 
          
            
              | 61 |     my $user = $stash->{'koha.user'}; | 63 |         plan tests => 10; | 
            
              | 62 |     ok( defined $user, 'The \'koha.user\' object is defined in the stash') and |  |  | 
            
              | 63 |     is( ref($user), 'Koha::Patron', 'Stashed koha.user object type is Koha::Patron') and | 
            
              | 64 |     is( $user->borrowernumber, $patron->borrowernumber, 'The stashed user is the right one' ); | 
            
              | 65 |     is( $userenv->{number}, $patron->borrowernumber, 'userenv set correctly' ); | 
            
              | 66 |     is( $interface, 'api', "Interface correctly set to \'api\'" ); | 
        
          | 67 |  | 64 |  | 
          
            
              | 68 |     $patron->flags(undef)->store; | 65 |         $patron->flags( 2**4 )->store; | 
        
          | 69 |  | 66 |  | 
          
            
              | 70 |     $t->get_ok("//$userid:$password@/api/v1/patrons") | 67 |         $t->get_ok("//$userid:$password@/api/v1/patrons") | 
            
              | 71 |       ->status_is( 403, 'Successful authentication and not enough permissions' ) | 68 |             ->status_is( 200, 'Successful authentication and permissions check' ); | 
            
              | 72 |       ->json_is( | 69 |  | 
            
              | 73 |         '/error' => 'Authorization failure. Missing required permission(s).', | 70 |         my $user = $stash->{'koha.user'}; | 
            
              | 74 |         'Error message returned' | 71 |         ok( defined $user, 'The \'koha.user\' object is defined in the stash' ) | 
            
              | 75 |       ); | 72 |             and is( ref($user),            'Koha::Patron',          'Stashed koha.user object type is Koha::Patron' ) | 
            
              |  |  | 73 |             and is( $user->borrowernumber, $patron->borrowernumber, 'The stashed user is the right one' ); | 
            
              | 74 |         is( $userenv->{number}, $patron->borrowernumber, 'userenv set correctly' ); | 
            
              | 75 |         is( $interface,         'api',                   "Interface correctly set to \'api\'" ); | 
            
              | 76 |  | 
            
              | 77 |         $patron->flags(undef)->store; | 
            
              | 78 |  | 
            
              | 79 |         $t->get_ok("//$userid:$password@/api/v1/patrons") | 
            
              | 80 |             ->status_is( 403, 'Successful authentication and not enough permissions' )->json_is( | 
            
              | 81 |             '/error' => 'Authorization failure. Missing required permission(s).', | 
            
              | 82 |             'Error message returned' | 
            
              | 83 |             ); | 
            
              | 84 |     }; | 
            
              | 85 |  | 
            
              | 86 |     subtest '`cardnumber` login' => sub { | 
            
              | 87 |  | 
            
              | 88 |         plan tests => 10; | 
            
              | 89 |  | 
            
              | 90 |         $patron->flags( 2**4 )->store; | 
            
              | 91 |  | 
            
              | 92 |         $t->get_ok("//$cardnumber:$password@/api/v1/patrons") | 
            
              | 93 |             ->status_is( 200, 'Successful authentication and permissions check' ); | 
            
              | 94 |  | 
            
              | 95 |         my $user = $stash->{'koha.user'}; | 
            
              | 96 |         ok( defined $user, 'The \'koha.user\' object is defined in the stash' ) | 
            
              | 97 |             and is( ref($user),            'Koha::Patron',          'Stashed koha.user object type is Koha::Patron' ) | 
            
              | 98 |             and is( $user->borrowernumber, $patron->borrowernumber, 'The stashed user is the right one' ); | 
            
              | 99 |         is( $userenv->{number}, $patron->borrowernumber, 'userenv set correctly' ); | 
            
              | 100 |         is( $interface,         'api',                   "Interface correctly set to \'api\'" ); | 
            
              | 101 |  | 
            
              | 102 |         $patron->flags(undef)->store; | 
            
              | 103 |  | 
            
              | 104 |         $t->get_ok("//$cardnumber:$password@/api/v1/patrons") | 
            
              | 105 |             ->status_is( 403, 'Successful authentication and not enough permissions' )->json_is( | 
            
              | 106 |             '/error' => 'Authorization failure. Missing required permission(s).', | 
            
              | 107 |             'Error message returned' | 
            
              | 108 |             ); | 
            
              | 109 |     }; | 
        
          | 76 |  | 110 |  | 
        
          | 77 |     $schema->storage->txn_rollback; | 111 |     $schema->storage->txn_rollback; | 
        
          | 78 | }; | 112 | }; | 
            
              | 79 | -  |  |  |