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

(-)a/t/db_dependent/Koha/REST/Plugin/PluginRoutes.t (-7 / +34 lines)
Lines 38-43 BEGIN { Link Here
38
38
39
use Koha::Database;
39
use Koha::Database;
40
use Koha::Plugins;
40
use Koha::Plugins;
41
use t::lib::TestBuilder;
41
42
42
my $logger = Test::MockModule->new('Koha::Logger');
43
my $logger = Test::MockModule->new('Koha::Logger');
43
$logger->mock('error', sub {
44
$logger->mock('error', sub {
Lines 45-51 $logger->mock('error', sub { Link Here
45
    warn @_;
46
    warn @_;
46
});
47
});
47
48
48
my $schema = Koha::Database->new->schema;
49
my $schema  = Koha::Database->new->schema;
50
my $builder = t::lib::TestBuilder->new;
49
51
50
subtest 'Bad plugins tests' => sub {
52
subtest 'Bad plugins tests' => sub {
51
53
Lines 126-139 subtest 'Disabled plugins tests' => sub { Link Here
126
    $schema->storage->txn_rollback;
128
    $schema->storage->txn_rollback;
127
};
129
};
128
130
129
subtest 'Anonymous access routes plugins tests' => sub {
131
subtest 'Permissions and access to plugin routes tests' => sub {
130
132
131
    plan tests => 9;
133
    plan tests => 16;
132
134
133
    $schema->storage->txn_begin;
135
    $schema->storage->txn_begin;
134
136
135
    # enable plugins
137
    # enable plugins
136
    t::lib::Mocks::mock_config( 'enable_plugins', 1 );
138
    t::lib::Mocks::mock_config( 'enable_plugins', 1 );
139
    # enable BASIC auth
140
    t::lib::Mocks::mock_preference( 'RESTBasicAuth', 1 );
137
141
138
    # remove any existing plugins that might interfere
142
    # remove any existing plugins that might interfere
139
    Koha::Plugins::Methods->search->delete;
143
    Koha::Plugins::Methods->search->delete;
Lines 159-167 subtest 'Anonymous access routes plugins tests' => sub { Link Here
159
163
160
    C4::Context->set_preference( 'RESTPublicAnonymousRequests', 0 );
164
    C4::Context->set_preference( 'RESTPublicAnonymousRequests', 0 );
161
165
162
   $t->get_ok('/api/v1/contrib/testplugin/public/patrons/bother')
166
    $t->get_ok('/api/v1/contrib/testplugin/public/patrons/bother')
163
     ->status_is(200, 'Plugin routes not affected by RESTPublicAnonymousRequests')
167
      ->status_is(200, 'Plugin routes not affected by RESTPublicAnonymousRequests')
164
     ->json_is( { bothered => Mojo::JSON->true } );
168
      ->json_is( { bothered => Mojo::JSON->true } );
165
169
166
    C4::Context->set_preference( 'RESTPublicAnonymousRequests', 1 );
170
    C4::Context->set_preference( 'RESTPublicAnonymousRequests', 1 );
167
171
Lines 169-174 subtest 'Anonymous access routes plugins tests' => sub { Link Here
169
      ->status_is(200, 'Plugin routes not affected by RESTPublicAnonymousRequests')
173
      ->status_is(200, 'Plugin routes not affected by RESTPublicAnonymousRequests')
170
      ->json_is( { bothered => Mojo::JSON->true } );
174
      ->json_is( { bothered => Mojo::JSON->true } );
171
175
176
    $t->get_ok('/api/v1/contrib/testplugin/patrons/bother')
177
      ->status_is(401, 'Plugin routes honour permissions, anonymous access denied');
178
179
    # Create a patron with permissions, but the wrong ones: 3 => parameters
180
    my $librarian = $builder->build_object(
181
        {
182
            class => 'Koha::Patrons',
183
            value => { flags => 2**3 }
184
        }
185
    );
186
    my $password = 'thePassword123';
187
    $librarian->set_password( { password => $password, skip_validation => 1 } );
188
    my $userid = $librarian->userid;
189
190
    $t->get_ok("//$userid:$password@/api/v1/contrib/testplugin/patrons/bother")
191
      ->status_is(403, 'Plugin routes honour permissions, wrong permissions, access denied');
192
193
    # Set the patron permissions to the right ones: 4 => borrowers
194
    $librarian->set({ flags => 2 ** 4 })->store->discard_changes;
195
196
    $t->get_ok("//$userid:$password@/api/v1/contrib/testplugin/patrons/bother")
197
      ->status_is(200, 'Plugin routes honour permissions, right permissions, access granted')
198
      ->json_is( { bothered => Mojo::JSON->true } );
199
172
    $schema->storage->txn_rollback;
200
    $schema->storage->txn_rollback;
173
};
201
};
174
202
175
- 

Return to bug 26322