From b339833b71c22fabbeca0c4c3698cd1fa52804d5 Mon Sep 17 00:00:00 2001 From: Lari Taskula Date: Fri, 17 Feb 2017 14:59:24 +0200 Subject: [PATCH] Bug 18137: Make /patrons Mojolicious::Plugin::OpenAPI compatible Also: - adding some missing and new response definitions into Swagger spec. - fixing failing test due to Bug 17932's change of boolean values To test: 1. prove t/db_dependent/api/v1/patrons.t --- Koha/REST/V1/Patron.pm | 17 +++++++---------- api/v1/swagger/paths/patrons.json | 38 ++++++++++++++++++++++++++++++++++++++ t/db_dependent/api/v1/patrons.t | 2 +- 3 files changed, 46 insertions(+), 11 deletions(-) diff --git a/Koha/REST/V1/Patron.pm b/Koha/REST/V1/Patron.pm index 477980e..7cc7bed 100644 --- a/Koha/REST/V1/Patron.pm +++ b/Koha/REST/V1/Patron.pm @@ -22,26 +22,23 @@ use Mojo::Base 'Mojolicious::Controller'; use Koha::Patrons; sub list { - my ($c, $args, $cb) = @_; - - my $user = $c->stash('koha.user'); + my $c = shift->openapi->valid_input or return; my $patrons = Koha::Patrons->search; - $c->$cb($patrons, 200); + return $c->render(status => 200, openapi => $patrons); } sub get { - my ($c, $args, $cb) = @_; - - my $user = $c->stash('koha.user'); + my $c = shift->openapi->valid_input or return; - my $patron = Koha::Patrons->find($args->{borrowernumber}); + my $borrowernumber = $c->validation->param('borrowernumber'); + my $patron = Koha::Patrons->find($borrowernumber); unless ($patron) { - return $c->$cb({error => "Patron not found"}, 404); + return $c->render(status => 404, openapi => { error => "Patron not found." }); } - return $c->$cb($patron, 200); + return $c->render(status => 200, openapi => $patron); } 1; diff --git a/api/v1/swagger/paths/patrons.json b/api/v1/swagger/paths/patrons.json index 67632e1..204ccdf 100644 --- a/api/v1/swagger/paths/patrons.json +++ b/api/v1/swagger/paths/patrons.json @@ -1,6 +1,7 @@ { "/patrons": { "get": { + "x-mojo-to": "Patron#list", "operationId": "listPatrons", "tags": ["patrons"], "produces": [ @@ -16,11 +17,29 @@ } } }, + "401": { + "description": "Authentication required", + "schema": { + "$ref": "../definitions.json#/error" + } + }, "403": { "description": "Access forbidden", "schema": { "$ref": "../definitions.json#/error" } + }, + "500": { + "description": "Internal server error", + "schema": { + "$ref": "../definitions.json#/error" + } + }, + "503": { + "description": "Under maintenance", + "schema": { + "$ref": "../definitions.json#/error" + } } }, "x-koha-authorization": { @@ -32,6 +51,7 @@ }, "/patrons/{borrowernumber}": { "get": { + "x-mojo-to": "Patron#get", "operationId": "getPatron", "tags": ["patrons"], "parameters": [{ @@ -48,6 +68,12 @@ "$ref": "../definitions.json#/patron" } }, + "401": { + "description": "Authentication required", + "schema": { + "$ref": "../definitions.json#/error" + } + }, "403": { "description": "Access forbidden", "schema": { @@ -59,6 +85,18 @@ "schema": { "$ref": "../definitions.json#/error" } + }, + "500": { + "description": "Internal server error", + "schema": { + "$ref": "../definitions.json#/error" + } + }, + "503": { + "description": "Under maintenance", + "schema": { + "$ref": "../definitions.json#/error" + } } }, "x-koha-authorization": { diff --git a/t/db_dependent/api/v1/patrons.t b/t/db_dependent/api/v1/patrons.t index 6b3f51f..c41523b 100644 --- a/t/db_dependent/api/v1/patrons.t +++ b/t/db_dependent/api/v1/patrons.t @@ -129,6 +129,6 @@ $t->request_ok($tx) ->status_is(200) ->json_is('/borrowernumber' => $borrower->{ borrowernumber }) ->json_is('/surname' => $borrower->{ surname }) - ->json_is('/lost' => 1 ); + ->json_is('/lost' => Mojo::JSON->true ); $dbh->rollback; -- 1.9.1