Lines 18-24
Link Here
|
18 |
use Modern::Perl; |
18 |
use Modern::Perl; |
19 |
|
19 |
|
20 |
use Test::NoWarnings; |
20 |
use Test::NoWarnings; |
21 |
use Test::More tests => 4; |
21 |
use Test::More tests => 5; |
22 |
use Test::Mojo; |
22 |
use Test::Mojo; |
23 |
|
23 |
|
24 |
use t::lib::TestBuilder; |
24 |
use t::lib::TestBuilder; |
Lines 27-32
use t::lib::Mocks;
Link Here
|
27 |
use Koha::Cities; |
27 |
use Koha::Cities; |
28 |
use Koha::Database; |
28 |
use Koha::Database; |
29 |
|
29 |
|
|
|
30 |
use JSON qw(encode_json); |
31 |
|
30 |
my $schema = Koha::Database->new->schema; |
32 |
my $schema = Koha::Database->new->schema; |
31 |
my $builder = t::lib::TestBuilder->new; |
33 |
my $builder = t::lib::TestBuilder->new; |
32 |
|
34 |
|
Lines 97-102
subtest 'q handling tests' => sub {
Link Here
|
97 |
$schema->storage->txn_rollback; |
99 |
$schema->storage->txn_rollback; |
98 |
}; |
100 |
}; |
99 |
|
101 |
|
|
|
102 |
subtest 'q in body handling tests' => sub { |
103 |
|
104 |
plan tests => 15; |
105 |
|
106 |
$schema->storage->txn_begin; |
107 |
|
108 |
my $librarian = $builder->build_object( |
109 |
{ |
110 |
class => 'Koha::Patrons', |
111 |
value => { flags => 2**2 } # catalogue flag = 2 |
112 |
} |
113 |
); |
114 |
my $password = 'thePassword123'; |
115 |
$librarian->set_password( { password => $password, skip_validation => 1 } ); |
116 |
my $userid = $librarian->userid; |
117 |
|
118 |
# delete all cities |
119 |
Koha::Cities->new->delete; |
120 |
|
121 |
# No cities, so empty array should be returned |
122 |
$t->get_ok("//$userid:$password@/api/v1/cities")->status_is(200)->json_is( [] ); |
123 |
|
124 |
my $names = [ 'AA', 'BA', 'BA', 'CA', 'DA', 'EB', 'FB', 'GB', 'HB', 'IB', ]; |
125 |
|
126 |
# Add 10 cities |
127 |
foreach my $i ( 0 .. 9 ) { |
128 |
$builder->build_object( { class => 'Koha::Cities', value => { city_name => $names->[$i] } } ); |
129 |
} |
130 |
|
131 |
t::lib::Mocks::mock_preference( 'RESTdefaultPageSize', 20 ); |
132 |
|
133 |
my $q_ends_with_a = { "name" => { "-like" => '%A' } }; |
134 |
my $q_ends_with_a_str = encode_json($q_ends_with_a); |
135 |
|
136 |
my $cities = |
137 |
$t->get_ok( "//$userid:$password@/api/v1/cities" => json => $q_ends_with_a )->status_is(200)->tx->res->json; |
138 |
|
139 |
is( scalar @{$cities}, 5, '5 cities retrieved' ); |
140 |
|
141 |
my $q_starts_with_a = { "name" => { "-like" => 'A%' } }; |
142 |
my $q_starts_with_a_str = encode_json($q_starts_with_a); |
143 |
|
144 |
$cities = |
145 |
$t->get_ok( "//$userid:$password@/api/v1/cities?q=$q_starts_with_a_str" => json => $q_ends_with_a ) |
146 |
->status_is(200)->tx->res->json; |
147 |
|
148 |
is( scalar @{$cities}, 1, 'Mixing query parameter and body, 1 city retrieved' ); |
149 |
|
150 |
$cities = |
151 |
$t->get_ok( "//$userid:$password@/api/v1/cities?q=$q_ends_with_a_str" => json => $q_starts_with_a ) |
152 |
->status_is(200)->tx->res->json; |
153 |
|
154 |
is( scalar @{$cities}, 1, 'Mixing query parameter and body (flipped), 1 city retrieved' ); |
155 |
|
156 |
$cities = |
157 |
$t->get_ok( "//$userid:$password@/api/v1/cities" => json => { "-and" => [ $q_ends_with_a, $q_starts_with_a ] } ) |
158 |
->status_is(200)->tx->res->json; |
159 |
|
160 |
is( scalar @{$cities}, 1, 'Body query is passed through, 1 city retrieved' ); |
161 |
|
162 |
$schema->storage->txn_rollback; |
163 |
}; |
164 |
|
100 |
subtest 'x-koha-embed tests' => sub { |
165 |
subtest 'x-koha-embed tests' => sub { |
101 |
|
166 |
|
102 |
plan tests => 8; |
167 |
plan tests => 8; |
Lines 123-129
subtest 'x-koha-embed tests' => sub {
Link Here
|
123 |
$res = $t->get_ok( "//$userid:$password@/api/v1/patrons?q={\"me.patron_id\":$patron_id}" => |
188 |
$res = $t->get_ok( "//$userid:$password@/api/v1/patrons?q={\"me.patron_id\":$patron_id}" => |
124 |
{ 'x-koha-embed' => 'extended_attributes,custom_bad_embed,another_bad_embed' } )->status_is(400); |
189 |
{ 'x-koha-embed' => 'extended_attributes,custom_bad_embed,another_bad_embed' } )->status_is(400); |
125 |
|
190 |
|
126 |
$res = $t->get_ok( "//$userid:$password@/api/v1/cities" => { 'x-koha-embed' => 'any_embed' } )->status_is(400) |
191 |
$res = |
|
|
192 |
$t->get_ok( "//$userid:$password@/api/v1/cities" => { 'x-koha-embed' => 'any_embed' } )->status_is(400) |
127 |
->tx->res->json; |
193 |
->tx->res->json; |
128 |
|
194 |
|
129 |
is( $res, 'Embedding objects is not allowed on this endpoint.', 'Correct error message is returned' ); |
195 |
is( $res, 'Embedding objects is not allowed on this endpoint.', 'Correct error message is returned' ); |
130 |
- |
|
|