Lines 209-258
get '/build_query' => sub {
Link Here
|
209 |
get '/stash_embed' => sub { |
209 |
get '/stash_embed' => sub { |
210 |
my $c = shift; |
210 |
my $c = shift; |
211 |
|
211 |
|
212 |
try { |
212 |
$c->stash_embed(); |
213 |
$c->stash_embed( |
213 |
my $embed = $c->stash('koha.embed'); |
214 |
{ |
|
|
215 |
spec => { |
216 |
'x-koha-embed' => [ |
217 |
'checkouts', |
218 |
'checkouts.item', |
219 |
'library', |
220 |
'holds+count' |
221 |
] |
222 |
} |
223 |
} |
224 |
); |
225 |
|
226 |
$c->render( |
227 |
status => 200, |
228 |
json => $c->stash( 'koha.embed' ) |
229 |
); |
230 |
} |
231 |
catch { |
232 |
$c->render( |
233 |
status => 400, |
234 |
json => { error => "$_" } |
235 |
); |
236 |
}; |
237 |
}; |
238 |
|
214 |
|
239 |
get '/stash_embed_no_spec' => sub { |
215 |
$c->render( |
240 |
my $c = shift; |
216 |
status => 200, |
241 |
|
217 |
json => $embed |
242 |
try { |
218 |
); |
243 |
$c->stash_embed({ spec => {} }); |
|
|
244 |
|
245 |
$c->render( |
246 |
status => 200, |
247 |
json => $c->stash( 'koha.embed' ) |
248 |
); |
249 |
} |
250 |
catch { |
251 |
$c->render( |
252 |
status => 400, |
253 |
json => { error => "$_" } |
254 |
); |
255 |
}; |
256 |
}; |
219 |
}; |
257 |
|
220 |
|
258 |
get '/stash_overrides' => sub { |
221 |
get '/stash_overrides' => sub { |
Lines 466-503
subtest '_build_query_params_from_api' => sub {
Link Here
|
466 |
|
429 |
|
467 |
subtest 'stash_embed() tests' => sub { |
430 |
subtest 'stash_embed() tests' => sub { |
468 |
|
431 |
|
469 |
plan tests => 15; |
432 |
plan tests => 8; |
470 |
|
433 |
|
471 |
my $t = Test::Mojo->new; |
434 |
my $t = Test::Mojo->new; |
472 |
|
435 |
|
473 |
$t->get_ok( '/stash_embed' => { 'x-koha-embed' => 'checkouts,checkouts.item' } ) |
436 |
$t->get_ok( '/stash_embed' => { 'x-koha-embed' => 'checkouts,checkouts.item' } ) |
474 |
->status_is(200) |
437 |
->json_is( { checkouts => { children => { item => { } } } } ); |
475 |
->json_is( { checkouts => { children => { item => {} } } } ); |
|
|
476 |
|
438 |
|
477 |
$t->get_ok( '/stash_embed' => { 'x-koha-embed' => 'checkouts,checkouts.item,library' } ) |
439 |
$t->get_ok( '/stash_embed' => { 'x-koha-embed' => 'checkouts,checkouts.item,library' } ) |
478 |
->status_is(200) |
|
|
479 |
->json_is( { checkouts => { children => { item => {} } }, library => {} } ); |
440 |
->json_is( { checkouts => { children => { item => {} } }, library => {} } ); |
480 |
|
441 |
|
481 |
$t->get_ok( '/stash_embed' => { 'x-koha-embed' => 'holds+count' } ) |
442 |
$t->get_ok( '/stash_embed' => { 'x-koha-embed' => 'holds+count' } ) |
482 |
->status_is(200) |
|
|
483 |
->json_is( { holds_count => { is_count => 1 } } ); |
443 |
->json_is( { holds_count => { is_count => 1 } } ); |
484 |
|
444 |
|
485 |
$t->get_ok( '/stash_embed' => { 'x-koha-embed' => 'checkouts,checkouts.item,patron' } ) |
445 |
$t->get_ok( '/stash_embed' => { 'x-koha-embed' => 'checkouts,checkouts.item,patron' } ) |
486 |
->status_is(400) |
446 |
->json_is({ |
487 |
->json_is( |
447 |
checkouts => { children => { item => {} } }, |
488 |
{ |
448 |
patron => {} |
489 |
error => qq{Exception 'Koha::Exceptions::BadParameter' thrown 'Embeding patron is not authorised. Check your x-koha-embed headers or remove it.'\n} |
449 |
}); |
490 |
} |
|
|
491 |
); |
492 |
|
493 |
$t->get_ok( '/stash_embed_no_spec' => { 'x-koha-embed' => 'checkouts,checkouts.item,patron' } ) |
494 |
->status_is(400) |
495 |
->json_is( |
496 |
{ |
497 |
error => qq{Exception 'Koha::Exceptions::BadParameter' thrown 'Embedding objects is not allowed on this endpoint.'\n} |
498 |
} |
499 |
); |
500 |
|
501 |
}; |
450 |
}; |
502 |
|
451 |
|
503 |
subtest 'stash_overrides() tests' => sub { |
452 |
subtest 'stash_overrides() tests' => sub { |
504 |
- |
|
|