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

(-)a/t/db_dependent/api/v1/acquisitions_orders.t (-10 / +10 lines)
Lines 77-83 subtest 'list() tests' => sub { Link Here
77
    my $count_of_orders = Koha::Acquisition::Orders->search( { orderstatus => 'new' } )->count;
77
    my $count_of_orders = Koha::Acquisition::Orders->search( { orderstatus => 'new' } )->count;
78
    # Make sure we are returned with the correct amount of orders
78
    # Make sure we are returned with the correct amount of orders
79
    $t->get_ok( "//$userid:$password@/api/v1/acquisitions/orders?status=new&_per_page=-1" )
79
    $t->get_ok( "//$userid:$password@/api/v1/acquisitions/orders?status=new&_per_page=-1" )
80
      ->status_is( 200, 'SWAGGER3.2.2' )
80
      ->status_is( 200, 'REST3.2.2' )
81
      ->json_has('/'.($count_of_orders-1).'/order_id')
81
      ->json_has('/'.($count_of_orders-1).'/order_id')
82
      ->json_hasnt('/'.($count_of_orders).'/order_id');
82
      ->json_hasnt('/'.($count_of_orders).'/order_id');
83
83
Lines 247-254 subtest 'get() tests' => sub { Link Here
247
    my $userid = $patron->userid;
247
    my $userid = $patron->userid;
248
248
249
    $t->get_ok( "//$userid:$password@/api/v1/acquisitions/orders/" . $order->ordernumber )
249
    $t->get_ok( "//$userid:$password@/api/v1/acquisitions/orders/" . $order->ordernumber )
250
      ->status_is( 200, 'SWAGGER3.2.2' )
250
      ->status_is( 200, 'REST3.2.2' )
251
      ->json_is( '' => $order->to_api, 'SWAGGER3.3.2' );
251
      ->json_is( '' => $order->to_api, 'REST3.3.2' );
252
252
253
    my $non_existent_order_id = $order->ordernumber;
253
    my $non_existent_order_id = $order->ordernumber;
254
    $order->delete;
254
    $order->delete;
Lines 339-347 subtest 'add() tests' => sub { Link Here
339
339
340
    # Authorized attempt to write
340
    # Authorized attempt to write
341
    $t->post_ok( "//$auth_userid:$password@/api/v1/acquisitions/orders" => json => $order )
341
    $t->post_ok( "//$auth_userid:$password@/api/v1/acquisitions/orders" => json => $order )
342
      ->status_is( 201, 'SWAGGER3.2.1' )
342
      ->status_is( 201, 'REST3.2.1' )
343
      ->json_is( '/internal_note' => $order->{internal_note}, 'SWAGGER3.3.1' )
343
      ->json_is( '/internal_note' => $order->{internal_note}, 'REST3.3.1' )
344
      ->header_like( Location => qr/\/api\/v1\/acquisitions\/orders\/\d*/, 'SWAGGER3.4.1' );
344
      ->header_like( Location => qr/\/api\/v1\/acquisitions\/orders\/\d*/, 'REST3.4.1' );
345
345
346
    # save the order_id
346
    # save the order_id
347
    my $order_id = $order->{order_id};
347
    my $order_id = $order->{order_id};
Lines 425-432 subtest 'update() tests' => sub { Link Here
425
    $deleted_library->delete;
425
    $deleted_library->delete;
426
426
427
    $t->put_ok( "//$auth_userid:$password@/api/v1/libraries/$library_id" => json => $library_with_updated_field )
427
    $t->put_ok( "//$auth_userid:$password@/api/v1/libraries/$library_id" => json => $library_with_updated_field )
428
      ->status_is(200, 'SWAGGER3.2.1')
428
      ->status_is(200, 'REST3.2.1')
429
      ->json_is( '' => $library_with_updated_field, 'SWAGGER3.3.3' );
429
      ->json_is( '' => $library_with_updated_field, 'REST3.3.3' );
430
430
431
    # Authorized attempt to write invalid data
431
    # Authorized attempt to write invalid data
432
    my $library_with_invalid_field = { %$library_with_updated_field };
432
    my $library_with_invalid_field = { %$library_with_updated_field };
Lines 481-488 subtest 'delete() tests' => sub { Link Here
481
    $t->delete_ok( "//$auth_userid:$password@/api/v1/acquisitions/orders/" . $order->ordernumber )->status_is(409);
481
    $t->delete_ok( "//$auth_userid:$password@/api/v1/acquisitions/orders/" . $order->ordernumber )->status_is(409);
482
    $order->orderstatus('cancelled')->store;
482
    $order->orderstatus('cancelled')->store;
483
    $t->delete_ok( "//$auth_userid:$password@/api/v1/acquisitions/orders/" . $order->ordernumber )
483
    $t->delete_ok( "//$auth_userid:$password@/api/v1/acquisitions/orders/" . $order->ordernumber )
484
      ->status_is(204, 'SWAGGER3.2.4')
484
      ->status_is(204, 'REST3.2.4')
485
      ->content_is('', 'SWAGGER3.3.4');
485
      ->content_is('', 'REST3.3.4');
486
    $t->delete_ok( "//$auth_userid:$password@/api/v1/acquisitions/orders/" . $order->ordernumber )
486
    $t->delete_ok( "//$auth_userid:$password@/api/v1/acquisitions/orders/" . $order->ordernumber )
487
      ->status_is(404);
487
      ->status_is(404);
488
488
(-)a/t/db_dependent/api/v1/acquisitions_vendors.t (-8 / +8 lines)
Lines 108-115 subtest 'list() and delete() tests | authorized user' => sub { Link Here
108
        ->json_is( '/0/subscriptions_count' => '2', 'subscription count is 2' );
108
        ->json_is( '/0/subscriptions_count' => '2', 'subscription count is 2' );
109
109
110
    $t->delete_ok( "//$userid:$password@/api/v1/acquisitions/vendors/" . $vendor->id )
110
    $t->delete_ok( "//$userid:$password@/api/v1/acquisitions/vendors/" . $vendor->id )
111
      ->status_is(204, 'SWAGGER3.2.4')
111
      ->status_is(204, 'REST3.2.4')
112
      ->content_is('', 'SWAGGER3.3.4');
112
      ->content_is('', 'REST3.3.4');
113
113
114
    $t->get_ok( "//$userid:$password@/api/v1/acquisitions/vendors" )
114
    $t->get_ok( "//$userid:$password@/api/v1/acquisitions/vendors" )
115
      ->status_is(200)
115
      ->status_is(200)
Lines 117-124 subtest 'list() and delete() tests | authorized user' => sub { Link Here
117
      ->json_hasnt( '/1', 'Only one vendor' );
117
      ->json_hasnt( '/1', 'Only one vendor' );
118
118
119
    $t->delete_ok( "//$userid:$password@/api/v1/acquisitions/vendors/" . $other_vendor->id )
119
    $t->delete_ok( "//$userid:$password@/api/v1/acquisitions/vendors/" . $other_vendor->id )
120
      ->status_is(204, 'SWAGGER3.2.4')
120
      ->status_is(204, 'REST3.2.4')
121
      ->content_is('', 'SWAGGER3.3.4');
121
      ->content_is('', 'REST3.3.4');
122
122
123
    $t->get_ok( "//$userid:$password@/api/v1/acquisitions/vendors" )
123
    $t->get_ok( "//$userid:$password@/api/v1/acquisitions/vendors" )
124
      ->status_is(200)
124
      ->status_is(200)
Lines 209-216 subtest 'add() tests' => sub { Link Here
209
209
210
    # Authorized attempt to write
210
    # Authorized attempt to write
211
    $t->post_ok( "//$auth_userid:$password@/api/v1/acquisitions/vendors" => json => $vendor )
211
    $t->post_ok( "//$auth_userid:$password@/api/v1/acquisitions/vendors" => json => $vendor )
212
      ->status_is( 201, 'SWAGGER3 .2.1' )
212
      ->status_is( 201, 'REST3 .2.1' )
213
      ->header_like( Location => qr|^\/api\/v1\/acquisitions\/vendors/\d*|, 'SWAGGER3.4.1')
213
      ->header_like( Location => qr|^\/api\/v1\/acquisitions\/vendors/\d*|, 'REST3.4.1')
214
      ->json_is( '/name' => $vendor->{name} )
214
      ->json_is( '/name' => $vendor->{name} )
215
      ->json_is( '/address1' => $vendor->{address1} );
215
      ->json_is( '/address1' => $vendor->{address1} );
216
216
Lines 346-353 subtest 'delete() tests' => sub { Link Here
346
      ->status_is(403);
346
      ->status_is(403);
347
347
348
    $t->delete_ok( "//$auth_userid:$password@/api/v1/acquisitions/vendors/" . $vendor->id )
348
    $t->delete_ok( "//$auth_userid:$password@/api/v1/acquisitions/vendors/" . $vendor->id )
349
      ->status_is(204, 'SWAGGER3.2.4')
349
      ->status_is(204, 'REST3.2.4')
350
      ->content_is('', 'SWAGGER3.3.4');
350
      ->content_is('', 'REST3.3.4');
351
351
352
    $t->delete_ok( "//$auth_userid:$password@/api/v1/acquisitions/vendors/" . $vendor->id )
352
    $t->delete_ok( "//$auth_userid:$password@/api/v1/acquisitions/vendors/" . $vendor->id )
353
      ->status_is(404);
353
      ->status_is(404);
(-)a/t/db_dependent/api/v1/advanced_editor_macros.t (-2 / +2 lines)
Lines 88-94 subtest 'list() tests' => sub { Link Here
88
    ## Authorized user tests
88
    ## Authorized user tests
89
    # Make sure we are returned with the correct amount of macros
89
    # Make sure we are returned with the correct amount of macros
90
    $t->get_ok( "//$userid:$password@/api/v1/advanced_editor/macros" )
90
    $t->get_ok( "//$userid:$password@/api/v1/advanced_editor/macros" )
91
      ->status_is( 200, 'SWAGGER3.2.2' )
91
      ->status_is( 200, 'REST3.2.2' )
92
      ->json_has('/' . $macros_index . '/macro_id')
92
      ->json_has('/' . $macros_index . '/macro_id')
93
      ->json_hasnt('/' . ($macros_index + 1) . '/macro_id');
93
      ->json_hasnt('/' . ($macros_index + 1) . '/macro_id');
94
94
Lines 227-233 subtest 'add() tests' => sub { Link Here
227
227
228
    # Authorized attempt to write
228
    # Authorized attempt to write
229
    $t->post_ok( "//$auth_userid:$password@/api/v1/advanced_editor/macros" => json => $macro_values )
229
    $t->post_ok( "//$auth_userid:$password@/api/v1/advanced_editor/macros" => json => $macro_values )
230
      ->status_is( 201, 'SWAGGER3.2.1' )
230
      ->status_is( 201, 'REST3.2.1' )
231
      ->json_has( '/macro_id', 'We generated a new id' )
231
      ->json_has( '/macro_id', 'We generated a new id' )
232
      ->json_is( '/name' => $macro_values->{name}, 'The name matches what we supplied' )
232
      ->json_is( '/name' => $macro_values->{name}, 'The name matches what we supplied' )
233
      ->json_is( '/macro_text' => $macro_values->{macro_text}, 'The text matches what we supplied' )
233
      ->json_is( '/macro_text' => $macro_values->{macro_text}, 'The text matches what we supplied' )
(-)a/t/db_dependent/api/v1/article_requests.t (-3 / +3 lines)
Lines 70-76 subtest 'cancel() tests' => sub { Link Here
70
    $t->delete_ok( "//$userid:$password@/api/v1/article_requests/"
70
    $t->delete_ok( "//$userid:$password@/api/v1/article_requests/"
71
          . $article_request->id
71
          . $article_request->id
72
          . "?cancellation_reason=$reason&notes=$notes" )
72
          . "?cancellation_reason=$reason&notes=$notes" )
73
      ->status_is( 204, 'SWAGGER3.2.4' )->content_is( q{}, 'SWAGGER3.2.4' );
73
      ->status_is( 204, 'REST3.2.4' )->content_is( q{}, 'REST3.2.4' );
74
74
75
    # refresh object
75
    # refresh object
76
    $article_request->discard_changes;
76
    $article_request->discard_changes;
Lines 146-153 subtest 'patron_cancel() tests' => sub { Link Here
146
        "//$userid:$password@/api/v1/public/patrons/$patron_id/article_requests/"
146
        "//$userid:$password@/api/v1/public/patrons/$patron_id/article_requests/"
147
          . $article_request->id
147
          . $article_request->id
148
          . "?cancellation_reason=$reason&notes=$notes" )
148
          . "?cancellation_reason=$reason&notes=$notes" )
149
      ->status_is( 204, 'SWAGGER3.2.4' )
149
      ->status_is( 204, 'REST3.2.4' )
150
      ->content_is( q{}, 'SWAGGER3.2.4' );
150
      ->content_is( q{}, 'REST3.2.4' );
151
151
152
    # refresh object
152
    # refresh object
153
    $article_request->discard_changes;
153
    $article_request->discard_changes;
(-)a/t/db_dependent/api/v1/authorities.t (-2 / +2 lines)
Lines 146-153 subtest 'delete() tests' => sub { Link Here
146
    $patron->flags( 2 ** 14 )->store; # 14 => editauthorities userflag
146
    $patron->flags( 2 ** 14 )->store; # 14 => editauthorities userflag
147
147
148
    $t->delete_ok("//$userid:$password@/api/v1/authorities/".$authority->id)
148
    $t->delete_ok("//$userid:$password@/api/v1/authorities/".$authority->id)
149
      ->status_is(204, 'SWAGGER3.2.4')
149
      ->status_is(204, 'REST3.2.4')
150
      ->content_is('', 'SWAGGER3.3.4');
150
      ->content_is('', 'REST3.3.4');
151
151
152
    $t->delete_ok("//$userid:$password@/api/v1/authorities/".$authority->id)
152
    $t->delete_ok("//$userid:$password@/api/v1/authorities/".$authority->id)
153
      ->status_is(404);
153
      ->status_is(404);
(-)a/t/db_dependent/api/v1/bookings.t (-4 / +4 lines)
Lines 255-262 subtest 'add() tests' => sub { Link Here
255
255
256
    # Authorized attempt to write
256
    # Authorized attempt to write
257
    my $booking_id =
257
    my $booking_id =
258
        $t->post_ok( "//$userid:$password@/api/v1/bookings" => json => $booking )->status_is( 201, 'SWAGGER3.2.1' )
258
        $t->post_ok( "//$userid:$password@/api/v1/bookings" => json => $booking )->status_is( 201, 'REST3.2.1' )
259
        ->header_like( Location => qr|^\/api\/v1\/bookings/\d*|, 'SWAGGER3.4.1' )
259
        ->header_like( Location => qr|^\/api\/v1\/bookings/\d*|, 'REST3.4.1' )
260
        ->json_is( '/biblio_id' => $biblio->id )->tx->res->json->{booking_id};
260
        ->json_is( '/biblio_id' => $biblio->id )->tx->res->json->{booking_id};
261
261
262
    # Authorized attempt to create with null id
262
    # Authorized attempt to create with null id
Lines 430-437 subtest 'delete() tests' => sub { Link Here
430
    # Unauthorized attempt to delete
430
    # Unauthorized attempt to delete
431
    $t->delete_ok("//$unauth_userid:$password@/api/v1/bookings/$booking_id")->status_is(403);
431
    $t->delete_ok("//$unauth_userid:$password@/api/v1/bookings/$booking_id")->status_is(403);
432
432
433
    $t->delete_ok("//$userid:$password@/api/v1/bookings/$booking_id")->status_is( 204, 'SWAGGER3.2.4' )
433
    $t->delete_ok("//$userid:$password@/api/v1/bookings/$booking_id")->status_is( 204, 'REST3.2.4' )
434
        ->content_is( '', 'SWAGGER3.3.4' );
434
        ->content_is( '', 'REST3.3.4' );
435
435
436
    $t->delete_ok("//$userid:$password@/api/v1/bookings/$booking_id")->status_is(404);
436
    $t->delete_ok("//$userid:$password@/api/v1/bookings/$booking_id")->status_is(404);
437
437
(-)a/t/db_dependent/api/v1/cities.t (-4 / +4 lines)
Lines 212-221 subtest 'add() tests' => sub { Link Here
212
    # Authorized attempt to write
212
    # Authorized attempt to write
213
    my $city_id =
213
    my $city_id =
214
      $t->post_ok( "//$userid:$password@/api/v1/cities" => json => $city )
214
      $t->post_ok( "//$userid:$password@/api/v1/cities" => json => $city )
215
        ->status_is( 201, 'SWAGGER3.2.1' )
215
        ->status_is( 201, 'REST3.2.1' )
216
        ->header_like(
216
        ->header_like(
217
            Location => qr|^\/api\/v1\/cities/\d*|,
217
            Location => qr|^\/api\/v1\/cities/\d*|,
218
            'SWAGGER3.4.1'
218
            'REST3.4.1'
219
            )
219
            )
220
        ->json_is( '/name'        => $city->{name} )
220
        ->json_is( '/name'        => $city->{name} )
221
        ->json_is( '/state'       => $city->{state} )
221
        ->json_is( '/state'       => $city->{state} )
Lines 370-377 subtest 'delete() tests' => sub { Link Here
370
      ->status_is(403);
370
      ->status_is(403);
371
371
372
    $t->delete_ok("//$userid:$password@/api/v1/cities/$city_id")
372
    $t->delete_ok("//$userid:$password@/api/v1/cities/$city_id")
373
      ->status_is(204, 'SWAGGER3.2.4')
373
      ->status_is(204, 'REST3.2.4')
374
      ->content_is('', 'SWAGGER3.3.4');
374
      ->content_is('', 'REST3.3.4');
375
375
376
    $t->delete_ok("//$userid:$password@/api/v1/cities/$city_id")
376
    $t->delete_ok("//$userid:$password@/api/v1/cities/$city_id")
377
      ->status_is(404);
377
      ->status_is(404);
(-)a/t/db_dependent/api/v1/erm_agreements.t (-3 / +3 lines)
Lines 303-311 subtest 'add() tests' => sub { Link Here
303
    my $agreement_id =
303
    my $agreement_id =
304
      $t->post_ok(
304
      $t->post_ok(
305
        "//$userid:$password@/api/v1/erm/agreements" => json => $agreement )
305
        "//$userid:$password@/api/v1/erm/agreements" => json => $agreement )
306
      ->status_is( 201, 'SWAGGER3.2.1' )->header_like(
306
      ->status_is( 201, 'REST3.2.1' )->header_like(
307
        Location => qr|^/api/v1/erm/agreements/\d*|,
307
        Location => qr|^/api/v1/erm/agreements/\d*|,
308
        'SWAGGER3.4.1'
308
        'REST3.4.1'
309
    )->json_is( '/vendor_id' => $agreement->{vendor_id} )
309
    )->json_is( '/vendor_id' => $agreement->{vendor_id} )
310
      ->json_is( '/name'             => $agreement->{name} )
310
      ->json_is( '/name'             => $agreement->{name} )
311
      ->json_is( '/description'      => $agreement->{description} )
311
      ->json_is( '/description'      => $agreement->{description} )
Lines 483-489 subtest 'delete() tests' => sub { Link Here
483
483
484
    # Delete existing agreement
484
    # Delete existing agreement
485
    $t->delete_ok("//$userid:$password@/api/v1/erm/agreements/$agreement_id")
485
    $t->delete_ok("//$userid:$password@/api/v1/erm/agreements/$agreement_id")
486
      ->status_is( 204, 'SWAGGER3.2.4' )->content_is( '', 'SWAGGER3.3.4' );
486
      ->status_is( 204, 'REST3.2.4' )->content_is( '', 'REST3.3.4' );
487
487
488
    # Attempt to delete non-existent agreement
488
    # Attempt to delete non-existent agreement
489
    $t->delete_ok("//$userid:$password@/api/v1/erm/agreements/$agreement_id")
489
    $t->delete_ok("//$userid:$password@/api/v1/erm/agreements/$agreement_id")
(-)a/t/db_dependent/api/v1/erm_counter_files.t (-2 / +2 lines)
Lines 191-198 subtest 'delete() tests' => sub { Link Here
191
    $t->delete_ok("//$unauth_userid:$password@/api/v1/erm/counter_files/$counter_file_id")->status_is(403);
191
    $t->delete_ok("//$unauth_userid:$password@/api/v1/erm/counter_files/$counter_file_id")->status_is(403);
192
192
193
    # Delete existing counter_file
193
    # Delete existing counter_file
194
    $t->delete_ok("//$userid:$password@/api/v1/erm/counter_files/$counter_file_id")->status_is( 204, 'SWAGGER3.2.4' )
194
    $t->delete_ok("//$userid:$password@/api/v1/erm/counter_files/$counter_file_id")->status_is( 204, 'REST3.2.4' )
195
        ->content_is( '', 'SWAGGER3.3.4' );
195
        ->content_is( '', 'REST3.3.4' );
196
196
197
    # Attempt to delete non-existent counter_file
197
    # Attempt to delete non-existent counter_file
198
    $t->delete_ok("//$userid:$password@/api/v1/erm/counter_files/$counter_file_id")->status_is(404);
198
    $t->delete_ok("//$userid:$password@/api/v1/erm/counter_files/$counter_file_id")->status_is(404);
(-)a/t/db_dependent/api/v1/erm_eholdings_packages.t (-3 / +3 lines)
Lines 262-270 subtest 'add() tests' => sub { Link Here
262
    my $ehpackage_id =
262
    my $ehpackage_id =
263
      $t->post_ok(
263
      $t->post_ok(
264
        "//$userid:$password@/api/v1/erm/eholdings/local/packages" => json =>
264
        "//$userid:$password@/api/v1/erm/eholdings/local/packages" => json =>
265
          $ehpackage )->status_is( 201, 'SWAGGER3.2.1' )->header_like(
265
          $ehpackage )->status_is( 201, 'REST3.2.1' )->header_like(
266
        Location => qr|^/api/v1/erm/eholdings/local/packages/\d*|,
266
        Location => qr|^/api/v1/erm/eholdings/local/packages/\d*|,
267
        'SWAGGER3.4.1'
267
        'REST3.4.1'
268
    )->json_is( '/name' => $ehpackage->{name} )
268
    )->json_is( '/name' => $ehpackage->{name} )
269
      ->json_is( '/print_identifier' => $ehpackage->{print_identifier} )
269
      ->json_is( '/print_identifier' => $ehpackage->{print_identifier} )
270
      ->json_is( '/notes'            => $ehpackage->{notes} )
270
      ->json_is( '/notes'            => $ehpackage->{notes} )
Lines 426-432 subtest 'delete() tests' => sub { Link Here
426
    # Delete existing EHolding package
426
    # Delete existing EHolding package
427
    $t->delete_ok(
427
    $t->delete_ok(
428
        "//$userid:$password@/api/v1/erm/eholdings/local/packages/$ehpackage_id"
428
        "//$userid:$password@/api/v1/erm/eholdings/local/packages/$ehpackage_id"
429
    )->status_is( 204, 'SWAGGER3.2.4' )->content_is( '', 'SWAGGER3.3.4' );
429
    )->status_is( 204, 'REST3.2.4' )->content_is( '', 'REST3.3.4' );
430
430
431
    # Attempt to delete non-existent EHolding package
431
    # Attempt to delete non-existent EHolding package
432
    $t->delete_ok(
432
    $t->delete_ok(
(-)a/t/db_dependent/api/v1/erm_eholdings_titles.t (-3 / +3 lines)
Lines 275-283 subtest 'add() tests' => sub { Link Here
275
    my $ehtitle_id =
275
    my $ehtitle_id =
276
      $t->post_ok(
276
      $t->post_ok(
277
        "//$userid:$password@/api/v1/erm/eholdings/local/titles" => json =>
277
        "//$userid:$password@/api/v1/erm/eholdings/local/titles" => json =>
278
          $ehtitle )->status_is( 201, 'SWAGGER3.2.1' )->header_like(
278
          $ehtitle )->status_is( 201, 'REST3.2.1' )->header_like(
279
        Location => qr|^/api/v1/erm/eholdings/local/titles/\d*|,
279
        Location => qr|^/api/v1/erm/eholdings/local/titles/\d*|,
280
        'SWAGGER3.4.1'
280
        'REST3.4.1'
281
    )->json_is( '/publication_title' => $ehtitle->{publication_title} )
281
    )->json_is( '/publication_title' => $ehtitle->{publication_title} )
282
      ->json_is( '/print_identifier' => $ehtitle->{print_identifier} )
282
      ->json_is( '/print_identifier' => $ehtitle->{print_identifier} )
283
      ->json_is( '/notes'            => $ehtitle->{notes} )
283
      ->json_is( '/notes'            => $ehtitle->{notes} )
Lines 550-556 subtest 'delete() tests' => sub { Link Here
550
    # Delete existing EHolding title
550
    # Delete existing EHolding title
551
    $t->delete_ok(
551
    $t->delete_ok(
552
        "//$userid:$password@/api/v1/erm/eholdings/local/titles/$ehtitle_id")
552
        "//$userid:$password@/api/v1/erm/eholdings/local/titles/$ehtitle_id")
553
      ->status_is( 204, 'SWAGGER3.2.4' )->content_is( '', 'SWAGGER3.3.4' );
553
      ->status_is( 204, 'REST3.2.4' )->content_is( '', 'REST3.3.4' );
554
554
555
    # Attempt to delete non-existent EHolding title
555
    # Attempt to delete non-existent EHolding title
556
    $t->delete_ok(
556
    $t->delete_ok(
(-)a/t/db_dependent/api/v1/erm_licenses.t (-3 / +3 lines)
Lines 249-257 subtest 'add() tests' => sub { Link Here
249
    my $license_id =
249
    my $license_id =
250
      $t->post_ok(
250
      $t->post_ok(
251
        "//$userid:$password@/api/v1/erm/licenses" => json => $license )
251
        "//$userid:$password@/api/v1/erm/licenses" => json => $license )
252
      ->status_is( 201, 'SWAGGER3.2.1' )->header_like(
252
      ->status_is( 201, 'REST3.2.1' )->header_like(
253
        Location => qr|^/api/v1/erm/licenses/\d*|,
253
        Location => qr|^/api/v1/erm/licenses/\d*|,
254
        'SWAGGER3.4.1'
254
        'REST3.4.1'
255
    )->json_is( '/name'             => $license->{name} )
255
    )->json_is( '/name'             => $license->{name} )
256
      ->json_is( '/description'     => $license->{description} )
256
      ->json_is( '/description'     => $license->{description} )
257
      ->json_is( '/type'            => $license->{type} )
257
      ->json_is( '/type'            => $license->{type} )
Lines 421-427 subtest 'delete() tests' => sub { Link Here
421
421
422
    # Delete existing license
422
    # Delete existing license
423
    $t->delete_ok("//$userid:$password@/api/v1/erm/licenses/$license_id")
423
    $t->delete_ok("//$userid:$password@/api/v1/erm/licenses/$license_id")
424
      ->status_is( 204, 'SWAGGER3.2.4' )->content_is( '', 'SWAGGER3.3.4' );
424
      ->status_is( 204, 'REST3.2.4' )->content_is( '', 'REST3.3.4' );
425
425
426
    # Attempt to delete non-existent license
426
    # Attempt to delete non-existent license
427
    $t->delete_ok("//$userid:$password@/api/v1/erm/licenses/$license_id")
427
    $t->delete_ok("//$userid:$password@/api/v1/erm/licenses/$license_id")
(-)a/t/db_dependent/api/v1/erm_usage_data_providers.t (-3 / +3 lines)
Lines 240-248 subtest 'add() tests' => sub { Link Here
240
    # Authorized attempt to write
240
    # Authorized attempt to write
241
    my $usage_data_provider_id =
241
    my $usage_data_provider_id =
242
        $t->post_ok( "//$userid:$password@/api/v1/erm/usage_data_providers" => json => $usage_data_provider )
242
        $t->post_ok( "//$userid:$password@/api/v1/erm/usage_data_providers" => json => $usage_data_provider )
243
        ->status_is( 201, 'SWAGGER3.2.1' )->header_like(
243
        ->status_is( 201, 'REST3.2.1' )->header_like(
244
        Location => qr|^/api/v1/erm/usage_data_providers/\d*|,
244
        Location => qr|^/api/v1/erm/usage_data_providers/\d*|,
245
        'SWAGGER3.4.1'
245
        'REST3.4.1'
246
    )->json_is( '/name' => $usage_data_provider->{name} )
246
    )->json_is( '/name' => $usage_data_provider->{name} )
247
        ->json_is( '/customer_id'    => $usage_data_provider->{customer_id} )
247
        ->json_is( '/customer_id'    => $usage_data_provider->{customer_id} )
248
        ->json_is( '/requestor_id'   => $usage_data_provider->{requestor_id} )
248
        ->json_is( '/requestor_id'   => $usage_data_provider->{requestor_id} )
Lines 401-407 subtest 'delete() tests' => sub { Link Here
401
401
402
    # Delete existing usage_data_provider
402
    # Delete existing usage_data_provider
403
    $t->delete_ok("//$userid:$password@/api/v1/erm/usage_data_providers/$usage_data_provider_id")
403
    $t->delete_ok("//$userid:$password@/api/v1/erm/usage_data_providers/$usage_data_provider_id")
404
        ->status_is( 204, 'SWAGGER3.2.4' )->content_is( '', 'SWAGGER3.3.4' );
404
        ->status_is( 204, 'REST3.2.4' )->content_is( '', 'REST3.3.4' );
405
405
406
    # Attempt to delete non-existent usage_data_provider
406
    # Attempt to delete non-existent usage_data_provider
407
    $t->delete_ok("//$userid:$password@/api/v1/erm/usage_data_providers/$usage_data_provider_id")->status_is(404);
407
    $t->delete_ok("//$userid:$password@/api/v1/erm/usage_data_providers/$usage_data_provider_id")->status_is(404);
(-)a/t/db_dependent/api/v1/item_groups.t (-12 / +12 lines)
Lines 55-75 subtest 'list() tests' => sub { Link Here
55
    my $biblio_id = $biblio->id;
55
    my $biblio_id = $biblio->id;
56
56
57
    $t->get_ok( "//$userid:$password@/api/v1/biblios/$biblio_id/item_groups" )
57
    $t->get_ok( "//$userid:$password@/api/v1/biblios/$biblio_id/item_groups" )
58
        ->status_is( 200, 'SWAGGER3.2.2' );
58
        ->status_is( 200, 'REST3.2.2' );
59
    my $response_count = scalar @{ $t->tx->res->json };
59
    my $response_count = scalar @{ $t->tx->res->json };
60
    is( $response_count, 0, 'Results count is 2');
60
    is( $response_count, 0, 'Results count is 2');
61
61
62
    my $item_group_1 = Koha::Biblio::ItemGroup->new( { biblio_id => $biblio->id, display_order => 1, description => "Vol 1" } )->store();
62
    my $item_group_1 = Koha::Biblio::ItemGroup->new( { biblio_id => $biblio->id, display_order => 1, description => "Vol 1" } )->store();
63
63
64
    $t->get_ok( "//$userid:$password@/api/v1/biblios/$biblio_id/item_groups" )
64
    $t->get_ok( "//$userid:$password@/api/v1/biblios/$biblio_id/item_groups" )
65
        ->status_is( 200, 'SWAGGER3.2.2' );
65
        ->status_is( 200, 'REST3.2.2' );
66
    $response_count = scalar @{ $t->tx->res->json };
66
    $response_count = scalar @{ $t->tx->res->json };
67
    is( $response_count, 1, 'Results count is 2');
67
    is( $response_count, 1, 'Results count is 2');
68
68
69
    my $item_group_2 = Koha::Biblio::ItemGroup->new( { biblio_id => $biblio->id, display_order => 2, description => "Vol 2" } )->store();
69
    my $item_group_2 = Koha::Biblio::ItemGroup->new( { biblio_id => $biblio->id, display_order => 2, description => "Vol 2" } )->store();
70
70
71
    $t->get_ok( "//$userid:$password@/api/v1/biblios/$biblio_id/item_groups" )
71
    $t->get_ok( "//$userid:$password@/api/v1/biblios/$biblio_id/item_groups" )
72
      ->status_is( 200, 'SWAGGER3.2.2' );
72
      ->status_is( 200, 'REST3.2.2' );
73
73
74
    $response_count = scalar @{ $t->tx->res->json };
74
    $response_count = scalar @{ $t->tx->res->json };
75
    is( $response_count, 2, 'Results count is 2');
75
    is( $response_count, 2, 'Results count is 2');
Lines 108-114 subtest 'add() tests' => sub { Link Here
108
108
109
    # Authorized attempt
109
    # Authorized attempt
110
    $t->post_ok( "//$auth_userid:$password@/api/v1/biblios/$biblio_id/item_groups" => json => $item_group )
110
    $t->post_ok( "//$auth_userid:$password@/api/v1/biblios/$biblio_id/item_groups" => json => $item_group )
111
      ->status_is( 201, 'SWAGGER3.2.1' );
111
      ->status_is( 201, 'REST3.2.1' );
112
112
113
    # Invalid biblio id
113
    # Invalid biblio id
114
    {   # hide useless warnings
114
    {   # hide useless warnings
Lines 154-161 subtest 'update() tests' => sub { Link Here
154
154
155
    # Authorized attempt
155
    # Authorized attempt
156
    $t->put_ok( "//$auth_userid:$password@/api/v1/biblios/$biblio_id/item_groups/$item_group_id" => json => { description => "Vol A" } )
156
    $t->put_ok( "//$auth_userid:$password@/api/v1/biblios/$biblio_id/item_groups/$item_group_id" => json => { description => "Vol A" } )
157
      ->status_is(200, 'SWAGGER3.2.1')
157
      ->status_is(200, 'REST3.2.1')
158
      ->json_has( '/description' => "Vol A", 'SWAGGER3.3.3' );
158
      ->json_has( '/description' => "Vol A", 'REST3.3.3' );
159
159
160
    # Invalid biblio id
160
    # Invalid biblio id
161
    $t->put_ok( "//$auth_userid:$password@/api/v1/biblios/XXX/item_groups/$item_group_id" => json => { description => "Vol A" } )
161
    $t->put_ok( "//$auth_userid:$password@/api/v1/biblios/XXX/item_groups/$item_group_id" => json => { description => "Vol A" } )
Lines 194-201 subtest 'delete() tests' => sub { Link Here
194
    my $item_groupid = $item_group->id;
194
    my $item_groupid = $item_group->id;
195
195
196
    $t->delete_ok( "//$auth_userid:$password@/api/v1/biblios/$biblio_id/item_groups/$item_groupid" )
196
    $t->delete_ok( "//$auth_userid:$password@/api/v1/biblios/$biblio_id/item_groups/$item_groupid" )
197
        ->status_is(204, 'SWAGGER3.2.4')
197
        ->status_is(204, 'REST3.2.4')
198
        ->content_is('', 'SWAGGER3.3.4');
198
        ->content_is('', 'REST3.3.4');
199
199
200
    # Unauthorized attempt to delete
200
    # Unauthorized attempt to delete
201
    $t->delete_ok( "//$unauth_userid:$password@/api/v1/biblios/$biblio_id/item_groups/$item_groupid" )
201
    $t->delete_ok( "//$unauth_userid:$password@/api/v1/biblios/$biblio_id/item_groups/$item_groupid" )
Lines 240-246 subtest 'volume items add() + delete() tests' => sub { Link Here
240
      ->json_is( { error => 'Item group does not belong to passed biblio_id' } );
240
      ->json_is( { error => 'Item group does not belong to passed biblio_id' } );
241
241
242
    $t->post_ok( "//$userid:$password@/api/v1/biblios/$biblio_id/item_groups/$item_groupid/items" => json => { item_id => $item_1->id } )
242
    $t->post_ok( "//$userid:$password@/api/v1/biblios/$biblio_id/item_groups/$item_groupid/items" => json => { item_id => $item_1->id } )
243
      ->status_is( 201, 'SWAGGER3.2.1' );
243
      ->status_is( 201, 'REST3.2.1' );
244
244
245
    @items = $item_group->items;
245
    @items = $item_group->items;
246
    is( scalar(@items), 1, 'Item group now has one item');
246
    is( scalar(@items), 1, 'Item group now has one item');
Lines 249-262 subtest 'volume items add() + delete() tests' => sub { Link Here
249
    my $item_2_id = $item_2->id;
249
    my $item_2_id = $item_2->id;
250
250
251
    $t->post_ok( "//$userid:$password@/api/v1/biblios/$biblio_id/item_groups/$item_groupid/items" => json => { item_id => $item_2->id } )
251
    $t->post_ok( "//$userid:$password@/api/v1/biblios/$biblio_id/item_groups/$item_groupid/items" => json => { item_id => $item_2->id } )
252
      ->status_is( 201, 'SWAGGER3.2.1' );
252
      ->status_is( 201, 'REST3.2.1' );
253
253
254
    @items = $item_group->items->as_list;
254
    @items = $item_group->items->as_list;
255
    is( scalar(@items), 2, 'Item group now has two items');
255
    is( scalar(@items), 2, 'Item group now has two items');
256
256
257
    $t->delete_ok( "//$userid:$password@/api/v1/biblios/$biblio_id/item_groups/$item_groupid/items/$item_1_id" )
257
    $t->delete_ok( "//$userid:$password@/api/v1/biblios/$biblio_id/item_groups/$item_groupid/items/$item_1_id" )
258
        ->status_is(204, 'SWAGGER3.2.4')
258
        ->status_is(204, 'REST3.2.4')
259
        ->content_is('', 'SWAGGER3.3.4');
259
        ->content_is('', 'REST3.3.4');
260
260
261
    @items = $item_group->items;
261
    @items = $item_group->items;
262
    is( scalar(@items), 1, 'Item group now has one item');
262
    is( scalar(@items), 1, 'Item group now has one item');
(-)a/t/db_dependent/api/v1/items.t (-13 / +13 lines)
Lines 81-87 subtest 'list() tests' => sub { Link Here
81
    $userid = $patron->userid;
81
    $userid = $patron->userid;
82
82
83
    $t->get_ok( "//$userid:$password@/api/v1/items?_per_page=10" )
83
    $t->get_ok( "//$userid:$password@/api/v1/items?_per_page=10" )
84
      ->status_is( 200, 'SWAGGER3.2.2' );
84
      ->status_is( 200, 'REST3.2.2' );
85
85
86
    my $response_count = scalar @{ $t->tx->res->json };
86
    my $response_count = scalar @{ $t->tx->res->json };
87
87
Lines 89-99 subtest 'list() tests' => sub { Link Here
89
89
90
    $t->get_ok( "//$userid:$password@/api/v1/items?external_id=" . $item->barcode )
90
    $t->get_ok( "//$userid:$password@/api/v1/items?external_id=" . $item->barcode )
91
      ->status_is(200)
91
      ->status_is(200)
92
      ->json_is( '' => [ $item->to_api ], 'SWAGGER3.3.2');
92
      ->json_is( '' => [ $item->to_api ], 'REST3.3.2');
93
93
94
    $t->get_ok( "//$userid:$password@/api/v1/items?external_id=" . $item->barcode => {'x-koha-embed' => 'biblio'} )
94
    $t->get_ok( "//$userid:$password@/api/v1/items?external_id=" . $item->barcode => {'x-koha-embed' => 'biblio'} )
95
      ->status_is(200)
95
      ->status_is(200)
96
      ->json_is( '' => [ { %{$item->to_api}, biblio => $item->biblio->to_api } ], 'SWAGGER3.3.2');
96
      ->json_is( '' => [ { %{$item->to_api}, biblio => $item->biblio->to_api } ], 'REST3.3.2');
97
97
98
98
99
    my $barcode = $item->barcode;
99
    my $barcode = $item->barcode;
Lines 284-291 subtest 'get() tests' => sub { Link Here
284
    $userid = $patron->userid;
284
    $userid = $patron->userid;
285
285
286
    $t->get_ok( "//$userid:$password@/api/v1/items/" . $item->itemnumber )
286
    $t->get_ok( "//$userid:$password@/api/v1/items/" . $item->itemnumber )
287
      ->status_is( 200, 'SWAGGER3.2.2' )
287
      ->status_is( 200, 'REST3.2.2' )
288
      ->json_is( '' => $item->to_api, 'SWAGGER3.3.2' );
288
      ->json_is( '' => $item->to_api, 'REST3.3.2' );
289
289
290
    my $non_existent_code = $item->itemnumber;
290
    my $non_existent_code = $item->itemnumber;
291
    $item->delete;
291
    $item->delete;
Lines 305-318 subtest 'get() tests' => sub { Link Here
305
    isnt( $biblio->itemtype, $itype->itemtype, "Test biblio level itemtype and item level itemtype do not match");
305
    isnt( $biblio->itemtype, $itype->itemtype, "Test biblio level itemtype and item level itemtype do not match");
306
306
307
    $t->get_ok( "//$userid:$password@/api/v1/items/" . $item->itemnumber )
307
    $t->get_ok( "//$userid:$password@/api/v1/items/" . $item->itemnumber )
308
      ->status_is( 200, 'SWAGGER3.2.2' )
308
      ->status_is( 200, 'REST3.2.2' )
309
      ->json_is( '/item_type_id' => $itype->itemtype, 'item-level_itypes:0' )
309
      ->json_is( '/item_type_id' => $itype->itemtype, 'item-level_itypes:0' )
310
      ->json_is( '/effective_item_type_id' => $biblio->itemtype, 'item-level_itypes:0' );
310
      ->json_is( '/effective_item_type_id' => $biblio->itemtype, 'item-level_itypes:0' );
311
311
312
    t::lib::Mocks::mock_preference( 'item-level_itypes', 1 );
312
    t::lib::Mocks::mock_preference( 'item-level_itypes', 1 );
313
313
314
    $t->get_ok( "//$userid:$password@/api/v1/items/" . $item->itemnumber )
314
    $t->get_ok( "//$userid:$password@/api/v1/items/" . $item->itemnumber )
315
      ->status_is( 200, 'SWAGGER3.2.2' )
315
      ->status_is( 200, 'REST3.2.2' )
316
      ->json_is( '/item_type_id' => $itype->itemtype, 'item-level_itype:1' )
316
      ->json_is( '/item_type_id' => $itype->itemtype, 'item-level_itype:1' )
317
      ->json_is( '/effective_item_type_id' => $itype->itemtype, 'item-level_itypes:1' );
317
      ->json_is( '/effective_item_type_id' => $itype->itemtype, 'item-level_itypes:1' );
318
318
Lines 323-340 subtest 'get() tests' => sub { Link Here
323
    $item->notforloan(1)->store();
323
    $item->notforloan(1)->store();
324
324
325
    $t->get_ok( "//$userid:$password@/api/v1/items/" . $item->itemnumber )
325
    $t->get_ok( "//$userid:$password@/api/v1/items/" . $item->itemnumber )
326
      ->status_is( 200, 'SWAGGER3.2.2' )
326
      ->status_is( 200, 'REST3.2.2' )
327
      ->json_is( '/not_for_loan_status' => 1, 'not_for_loan_status is 1' )
327
      ->json_is( '/not_for_loan_status' => 1, 'not_for_loan_status is 1' )
328
      ->json_is( '/effective_not_for_loan_status' => 1, 'effective_not_for_loan_status picks up item level' );
328
      ->json_is( '/effective_not_for_loan_status' => 1, 'effective_not_for_loan_status picks up item level' );
329
329
330
    $item->notforloan(0)->store();
330
    $item->notforloan(0)->store();
331
    $t->get_ok( "//$userid:$password@/api/v1/items/" . $item->itemnumber )
331
    $t->get_ok( "//$userid:$password@/api/v1/items/" . $item->itemnumber )
332
      ->status_is( 200, 'SWAGGER3.2.2' )
332
      ->status_is( 200, 'REST3.2.2' )
333
      ->json_is( '/not_for_loan_status' => 0, 'not_for_loan_status is 0' )
333
      ->json_is( '/not_for_loan_status' => 0, 'not_for_loan_status is 0' )
334
      ->json_is( '/effective_not_for_loan_status' => 2, 'effective_not_for_loan_status now picks up itemtype level - item-level_itypes:1' );
334
      ->json_is( '/effective_not_for_loan_status' => 2, 'effective_not_for_loan_status now picks up itemtype level - item-level_itypes:1' );
335
335
336
    $itype->notforloan(0)->store();
336
    $itype->notforloan(0)->store();
337
    $t->get_ok( "//$userid:$password@/api/v1/items/" . $item->itemnumber )->status_is( 200, 'SWAGGER3.2.2' )
337
    $t->get_ok( "//$userid:$password@/api/v1/items/" . $item->itemnumber )->status_is( 200, 'REST3.2.2' )
338
        ->json_is( '/not_for_loan_status' => 0, 'not_for_loan_status is 0' )->json_is(
338
        ->json_is( '/not_for_loan_status' => 0, 'not_for_loan_status is 0' )->json_is(
339
        '/effective_not_for_loan_status' => 0,
339
        '/effective_not_for_loan_status' => 0,
340
        'effective_not_for_loan_status now picks up itemtype level and falls back to 0 because undef'
340
        'effective_not_for_loan_status now picks up itemtype level and falls back to 0 because undef'
Lines 342-348 subtest 'get() tests' => sub { Link Here
342
342
343
    t::lib::Mocks::mock_preference( 'item-level_itypes', 0 );
343
    t::lib::Mocks::mock_preference( 'item-level_itypes', 0 );
344
    $t->get_ok( "//$userid:$password@/api/v1/items/" . $item->itemnumber )
344
    $t->get_ok( "//$userid:$password@/api/v1/items/" . $item->itemnumber )
345
      ->status_is( 200, 'SWAGGER3.2.2' )
345
      ->status_is( 200, 'REST3.2.2' )
346
      ->json_is( '/not_for_loan_status' => 0, 'not_for_loan_status is 0' )
346
      ->json_is( '/not_for_loan_status' => 0, 'not_for_loan_status is 0' )
347
      ->json_is( '/effective_not_for_loan_status' => 3, 'effective_not_for_loan_status now picks up itemtype level - item-level_itypes:0' );
347
      ->json_is( '/effective_not_for_loan_status' => 3, 'effective_not_for_loan_status now picks up itemtype level - item-level_itypes:0' );
348
348
Lines 416-423 subtest 'delete() tests' => sub { Link Here
416
    $fail = 0;
416
    $fail = 0;
417
417
418
    $t->delete_ok("//$userid:$password@/api/v1/items/" . $item->id)
418
    $t->delete_ok("//$userid:$password@/api/v1/items/" . $item->id)
419
      ->status_is(204, 'SWAGGER3.2.4')
419
      ->status_is(204, 'REST3.2.4')
420
      ->content_is('', 'SWAGGER3.3.4');
420
      ->content_is('', 'REST3.3.4');
421
421
422
    $t->delete_ok("//$userid:$password@/api/v1/items/" . $item->id)
422
    $t->delete_ok("//$userid:$password@/api/v1/items/" . $item->id)
423
      ->status_is(404);
423
      ->status_is(404);
(-)a/t/db_dependent/api/v1/items/bundled_items.t (-1 / +1 lines)
Lines 56-62 subtest 'bundled_items()' => sub { Link Here
56
    $patron->set_password( { password => $password, skip_validation => 1 } );
56
    $patron->set_password( { password => $password, skip_validation => 1 } );
57
    $userid = $patron->userid;
57
    $userid = $patron->userid;
58
58
59
    $t->get_ok("//$userid:$password@/api/v1/items/$itemnumber/bundled_items")->status_is( 200, 'SWAGGER3.2.2' );
59
    $t->get_ok("//$userid:$password@/api/v1/items/$itemnumber/bundled_items")->status_is( 200, 'REST3.2.2' );
60
60
61
    my $response_count = scalar @{ $t->tx->res->json };
61
    my $response_count = scalar @{ $t->tx->res->json };
62
62
(-)a/t/db_dependent/api/v1/libraries.t (-10 / +10 lines)
Lines 58-64 subtest 'list() tests' => sub { Link Here
58
    ## Authorized user tests
58
    ## Authorized user tests
59
    # Make sure we are returned with the correct amount of libraries
59
    # Make sure we are returned with the correct amount of libraries
60
    $t->get_ok( "//$userid:$password@/api/v1/libraries" )
60
    $t->get_ok( "//$userid:$password@/api/v1/libraries" )
61
      ->status_is( 200, 'SWAGGER3.2.2' );
61
      ->status_is( 200, 'REST3.2.2' );
62
62
63
    my $response_count = scalar @{ $t->tx->res->json };
63
    my $response_count = scalar @{ $t->tx->res->json };
64
    my $expected_count = min( Koha::Libraries->count, C4::Context->preference('RESTdefaultPageSize') );
64
    my $expected_count = min( Koha::Libraries->count, C4::Context->preference('RESTdefaultPageSize') );
Lines 125-132 subtest 'get() tests' => sub { Link Here
125
    my $userid = $patron->userid;
125
    my $userid = $patron->userid;
126
126
127
    $t->get_ok( "//$userid:$password@/api/v1/libraries/" . $library->branchcode )
127
    $t->get_ok( "//$userid:$password@/api/v1/libraries/" . $library->branchcode )
128
      ->status_is( 200, 'SWAGGER3.2.2' )
128
      ->status_is( 200, 'REST3.2.2' )
129
      ->json_is( '' => $library->to_api, 'SWAGGER3.3.2' );
129
      ->json_is( '' => $library->to_api, 'REST3.3.2' );
130
130
131
    $t->get_ok( "//$userid:$password@/api/v1/libraries/"
131
    $t->get_ok( "//$userid:$password@/api/v1/libraries/"
132
            . $library->branchcode => { 'x-koha-embed' => 'cash_registers,desks' } )->status_is(200)
132
            . $library->branchcode => { 'x-koha-embed' => 'cash_registers,desks' } )->status_is(200)
Lines 197-205 subtest 'add() tests' => sub { Link Here
197
197
198
    # Authorized attempt to write
198
    # Authorized attempt to write
199
    $t->post_ok( "//$auth_userid:$password@/api/v1/libraries" => json => $library )
199
    $t->post_ok( "//$auth_userid:$password@/api/v1/libraries" => json => $library )
200
      ->status_is( 201, 'SWAGGER3.2.1' )
200
      ->status_is( 201, 'REST3.2.1' )
201
      ->json_is( '' => $library, 'SWAGGER3.3.1' )
201
      ->json_is( '' => $library, 'REST3.3.1' )
202
      ->header_is( Location => '/api/v1/libraries/' . $library->{library_id}, 'SWAGGER3.4.1' );
202
      ->header_is( Location => '/api/v1/libraries/' . $library->{library_id}, 'REST3.4.1' );
203
203
204
    # save the library_id
204
    # save the library_id
205
    my $library_id = $library->{library_id};
205
    my $library_id = $library->{library_id};
Lines 268-275 subtest 'update() tests' => sub { Link Here
268
    $deleted_library->delete;
268
    $deleted_library->delete;
269
269
270
    $t->put_ok( "//$auth_userid:$password@/api/v1/libraries/$library_id" => json => $library_with_updated_field )
270
    $t->put_ok( "//$auth_userid:$password@/api/v1/libraries/$library_id" => json => $library_with_updated_field )
271
      ->status_is(200, 'SWAGGER3.2.1')
271
      ->status_is(200, 'REST3.2.1')
272
      ->json_is( '' => $library_with_updated_field, 'SWAGGER3.3.3' );
272
      ->json_is( '' => $library_with_updated_field, 'REST3.3.3' );
273
273
274
    # Authorized attempt to write invalid data
274
    # Authorized attempt to write invalid data
275
    my $library_with_invalid_field = { %$library_with_updated_field };
275
    my $library_with_invalid_field = { %$library_with_updated_field };
Lines 320-327 subtest 'delete() tests' => sub { Link Here
320
      ->status_is(403);
320
      ->status_is(403);
321
321
322
    $t->delete_ok( "//$auth_userid:$password@/api/v1/libraries/$library_id" )
322
    $t->delete_ok( "//$auth_userid:$password@/api/v1/libraries/$library_id" )
323
      ->status_is(204, 'SWAGGER3.2.4')
323
      ->status_is(204, 'REST3.2.4')
324
      ->content_is('', 'SWAGGER3.3.4');
324
      ->content_is('', 'REST3.3.4');
325
325
326
    $t->delete_ok( "//$auth_userid:$password@/api/v1/libraries/$library_id" )
326
    $t->delete_ok( "//$auth_userid:$password@/api/v1/libraries/$library_id" )
327
      ->status_is(404);
327
      ->status_is(404);
(-)a/t/db_dependent/api/v1/patrons.t (-3 / +3 lines)
Lines 519-525 subtest 'add() tests' => sub { Link Here
519
          ->status_is(201, 'Patron created successfully')
519
          ->status_is(201, 'Patron created successfully')
520
          ->header_like(
520
          ->header_like(
521
            Location => qr|^\/api\/v1\/patrons/\d*|,
521
            Location => qr|^\/api\/v1\/patrons/\d*|,
522
            'SWAGGER3.4.1'
522
            'REST3.4.1'
523
          )
523
          )
524
          ->json_has('/patron_id', 'got a patron_id')
524
          ->json_has('/patron_id', 'got a patron_id')
525
          ->json_is( '/cardnumber'    => $newpatron->{cardnumber})
525
          ->json_is( '/cardnumber'    => $newpatron->{cardnumber})
Lines 1148-1155 subtest 'delete() tests' => sub { Link Here
1148
        $patron->protected(0)->store();
1148
        $patron->protected(0)->store();
1149
1149
1150
        $t->delete_ok("//$userid:$password@/api/v1/patrons/" . $patron->borrowernumber)
1150
        $t->delete_ok("//$userid:$password@/api/v1/patrons/" . $patron->borrowernumber)
1151
          ->status_is(204, 'SWAGGER3.2.4')
1151
          ->status_is(204, 'REST3.2.4')
1152
          ->content_is('', 'SWAGGER3.3.4');
1152
          ->content_is('', 'REST3.3.4');
1153
1153
1154
        my $deleted_patrons = Koha::Old::Patrons->search({ borrowernumber =>  $patron->borrowernumber });
1154
        my $deleted_patrons = Koha::Old::Patrons->search({ borrowernumber =>  $patron->borrowernumber });
1155
        is( $deleted_patrons->count, 1, 'The patron has been moved to the vault' );
1155
        is( $deleted_patrons->count, 1, 'The patron has been moved to the vault' );
(-)a/t/db_dependent/api/v1/patrons_extended_attributes.t (-6 / +6 lines)
Lines 47-53 subtest 'list_patron_attributes() tests' => sub { Link Here
47
    my $userid = $patron->userid;
47
    my $userid = $patron->userid;
48
48
49
    $t->get_ok("//$userid:$password@/api/v1/patrons/" . $patron->id . '/extended_attributes')
49
    $t->get_ok("//$userid:$password@/api/v1/patrons/" . $patron->id . '/extended_attributes')
50
      ->status_is( 200, 'SWAGGER3.2.2' )
50
      ->status_is( 200, 'REST3.2.2' )
51
      ->json_is( [] );
51
      ->json_is( [] );
52
52
53
    # Let's add 3 attributes
53
    # Let's add 3 attributes
Lines 56-62 subtest 'list_patron_attributes() tests' => sub { Link Here
56
    }
56
    }
57
57
58
    $t->get_ok("//$userid:$password@/api/v1/patrons/" . $patron->id . '/extended_attributes')
58
    $t->get_ok("//$userid:$password@/api/v1/patrons/" . $patron->id . '/extended_attributes')
59
      ->status_is( 200, 'SWAGGER3.2.2' )
59
      ->status_is( 200, 'REST3.2.2' )
60
      ->json_is( '' => $patron->extended_attributes->to_api, 'Extended attributes retrieved correctly' );
60
      ->json_is( '' => $patron->extended_attributes->to_api, 'Extended attributes retrieved correctly' );
61
61
62
    my $non_existent_patron = $builder->build_object({ class => 'Koha::Patrons' });
62
    my $non_existent_patron = $builder->build_object({ class => 'Koha::Patrons' });
Lines 84-90 subtest 'list_patron_attributes() tests' => sub { Link Here
84
84
85
        $t->get_ok( "//$userid:$password@/api/v1/patrons/"
85
        $t->get_ok( "//$userid:$password@/api/v1/patrons/"
86
              . $user->id
86
              . $user->id
87
              . '/extended_attributes' )->status_is( 200, 'SWAGGER3.2.2' )
87
              . '/extended_attributes' )->status_is( 200, 'REST3.2.2' )
88
          ->json_is(
88
          ->json_is(
89
            '' => $user->extended_attributes->to_api,
89
            '' => $user->extended_attributes->to_api,
90
            'Extended attributes retrieved correctly'
90
            'Extended attributes retrieved correctly'
Lines 333-339 subtest 'overwrite() tests' => sub { Link Here
333
    $patron->add_extended_attribute({ code => $unique_attr_type->code,  attribute => 'unique' });
333
    $patron->add_extended_attribute({ code => $unique_attr_type->code,  attribute => 'unique' });
334
334
335
    $t->get_ok("//$userid:$password@/api/v1/patrons/" . $patron->id . '/extended_attributes')
335
    $t->get_ok("//$userid:$password@/api/v1/patrons/" . $patron->id . '/extended_attributes')
336
      ->status_is( 200, 'SWAGGER3.2.2' )
336
      ->status_is( 200, 'REST3.2.2' )
337
      ->json_is( '' => $patron->extended_attributes->to_api, 'Extended attributes retrieved correctly' );
337
      ->json_is( '' => $patron->extended_attributes->to_api, 'Extended attributes retrieved correctly' );
338
338
339
    my $updated_attributes = [
339
    my $updated_attributes = [
Lines 403-410 subtest 'delete() tests' => sub { Link Here
403
    my $attr = $dummy_patron->add_extended_attribute({ code => $attr_type->code, attribute => 'blah' });
403
    my $attr = $dummy_patron->add_extended_attribute({ code => $attr_type->code, attribute => 'blah' });
404
404
405
    $t->delete_ok("//$userid:$password@/api/v1/patrons/" . $dummy_patron->id . '/extended_attributes/' . $attr->id )
405
    $t->delete_ok("//$userid:$password@/api/v1/patrons/" . $dummy_patron->id . '/extended_attributes/' . $attr->id )
406
      ->status_is(204, 'SWAGGER3.2.4')
406
      ->status_is(204, 'REST3.2.4')
407
      ->content_is('', 'SWAGGER3.3.4');
407
      ->content_is('', 'REST3.3.4');
408
408
409
    $t->delete_ok("//$userid:$password@/api/v1/patrons/" . $dummy_patron->id . '/extended_attributes/' . $attr->id )
409
    $t->delete_ok("//$userid:$password@/api/v1/patrons/" . $dummy_patron->id . '/extended_attributes/' . $attr->id )
410
      ->status_is(404)
410
      ->status_is(404)
(-)a/t/db_dependent/api/v1/patrons_holds.t (-6 / +6 lines)
Lines 48-54 subtest 'list() tests' => sub { Link Here
48
    my $userid = $patron->userid;
48
    my $userid = $patron->userid;
49
49
50
    $t->get_ok("//$userid:$password@/api/v1/patrons/" . $patron->id . '/holds')
50
    $t->get_ok("//$userid:$password@/api/v1/patrons/" . $patron->id . '/holds')
51
      ->status_is( 200, 'SWAGGER3.2.2' )
51
      ->status_is( 200, 'REST3.2.2' )
52
      ->json_is( [] );
52
      ->json_is( [] );
53
53
54
    my $hold_1 = $builder->build_object( { class => 'Koha::Holds', value => { borrowernumber => $patron->id } } );
54
    my $hold_1 = $builder->build_object( { class => 'Koha::Holds', value => { borrowernumber => $patron->id } } );
Lines 56-72 subtest 'list() tests' => sub { Link Here
56
    my $hold_3 = $builder->build_object( { class => 'Koha::Holds', value => { borrowernumber => $patron->id } } );
56
    my $hold_3 = $builder->build_object( { class => 'Koha::Holds', value => { borrowernumber => $patron->id } } );
57
57
58
    $t->get_ok( "//$userid:$password@/api/v1/patrons/" . $patron->id . '/holds?_order_by=+me.hold_id' )
58
    $t->get_ok( "//$userid:$password@/api/v1/patrons/" . $patron->id . '/holds?_order_by=+me.hold_id' )
59
        ->status_is( 200, 'SWAGGER3.2.2' )
59
        ->status_is( 200, 'REST3.2.2' )
60
        ->json_is( '' => [ $hold_1->to_api, $hold_2->to_api, $hold_3->to_api ], 'Holds retrieved' );
60
        ->json_is( '' => [ $hold_1->to_api, $hold_2->to_api, $hold_3->to_api ], 'Holds retrieved' );
61
61
62
    $hold_1->fill;
62
    $hold_1->fill;
63
    $hold_3->fill;
63
    $hold_3->fill;
64
64
65
    $t->get_ok( "//$userid:$password@/api/v1/patrons/" . $patron->id . '/holds?_order_by=+me.hold_id' )
65
    $t->get_ok( "//$userid:$password@/api/v1/patrons/" . $patron->id . '/holds?_order_by=+me.hold_id' )
66
        ->status_is( 200, 'SWAGGER3.2.2' )->json_is( '' => [ $hold_2->to_api ], 'Only current holds retrieved' );
66
        ->status_is( 200, 'REST3.2.2' )->json_is( '' => [ $hold_2->to_api ], 'Only current holds retrieved' );
67
67
68
    $t->get_ok( "//$userid:$password@/api/v1/patrons/" . $patron->id . '/holds?old=1&_order_by=+me.hold_id' )
68
    $t->get_ok( "//$userid:$password@/api/v1/patrons/" . $patron->id . '/holds?old=1&_order_by=+me.hold_id' )
69
        ->status_is( 200, 'SWAGGER3.2.2' )
69
        ->status_is( 200, 'REST3.2.2' )
70
        ->json_is( '' => [ $hold_1->to_api, $hold_3->to_api ], 'Only old holds retrieved' );
70
        ->json_is( '' => [ $hold_1->to_api, $hold_3->to_api ], 'Only old holds retrieved' );
71
71
72
    my $old_hold_1 = Koha::Old::Holds->find( $hold_1->id );
72
    my $old_hold_1 = Koha::Old::Holds->find( $hold_1->id );
Lines 74-80 subtest 'list() tests' => sub { Link Here
74
    $old_hold_1->pickup_library->delete;
74
    $old_hold_1->pickup_library->delete;
75
75
76
    $t->get_ok( "//$userid:$password@/api/v1/patrons/" . $patron->id . '/holds?old=1&_order_by=+me.hold_id' )
76
    $t->get_ok( "//$userid:$password@/api/v1/patrons/" . $patron->id . '/holds?old=1&_order_by=+me.hold_id' )
77
        ->status_is( 200, 'SWAGGER3.2.2' )->json_is(
77
        ->status_is( 200, 'REST3.2.2' )->json_is(
78
        '' => [ $old_hold_1->get_from_storage->to_api, $hold_3->to_api ],
78
        '' => [ $old_hold_1->get_from_storage->to_api, $hold_3->to_api ],
79
        'Old holds even after item and library removed'
79
        'Old holds even after item and library removed'
80
        );
80
        );
Lines 133-139 subtest 'delete_public() tests' => sub { Link Here
133
    );
133
    );
134
134
135
    $t->delete_ok( "//$userid:$password@/api/v1/public/patrons/" . $patron->id . '/holds/' . $non_waiting_hold->id )
135
    $t->delete_ok( "//$userid:$password@/api/v1/public/patrons/" . $patron->id . '/holds/' . $non_waiting_hold->id )
136
        ->status_is( 204, 'SWAGGER3.2.4' )->content_is( '', 'SWAGGER3.3.4' );
136
        ->status_is( 204, 'REST3.2.4' )->content_is( '', 'REST3.3.4' );
137
137
138
    my $cancellation_requestable;
138
    my $cancellation_requestable;
139
139
(-)a/t/db_dependent/api/v1/patrons_recalls.t (-4 / +4 lines)
Lines 48-54 subtest 'list() tests' => sub { Link Here
48
    $patron->set_password( { password => $password, skip_validation => 1 } );
48
    $patron->set_password( { password => $password, skip_validation => 1 } );
49
    my $userid = $patron->userid;
49
    my $userid = $patron->userid;
50
50
51
    $t->get_ok( "//$userid:$password@/api/v1/patrons/" . $patron->id . '/recalls' )->status_is( 200, 'SWAGGER3.2.2' )
51
    $t->get_ok( "//$userid:$password@/api/v1/patrons/" . $patron->id . '/recalls' )->status_is( 200, 'REST3.2.2' )
52
        ->json_is( [] );
52
        ->json_is( [] );
53
53
54
    my $recall_1 = $builder->build_object( { class => 'Koha::Recalls', value => { patron_id => $patron->id } } );
54
    my $recall_1 = $builder->build_object( { class => 'Koha::Recalls', value => { patron_id => $patron->id } } );
Lines 59-74 subtest 'list() tests' => sub { Link Here
59
    my $recall_3 = $builder->build_object( { class => 'Koha::Recalls', value => { patron_id => $patron_2->id } } );
59
    my $recall_3 = $builder->build_object( { class => 'Koha::Recalls', value => { patron_id => $patron_2->id } } );
60
60
61
    $t->get_ok( "//$userid:$password@/api/v1/patrons/" . $patron->id . '/recalls?_order_by=+me.recall_id' )
61
    $t->get_ok( "//$userid:$password@/api/v1/patrons/" . $patron->id . '/recalls?_order_by=+me.recall_id' )
62
        ->status_is( 200, 'SWAGGER3.2.2' )
62
        ->status_is( 200, 'REST3.2.2' )
63
        ->json_is( '' => [ $recall_1->to_api, $recall_2->to_api ], 'Recalls retrieved' );
63
        ->json_is( '' => [ $recall_1->to_api, $recall_2->to_api ], 'Recalls retrieved' );
64
64
65
    $t->get_ok( "//$userid:$password@/api/v1/patrons/" . $patron_2->id . '/recalls?_order_by=+me.recall_id' )
65
    $t->get_ok( "//$userid:$password@/api/v1/patrons/" . $patron_2->id . '/recalls?_order_by=+me.recall_id' )
66
        ->status_is( 200, 'SWAGGER3.2.2' )->json_is( '' => [ $recall_3->to_api ], 'Recalls retrieved' );
66
        ->status_is( 200, 'REST3.2.2' )->json_is( '' => [ $recall_3->to_api ], 'Recalls retrieved' );
67
67
68
    $recall_3->delete;
68
    $recall_3->delete;
69
69
70
    $t->get_ok( "//$userid:$password@/api/v1/patrons/" . $patron_2->id . '/recalls?_order_by=+me.recall_id' )
70
    $t->get_ok( "//$userid:$password@/api/v1/patrons/" . $patron_2->id . '/recalls?_order_by=+me.recall_id' )
71
        ->status_is( 200, 'SWAGGER3.2.2' )->json_is( [] );
71
        ->status_is( 200, 'REST3.2.2' )->json_is( [] );
72
72
73
    my $non_existent_patron    = $builder->build_object( { class => 'Koha::Patrons' } );
73
    my $non_existent_patron    = $builder->build_object( { class => 'Koha::Patrons' } );
74
    my $non_existent_patron_id = $non_existent_patron->id;
74
    my $non_existent_patron_id = $non_existent_patron->id;
(-)a/t/db_dependent/api/v1/preservation_Processings.t (-3 / +3 lines)
Lines 197-205 subtest 'add() tests' => sub { Link Here
197
    # Authorized attempt to write
197
    # Authorized attempt to write
198
    my $processing_id =
198
    my $processing_id =
199
        $t->post_ok( "//$userid:$password@/api/v1/preservation/processings" => json => $processing )
199
        $t->post_ok( "//$userid:$password@/api/v1/preservation/processings" => json => $processing )
200
        ->status_is( 201, 'SWAGGER3.2.1' )->header_like(
200
        ->status_is( 201, 'REST3.2.1' )->header_like(
201
        Location => qr|^/api/v1/preservation/processings/\d*|,
201
        Location => qr|^/api/v1/preservation/processings/\d*|,
202
        'SWAGGER3.4.1'
202
        'REST3.4.1'
203
    )->json_is( '/name' => $processing->{name} )->tx->res->json->{processing_id};
203
    )->json_is( '/name' => $processing->{name} )->tx->res->json->{processing_id};
204
204
205
    # Authorized attempt to create with null id
205
    # Authorized attempt to create with null id
Lines 337-343 subtest 'delete() tests' => sub { Link Here
337
337
338
    # Delete existing processing
338
    # Delete existing processing
339
    $t->delete_ok("//$userid:$password@/api/v1/preservation/processings/$processing_id")
339
    $t->delete_ok("//$userid:$password@/api/v1/preservation/processings/$processing_id")
340
        ->status_is( 204, 'SWAGGER3.2.4' )->content_is( '', 'SWAGGER3.3.4' );
340
        ->status_is( 204, 'REST3.2.4' )->content_is( '', 'REST3.3.4' );
341
341
342
    # Attempt to delete non-existent processing
342
    # Attempt to delete non-existent processing
343
    $t->delete_ok("//$userid:$password@/api/v1/preservation/processings/$processing_id")->status_is(404);
343
    $t->delete_ok("//$userid:$password@/api/v1/preservation/processings/$processing_id")->status_is(404);
(-)a/t/db_dependent/api/v1/preservation_Trains.t (-6 / +6 lines)
Lines 201-209 subtest 'add() tests' => sub { Link Here
201
    # Authorized attempt to write
201
    # Authorized attempt to write
202
    my $train_id =
202
    my $train_id =
203
        $t->post_ok( "//$userid:$password@/api/v1/preservation/trains" => json => $train )
203
        $t->post_ok( "//$userid:$password@/api/v1/preservation/trains" => json => $train )
204
        ->status_is( 201, 'SWAGGER3.2.1' )->header_like(
204
        ->status_is( 201, 'REST3.2.1' )->header_like(
205
        Location => qr|^/api/v1/preservation/trains/\d*|,
205
        Location => qr|^/api/v1/preservation/trains/\d*|,
206
        'SWAGGER3.4.1'
206
        'REST3.4.1'
207
    )->json_is( '/name' => $train->{name} )->json_is( '/description' => $train->{description} )
207
    )->json_is( '/name' => $train->{name} )->json_is( '/description' => $train->{description} )
208
        ->json_is( '/default_processing_id' => $train->{default_processing_id} )
208
        ->json_is( '/default_processing_id' => $train->{default_processing_id} )
209
        ->json_is( '/not_for_loan'          => $train->{not_for_loan} )->tx->res->json->{train_id};
209
        ->json_is( '/not_for_loan'          => $train->{not_for_loan} )->tx->res->json->{train_id};
Lines 344-351 subtest 'delete() tests' => sub { Link Here
344
    $t->delete_ok("//$unauth_userid:$password@/api/v1/preservation/trains/$train_id")->status_is(403);
344
    $t->delete_ok("//$unauth_userid:$password@/api/v1/preservation/trains/$train_id")->status_is(403);
345
345
346
    # Delete existing train
346
    # Delete existing train
347
    $t->delete_ok("//$userid:$password@/api/v1/preservation/trains/$train_id")->status_is( 204, 'SWAGGER3.2.4' )
347
    $t->delete_ok("//$userid:$password@/api/v1/preservation/trains/$train_id")->status_is( 204, 'REST3.2.4' )
348
        ->content_is( '', 'SWAGGER3.3.4' );
348
        ->content_is( '', 'REST3.3.4' );
349
349
350
    # Attempt to delete non-existent train
350
    # Attempt to delete non-existent train
351
    $t->delete_ok("//$userid:$password@/api/v1/preservation/trains/$train_id")->status_is(404);
351
    $t->delete_ok("//$userid:$password@/api/v1/preservation/trains/$train_id")->status_is(404);
Lines 435-441 subtest '*_item() tests' => sub { Link Here
435
    ];
435
    ];
436
    my $train_item_id =
436
    my $train_item_id =
437
        $t->post_ok( "//$userid:$password@/api/v1/preservation/trains/$train_id/items" => json =>
437
        $t->post_ok( "//$userid:$password@/api/v1/preservation/trains/$train_id/items" => json =>
438
            { item_id => $item_1->itemnumber, attributes => $item_attributes } )->status_is( 201, 'SWAGGER3.2.1' )
438
            { item_id => $item_1->itemnumber, attributes => $item_attributes } )->status_is( 201, 'REST3.2.1' )
439
        ->json_is( '/item_id' => $item_1->itemnumber )->json_is( '/processing_id' => $train->default_processing_id )
439
        ->json_is( '/item_id' => $item_1->itemnumber )->json_is( '/processing_id' => $train->default_processing_id )
440
        ->json_has('/added_on')->tx->res->json->{train_item_id};
440
        ->json_has('/added_on')->tx->res->json->{train_item_id};
441
    my $train_item = Koha::Preservation::Train::Items->find($train_item_id);
441
    my $train_item = Koha::Preservation::Train::Items->find($train_item_id);
Lines 501-507 subtest '*_item() tests' => sub { Link Here
501
501
502
    # Delete existing item
502
    # Delete existing item
503
    $t->delete_ok("//$userid:$password@/api/v1/preservation/trains/$train_id/items/$train_item_id")
503
    $t->delete_ok("//$userid:$password@/api/v1/preservation/trains/$train_id/items/$train_item_id")
504
        ->status_is( 204, 'SWAGGER3.2.4' )->content_is( '', 'SWAGGER3.3.4' );
504
        ->status_is( 204, 'REST3.2.4' )->content_is( '', 'REST3.3.4' );
505
505
506
    # Delete non existing item
506
    # Delete non existing item
507
    $t->delete_ok("//$userid:$password@/api/v1/preservation/trains/$train_id/items/$train_item_id")->status_is(404)
507
    $t->delete_ok("//$userid:$password@/api/v1/preservation/trains/$train_id/items/$train_item_id")->status_is(404)
(-)a/t/db_dependent/api/v1/record_sources.t (-5 / +5 lines)
Lines 71-77 subtest 'list() tests' => sub { Link Here
71
    $patron->set_password( { password => $password, skip_validation => 1 } );
71
    $patron->set_password( { password => $password, skip_validation => 1 } );
72
    $userid = $patron->userid;
72
    $userid = $patron->userid;
73
73
74
    $t->get_ok("//$userid:$password@/api/v1/record_sources?_per_page=10")->status_is( 200, 'SWAGGER3.2.2' );
74
    $t->get_ok("//$userid:$password@/api/v1/record_sources?_per_page=10")->status_is( 200, 'REST3.2.2' );
75
75
76
    my $response_count = scalar @{ $t->tx->res->json };
76
    my $response_count = scalar @{ $t->tx->res->json };
77
77
Lines 79-85 subtest 'list() tests' => sub { Link Here
79
79
80
    my $id = $source->record_source_id;
80
    my $id = $source->record_source_id;
81
    $t->get_ok("//$userid:$password@/api/v1/record_sources?q={\"record_source_id\": $id}")->status_is(200)
81
    $t->get_ok("//$userid:$password@/api/v1/record_sources?q={\"record_source_id\": $id}")->status_is(200)
82
        ->json_is( '' => [ $source->to_api ], 'SWAGGER3.3.2' );
82
        ->json_is( '' => [ $source->to_api ], 'REST3.3.2' );
83
83
84
    $source->delete;
84
    $source->delete;
85
85
Lines 123-130 subtest 'get() tests' => sub { Link Here
123
    $patron->set_password( { password => $password, skip_validation => 1 } );
123
    $patron->set_password( { password => $password, skip_validation => 1 } );
124
    $userid = $patron->userid;
124
    $userid = $patron->userid;
125
125
126
    $t->get_ok("//$userid:$password@/api/v1/record_sources/$id")->status_is( 200, 'SWAGGER3.2.2' )
126
    $t->get_ok("//$userid:$password@/api/v1/record_sources/$id")->status_is( 200, 'REST3.2.2' )
127
        ->json_is( '' => $source->to_api, 'SWAGGER3.3.2' );
127
        ->json_is( '' => $source->to_api, 'REST3.3.2' );
128
128
129
    $source->delete;
129
    $source->delete;
130
130
Lines 227-233 subtest 'add() tests' => sub { Link Here
227
227
228
    my $source_id =
228
    my $source_id =
229
        $t->post_ok( "//$userid:$password@/api/v1/record_sources" => json => { name => 'test1' } )
229
        $t->post_ok( "//$userid:$password@/api/v1/record_sources" => json => { name => 'test1' } )
230
        ->status_is( 201, 'SWAGGER3.2.2' )->json_is( '/name', 'test1' )->json_is( '/can_be_edited', 0 )
230
        ->status_is( 201, 'REST3.2.2' )->json_is( '/name', 'test1' )->json_is( '/can_be_edited', 0 )
231
        ->tx->res->json->{record_source_id};
231
        ->tx->res->json->{record_source_id};
232
232
233
    my $created_source = Koha::RecordSources->find($source_id);
233
    my $created_source = Koha::RecordSources->find($source_id);
(-)a/t/db_dependent/api/v1/return_claims.t (-3 / +3 lines)
Lines 78-84 subtest 'claim_returned() tests' => sub { Link Here
78
        }
78
        }
79
    )->status_is(201)->header_like(
79
    )->status_is(201)->header_like(
80
        Location => qr|^\/api\/v1\/return_claims/\d*|,
80
        Location => qr|^\/api\/v1\/return_claims/\d*|,
81
        'SWAGGER3.4.1'
81
        'REST3.4.1'
82
    );
82
    );
83
83
84
    my $claim_id = $t->tx->res->json->{claim_id};
84
    my $claim_id = $t->tx->res->json->{claim_id};
Lines 293-300 subtest 'delete() tests' => sub { Link Here
293
293
294
    # Test deleting a return claim
294
    # Test deleting a return claim
295
    $t->delete_ok("//$userid:$password@/api/v1/return_claims/" . $claim->id)
295
    $t->delete_ok("//$userid:$password@/api/v1/return_claims/" . $claim->id)
296
      ->status_is( 204, 'SWAGGER3.2.4' )
296
      ->status_is( 204, 'REST3.2.4' )
297
      ->content_is( '', 'SWAGGER3.3.4' );
297
      ->content_is( '', 'REST3.3.4' );
298
298
299
    my $THE_claim = Koha::Checkouts::ReturnClaims->find($claim->id);
299
    my $THE_claim = Koha::Checkouts::ReturnClaims->find($claim->id);
300
    isnt( $THE_claim, "Return claim was deleted" );
300
    isnt( $THE_claim, "Return claim was deleted" );
(-)a/t/db_dependent/api/v1/search_filters.t (-2 / +2 lines)
Lines 89-95 subtest 'list() tests' => sub { Link Here
89
89
90
    # Make sure we are returned with the correct amount of macros
90
    # Make sure we are returned with the correct amount of macros
91
    $t->get_ok( "//$userid:$password@/api/v1/search_filters" )
91
    $t->get_ok( "//$userid:$password@/api/v1/search_filters" )
92
      ->status_is( 200, 'SWAGGER3.2.2' )
92
      ->status_is( 200, 'REST3.2.2' )
93
      ->json_has('/0/search_filter_id')
93
      ->json_has('/0/search_filter_id')
94
      ->json_has('/1/search_filter_id')
94
      ->json_has('/1/search_filter_id')
95
      ->json_has('/2/search_filter_id')
95
      ->json_has('/2/search_filter_id')
Lines 191-197 subtest 'add() tests' => sub { Link Here
191
191
192
    # Authorized attempt to write
192
    # Authorized attempt to write
193
    $t->post_ok( "//$auth_userid:$password@/api/v1/search_filters" => json => $search_filter_values )
193
    $t->post_ok( "//$auth_userid:$password@/api/v1/search_filters" => json => $search_filter_values )
194
      ->status_is( 201, 'SWAGGER3.2.1' )
194
      ->status_is( 201, 'REST3.2.1' )
195
      ->json_has( '/search_filter_id', 'We generated a new id' )
195
      ->json_has( '/search_filter_id', 'We generated a new id' )
196
      ->json_is( '/name' => $search_filter_values->{name}, 'The name matches what we supplied' )
196
      ->json_is( '/name' => $search_filter_values->{name}, 'The name matches what we supplied' )
197
      ->json_is( '/query' => $search_filter_values->{query}, 'The query matches what we supplied' )
197
      ->json_is( '/query' => $search_filter_values->{query}, 'The query matches what we supplied' )
(-)a/t/db_dependent/api/v1/smtp_servers.t (-3 / +3 lines)
Lines 192-200 subtest 'add() tests' => sub { Link Here
192
    # Authorized attempt to write
192
    # Authorized attempt to write
193
    my $smtp_server_id =
193
    my $smtp_server_id =
194
      $t->post_ok( "//$userid:$password@/api/v1/config/smtp_servers" => json =>
194
      $t->post_ok( "//$userid:$password@/api/v1/config/smtp_servers" => json =>
195
          $smtp_server_data )->status_is( 201, 'SWAGGER3.2.1' )->header_like(
195
          $smtp_server_data )->status_is( 201, 'REST3.2.1' )->header_like(
196
        Location => qr|^\/api\/v1\/config\/smtp_servers\/\d*|,
196
        Location => qr|^\/api\/v1\/config\/smtp_servers\/\d*|,
197
        'SWAGGER3.4.1'
197
        'REST3.4.1'
198
    )->json_is( '/name' => $smtp_server_data->{name} )
198
    )->json_is( '/name' => $smtp_server_data->{name} )
199
      ->json_is( '/state'       => $smtp_server_data->{state} )
199
      ->json_is( '/state'       => $smtp_server_data->{state} )
200
      ->json_is( '/postal_code' => $smtp_server_data->{postal_code} )
200
      ->json_is( '/postal_code' => $smtp_server_data->{postal_code} )
Lines 348-354 subtest 'delete() tests' => sub { Link Here
348
348
349
    $t->delete_ok(
349
    $t->delete_ok(
350
        "//$userid:$password@/api/v1/config/smtp_servers/$smtp_server_id")
350
        "//$userid:$password@/api/v1/config/smtp_servers/$smtp_server_id")
351
      ->status_is( 204, 'SWAGGER3.2.4' )->content_is( '', 'SWAGGER3.3.4' );
351
      ->status_is( 204, 'REST3.2.4' )->content_is( '', 'REST3.3.4' );
352
352
353
    $t->delete_ok(
353
    $t->delete_ok(
354
        "//$userid:$password@/api/v1/config/smtp_servers/$smtp_server_id")
354
        "//$userid:$password@/api/v1/config/smtp_servers/$smtp_server_id")
(-)a/t/db_dependent/api/v1/stockrotation_rotas.t (-4 / +4 lines)
Lines 197-206 subtest 'add() tests' => sub { Link Here
197
197
198
    # Authorized attempt to write
198
    # Authorized attempt to write
199
    my $rota_id =
199
    my $rota_id =
200
        $t->post_ok( "//$userid:$password@/api/v1/rotas" => json => $rota )->status_is( 201, 'SWAGGER3.2.1' )
200
        $t->post_ok( "//$userid:$password@/api/v1/rotas" => json => $rota )->status_is( 201, 'REST3.2.1' )
201
        ->header_like(
201
        ->header_like(
202
        Location => qr|^\/api\/v1\/rotas/\d*|,
202
        Location => qr|^\/api\/v1\/rotas/\d*|,
203
        'SWAGGER3.4.1'
203
        'REST3.4.1'
204
    )->json_is( '/title' => $rota->{title} )->json_is( '/description' => $rota->{description} )
204
    )->json_is( '/title' => $rota->{title} )->json_is( '/description' => $rota->{description} )
205
        ->json_is( '/active' => $rota->{active} )->json_is( '/cyclical' => $rota->{cyclical} )
205
        ->json_is( '/active' => $rota->{active} )->json_is( '/cyclical' => $rota->{cyclical} )
206
        ->tx->res->json->{rota_id};
206
        ->tx->res->json->{rota_id};
Lines 341-348 subtest 'delete() tests' => sub { Link Here
341
    # Unauthorized attempt to delete
341
    # Unauthorized attempt to delete
342
    $t->delete_ok("//$unauth_userid:$password@/api/v1/rotas/$rota_id")->status_is(403);
342
    $t->delete_ok("//$unauth_userid:$password@/api/v1/rotas/$rota_id")->status_is(403);
343
343
344
    $t->delete_ok("//$userid:$password@/api/v1/rotas/$rota_id")->status_is( 204, 'SWAGGER3.2.4' )
344
    $t->delete_ok("//$userid:$password@/api/v1/rotas/$rota_id")->status_is( 204, 'REST3.2.4' )
345
        ->content_is( '', 'SWAGGER3.3.4' );
345
        ->content_is( '', 'REST3.3.4' );
346
346
347
    $t->delete_ok("//$userid:$password@/api/v1/rotas/$rota_id")->status_is(404);
347
    $t->delete_ok("//$userid:$password@/api/v1/rotas/$rota_id")->status_is(404);
348
348
(-)a/t/db_dependent/api/v1/suggestions.t (-8 / +8 lines)
Lines 219-227 subtest 'add() tests' => sub { Link Here
219
    # Authorized attempt to write
219
    # Authorized attempt to write
220
    my $generated_suggestion =
220
    my $generated_suggestion =
221
      $t->post_ok( "//$userid:$password@/api/v1/suggestions" => json =>
221
      $t->post_ok( "//$userid:$password@/api/v1/suggestions" => json =>
222
          $suggestion_data )->status_is( 201, 'SWAGGER3.2.1' )->header_like(
222
          $suggestion_data )->status_is( 201, 'REST3.2.1' )->header_like(
223
        Location => qr|^\/api\/v1\/suggestions\/\d*|,
223
        Location => qr|^\/api\/v1\/suggestions\/\d*|,
224
        'SWAGGER3.4.1'
224
        'REST3.4.1'
225
    )->tx->res->json;
225
    )->tx->res->json;
226
226
227
    my $suggestion_id = $generated_suggestion->{suggestion_id};
227
    my $suggestion_id = $generated_suggestion->{suggestion_id};
Lines 412-418 subtest 'delete() tests' => sub { Link Here
412
412
413
    $t->delete_ok(
413
    $t->delete_ok(
414
        "//$userid:$password@/api/v1/suggestions/$suggestion_id")
414
        "//$userid:$password@/api/v1/suggestions/$suggestion_id")
415
      ->status_is( 204, 'SWAGGER3.2.4' )->content_is( q{}, 'SWAGGER3.3.4' );
415
      ->status_is( 204, 'REST3.2.4' )->content_is( q{}, 'REST3.3.4' );
416
416
417
    $t->delete_ok(
417
    $t->delete_ok(
418
        "//$userid:$password@/api/v1/suggestions/$suggestion_id")
418
        "//$userid:$password@/api/v1/suggestions/$suggestion_id")
Lines 457-463 subtest 'Permissions tests' => sub { Link Here
457
457
458
    # Unauthorized attempt to write
458
    # Unauthorized attempt to write
459
    $t->post_ok( "//$userid:$password@/api/v1/suggestions" => json => $suggestion_data )
459
    $t->post_ok( "//$userid:$password@/api/v1/suggestions" => json => $suggestion_data )
460
        ->status_is( 403, 'SWAGGER3.2.1' );
460
        ->status_is( 403, 'REST3.2.1' );
461
461
462
    $builder->build(
462
    $builder->build(
463
        {
463
        {
Lines 473-481 subtest 'Permissions tests' => sub { Link Here
473
    # Authorized attempt to write
473
    # Authorized attempt to write
474
    my $generated_suggestion =
474
    my $generated_suggestion =
475
        $t->post_ok( "//$userid:$password@/api/v1/suggestions" => json => $suggestion_data )
475
        $t->post_ok( "//$userid:$password@/api/v1/suggestions" => json => $suggestion_data )
476
        ->status_is( 201, 'SWAGGER3.2.1' )->header_like(
476
        ->status_is( 201, 'REST3.2.1' )->header_like(
477
        Location => qr|^\/api\/v1\/suggestions\/\d*|,
477
        Location => qr|^\/api\/v1\/suggestions\/\d*|,
478
        'SWAGGER3.4.1'
478
        'REST3.4.1'
479
    )->tx->res->json;
479
    )->tx->res->json;
480
480
481
    my $suggestion_id = $generated_suggestion->{suggestion_id};
481
    my $suggestion_id = $generated_suggestion->{suggestion_id};
Lines 498-505 subtest 'Permissions tests' => sub { Link Here
498
        }
498
        }
499
    );
499
    );
500
500
501
    $t->delete_ok("//$userid:$password@/api/v1/suggestions/$suggestion_id")->status_is( 204, 'SWAGGER3.2.4' )
501
    $t->delete_ok("//$userid:$password@/api/v1/suggestions/$suggestion_id")->status_is( 204, 'REST3.2.4' )
502
        ->content_is( q{}, 'SWAGGER3.3.4' );
502
        ->content_is( q{}, 'REST3.3.4' );
503
503
504
    $schema->storage->txn_rollback;
504
    $schema->storage->txn_rollback;
505
};
505
};
(-)a/t/db_dependent/api/v1/ticket_updates.t (-10 / +10 lines)
Lines 169-177 subtest 'add_update() tests' => sub { Link Here
169
    my $update_id =
169
    my $update_id =
170
      $t->post_ok(
170
      $t->post_ok(
171
        "//$userid:$password@/api/v1/tickets/$ticket_id/updates" => json =>
171
        "//$userid:$password@/api/v1/tickets/$ticket_id/updates" => json =>
172
          $update )->status_is( 201, 'SWAGGER3.2.1' )->header_like(
172
          $update )->status_is( 201, 'REST3.2.1' )->header_like(
173
        Location => qr|^\/api\/v1\/tickets/\d*|,
173
        Location => qr|^\/api\/v1\/tickets/\d*|,
174
        'SWAGGER3.4.1'
174
        'REST3.4.1'
175
    )->json_is( '/message' => $update->{message} )
175
    )->json_is( '/message' => $update->{message} )
176
      ->json_is( '/public'  => $update->{public} )
176
      ->json_is( '/public'  => $update->{public} )
177
      ->json_is( '/status' => undef )
177
      ->json_is( '/status' => undef )
Lines 223-231 subtest 'add_update() tests' => sub { Link Here
223
    $update_id =
223
    $update_id =
224
      $t->post_ok(
224
      $t->post_ok(
225
        "//$userid:$password@/api/v1/tickets/$ticket_id/updates" => json =>
225
        "//$userid:$password@/api/v1/tickets/$ticket_id/updates" => json =>
226
          $update )->status_is( 201, 'SWAGGER3.2.1' )->header_like(
226
          $update )->status_is( 201, 'REST3.2.1' )->header_like(
227
        Location => qr|^\/api\/v1\/tickets/\d*|,
227
        Location => qr|^\/api\/v1\/tickets/\d*|,
228
        'SWAGGER3.4.1'
228
        'REST3.4.1'
229
    )->json_is( '/message' => $update->{message} )
229
    )->json_is( '/message' => $update->{message} )
230
      ->json_is( '/public'  => $update->{public} )
230
      ->json_is( '/public'  => $update->{public} )
231
      ->json_is( '/status' => undef )
231
      ->json_is( '/status' => undef )
Lines 247-255 subtest 'add_update() tests' => sub { Link Here
247
    $update_id =
247
    $update_id =
248
      $t->post_ok(
248
      $t->post_ok(
249
        "//$userid:$password@/api/v1/tickets/$ticket_id/updates" => json =>
249
        "//$userid:$password@/api/v1/tickets/$ticket_id/updates" => json =>
250
          $update )->status_is( 201, 'SWAGGER3.2.1' )->header_like(
250
          $update )->status_is( 201, 'REST3.2.1' )->header_like(
251
        Location => qr|^\/api\/v1\/tickets/\d*|,
251
        Location => qr|^\/api\/v1\/tickets/\d*|,
252
        'SWAGGER3.4.1'
252
        'REST3.4.1'
253
    )->json_is( '/message' => $update->{message} )
253
    )->json_is( '/message' => $update->{message} )
254
      ->json_is( '/public'  => $update->{public} )
254
      ->json_is( '/public'  => $update->{public} )
255
      ->json_is( '/status' => undef )
255
      ->json_is( '/status' => undef )
Lines 281-289 subtest 'add_update() tests' => sub { Link Here
281
    $update_id =
281
    $update_id =
282
      $t->post_ok(
282
      $t->post_ok(
283
        "//$userid:$password@/api/v1/tickets/$ticket_id/updates" => json =>
283
        "//$userid:$password@/api/v1/tickets/$ticket_id/updates" => json =>
284
          $update )->status_is( 201, 'SWAGGER3.2.1' )->header_like(
284
          $update )->status_is( 201, 'REST3.2.1' )->header_like(
285
        Location => qr|^\/api\/v1\/tickets/\d*|,
285
        Location => qr|^\/api\/v1\/tickets/\d*|,
286
        'SWAGGER3.4.1'
286
        'REST3.4.1'
287
    )->json_is( '/message' => $update->{message} )
287
    )->json_is( '/message' => $update->{message} )
288
      ->json_is( '/public'  => $update->{public} )
288
      ->json_is( '/public'  => $update->{public} )
289
      ->json_is( '/status' => $update->{status} )
289
      ->json_is( '/status' => $update->{status} )
Lines 303-311 subtest 'add_update() tests' => sub { Link Here
303
    $update_id =
303
    $update_id =
304
      $t->post_ok(
304
      $t->post_ok(
305
        "//$userid:$password@/api/v1/tickets/$ticket_id/updates" => json =>
305
        "//$userid:$password@/api/v1/tickets/$ticket_id/updates" => json =>
306
          $update )->status_is( 201, 'SWAGGER3.2.1' )->header_like(
306
          $update )->status_is( 201, 'REST3.2.1' )->header_like(
307
        Location => qr|^\/api\/v1\/tickets/\d*|,
307
        Location => qr|^\/api\/v1\/tickets/\d*|,
308
        'SWAGGER3.4.1'
308
        'REST3.4.1'
309
    )->json_is( '/message' => $update->{message} )
309
    )->json_is( '/message' => $update->{message} )
310
      ->json_is( '/public'  => $update->{public} )
310
      ->json_is( '/public'  => $update->{public} )
311
      ->json_is( '/status' => $update->{status} )
311
      ->json_is( '/status' => $update->{status} )
(-)a/t/db_dependent/api/v1/tickets.t (-6 / +5 lines)
Lines 205-213 subtest 'add() tests' => sub { Link Here
205
    # Authorized attempt to write
205
    # Authorized attempt to write
206
    my $ticket_id =
206
    my $ticket_id =
207
      $t->post_ok( "//$userid:$password@/api/v1/tickets" => json => $ticket )
207
      $t->post_ok( "//$userid:$password@/api/v1/tickets" => json => $ticket )
208
      ->status_is( 201, 'SWAGGER3.2.1' )->header_like(
208
      ->status_is( 201, 'REST3.2.1' )->header_like(
209
        Location => qr|^\/api\/v1\/tickets/\d*|,
209
        Location => qr|^\/api\/v1\/tickets/\d*|,
210
        'SWAGGER3.4.1'
210
        'REST3.4.1'
211
    )->json_is( '/biblio_id' => $ticket->{biblio_id} )
211
    )->json_is( '/biblio_id' => $ticket->{biblio_id} )
212
      ->json_is( '/title'       => $ticket->{title} )
212
      ->json_is( '/title'       => $ticket->{title} )
213
      ->json_is( '/body'        => $ticket->{body} )
213
      ->json_is( '/body'        => $ticket->{body} )
Lines 257-265 subtest 'add() tests' => sub { Link Here
257
257
258
        $ticket_id =
258
        $ticket_id =
259
            $t->post_ok( "//$useridp:$password@/api/v1/public/tickets" => json => $ticket )
259
            $t->post_ok( "//$useridp:$password@/api/v1/public/tickets" => json => $ticket )
260
            ->status_is( 201, 'SWAGGER3.2.1' )->header_like(
260
            ->status_is( 201, 'REST3.2.1' )->header_like(
261
            Location => qr|^\/api\/v1\/public\/tickets/\d*|,
261
            Location => qr|^\/api\/v1\/public\/tickets/\d*|,
262
            'SWAGGER3.4.1'
262
            'REST3.4.1'
263
        )->json_is( '/biblio_id' => $ticket->{biblio_id} )->json_is( '/title' => $ticket->{title} )
263
        )->json_is( '/biblio_id' => $ticket->{biblio_id} )->json_is( '/title' => $ticket->{title} )
264
            ->json_is( '/body' => $ticket->{body} )->json_is( '/reporter_id' => $patron->id )
264
            ->json_is( '/body' => $ticket->{body} )->json_is( '/reporter_id' => $patron->id )
265
            ->tx->res->json->{ticket_id};
265
            ->tx->res->json->{ticket_id};
Lines 404-410 subtest 'delete() tests' => sub { Link Here
404
      ->status_is(403);
404
      ->status_is(403);
405
405
406
    $t->delete_ok("//$userid:$password@/api/v1/tickets/$ticket_id")
406
    $t->delete_ok("//$userid:$password@/api/v1/tickets/$ticket_id")
407
      ->status_is( 204, 'SWAGGER3.2.4' )->content_is( '', 'SWAGGER3.3.4' );
407
      ->status_is( 204, 'REST3.2.4' )->content_is( '', 'REST3.3.4' );
408
408
409
    $t->delete_ok("//$userid:$password@/api/v1/tickets/$ticket_id")
409
    $t->delete_ok("//$userid:$password@/api/v1/tickets/$ticket_id")
410
      ->status_is(404);
410
      ->status_is(404);
411
- 

Return to bug 38929