Bug 23859: Make POST add the Location header on cities endpoint
authorTomas Cohen Arazi <tomascohen@theke.io>
Mon, 21 Oct 2019 17:42:28 +0000 (14:42 -0300)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Fri, 1 Nov 2019 08:48:18 +0000 (08:48 +0000)
According to the coding guidelines, this endpoint should be adding the
Location header on POST actions.

To test:
1. Apply the tests patch
2. Run:
    $ kshell
    k$ prove t/db_dependent/api/v1/cities.t
=> FAIL: Tests fail!
3. Apply this patch
4. Repeat (1)
=> SUCCESS: Tests pass!
5. Sign off :-D

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Koha/REST/V1/Cities.pm
api/v1/swagger/paths/cities.json

index 222f7c0..793880c 100644 (file)
@@ -78,7 +78,11 @@ sub add {
     return try {
         my $city = Koha::City->new( _to_model( $c->validation->param('body') ) );
         $city->store;
-        return $c->render( status => 200, openapi => $city->to_api );
+        $c->res->headers->location( $c->req->url->to_string . '/' . $city->cityid );
+        return $c->render(
+            status  => 201,
+            openapi => $city->to_api
+        );
     }
     catch {
         if ( $_->isa('DBIx::Class::Exception') ) {
index 5779a48..77ee394 100644 (file)
@@ -84,7 +84,7 @@
         "application/json"
       ],
       "responses": {
-        "200": {
+        "201": {
           "description": "City added",
           "schema": {
             "$ref": "../definitions.json#/city"