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

(-)a/Koha/REST/V1.pm (+11 lines)
Lines 52-57 sub startup { Link Here
52
    }
52
    }
53
53
54
    $self->app->hook(before_render => \&default_exception_handling);
54
    $self->app->hook(before_render => \&default_exception_handling);
55
    $self->app->hook(before_render => \&log_response);
55
56
56
    $self->plugin(OpenAPI => {
57
    $self->plugin(OpenAPI => {
57
        url => $self->home->rel_file("api/v1/swagger/swagger.json"),
58
        url => $self->home->rel_file("api/v1/swagger/swagger.json"),
Lines 100-105 sub default_exception_handling { Link Here
100
    }
101
    }
101
}
102
}
102
103
104
=head3 log_response
105
106
=cut
107
108
sub log_response {
109
    my ($c, $args) = @_;
110
111
    eval { $c->app->log->debug(Mojo::JSON::encode_json($args)) };
112
}
113
103
sub hateoas {
114
sub hateoas {
104
    my ($c, $responseBody, @refAndUrls) = @_;
115
    my ($c, $responseBody, @refAndUrls) = @_;
105
116
(-)a/t/db_dependent/api/v1.t (-3 / +46 lines)
Lines 17-23 Link Here
17
17
18
use Modern::Perl;
18
use Modern::Perl;
19
19
20
use Test::More tests => 1;
20
use Test::More tests => 2;
21
use Test::Mojo;
21
use Test::Mojo;
22
use Test::Warn;
22
use Test::Warn;
23
23
Lines 29-35 use Mojolicious::Lite; Link Here
29
use Try::Tiny;
29
use Try::Tiny;
30
30
31
my $config = {
31
my $config = {
32
    'log4perl.logger.rest.Koha.REST.V1' => 'ERROR, TEST',
32
    'log4perl.logger.rest.Koha.REST.V1' => 'DEBUG, TEST',
33
    'log4perl.appender.TEST' => 'Log::Log4perl::Appender::TestBuffer',
33
    'log4perl.appender.TEST' => 'Log::Log4perl::Appender::TestBuffer',
34
    'log4perl.appender.TEST.layout' => 'SimpleLayout',
34
    'log4perl.appender.TEST.layout' => 'SimpleLayout',
35
};
35
};
Lines 103-108 subtest 'default_exception_handling() tests' => sub { Link Here
103
    };
103
    };
104
};
104
};
105
105
106
subtest 'log_response() tests' => sub {
107
    plan tests => 12;
108
109
    $t->app->routes->get('/response/log/json' => sub {
110
        $_[0]->render( status => 200, json => { wow => "it worked" } )
111
    });
112
    $t->app->routes->get('/response/log/other' => sub {
113
        $_[0]->render( status => 200, data => '<b>ERROR!</b>' )
114
    });
115
    $t->app->routes->get('/response/log/500' => sub {
116
        die;
117
    });
118
119
    my $appender = Log::Log4perl->appenders->{TEST};
120
121
    $t->get_ok('/response/log/json')
122
      ->status_is(200)
123
      ->json_is('/wow' => 'it worked');
124
    is($appender->buffer,
125
       "DEBUG - {\"json\":{\"wow\":\"it worked\"},\"status\":200}\n",
126
       'Found response JSON'
127
    );
128
    $appender->{appender}->{buffer} = undef;
129
130
    $t->get_ok('/response/log/other')
131
      ->status_is(200)
132
      ->content_is('<b>ERROR!</b>');
133
    is($appender->buffer,
134
       "DEBUG - {\"data\":\"<b>ERROR!<\\/b>\",\"status\":200}\n",
135
       'Found response JSON'
136
    );
137
    $appender->{appender}->{buffer} = undef;
138
139
    $t->get_ok('/response/log/500')
140
      ->status_is(500)
141
      ->json_is('/error' => 'Something went wrong, check the logs.');
142
    like($appender->buffer,
143
       qr/DEBUG - \{"json":\{"error":"Something went wrong, check the logs."\},"status":500\}\n/,
144
       'Found response error content'
145
    );
146
    $appender->{appender}->{buffer} = undef;
147
148
};
149
106
sub add_default_exception_routes {
150
sub add_default_exception_routes {
107
    my ($t) = @_;
151
    my ($t) = @_;
108
152
109
- 

Return to bug 19652