Commit | Line | Data |
2d5279cd |
1 | use strict; |
2 | use warnings; |
3 | no warnings 'once'; |
4 | use FindBin; |
5 | use lib "$FindBin::Bin/lib"; |
6 | |
7 | use Test::More; |
8 | |
9 | use File::Spec; |
10 | use File::Temp qw/ tempdir /; |
11 | |
12 | use TestApp; |
13 | |
14 | use Plack::Builder; |
15 | use Plack::Test; |
16 | use HTTP::Request::Common; |
17 | |
18 | { |
19 | package MockHandle; |
20 | use Moose; |
21 | |
22 | has 'log' => (is => 'ro', isa => 'ArrayRef', traits => ['Array'], default => sub { [] }, |
23 | handles => { |
24 | 'logs' => 'elements', |
25 | 'print' => 'push', |
26 | } |
27 | ); |
28 | |
29 | no Moose; |
30 | } |
31 | |
32 | |
33 | subtest "psgi.errors" => sub{ |
34 | |
35 | my $handle = MockHandle->new(); |
36 | my $app = builder { |
37 | |
38 | enable sub { |
39 | my $app = shift; |
40 | sub { |
41 | my $env = shift; |
42 | $env->{'psgi.errors'} = $handle; |
43 | my $res = $app->($env); |
44 | return $res; |
45 | }; |
46 | }; |
47 | TestApp->psgi_app; |
48 | }; |
49 | |
50 | |
51 | test_psgi $app, sub { |
52 | my $cb = shift; |
53 | my $res = $cb->(GET "/log/debug"); |
54 | my @logs = $handle->logs; |
55 | is(scalar(@logs), 1, "one event output"); |
56 | like($logs[0], qr/debug$/, "event matches test data"); |
57 | }; |
58 | }; |
59 | |
60 | subtest "psgix.logger" => sub { |
61 | |
62 | my @logs; |
63 | my $logger = sub { |
64 | push(@logs, @_); |
65 | }; |
66 | my $app = builder { |
67 | enable sub { |
68 | my $app = shift; |
69 | sub { |
70 | my $env = shift; |
71 | $env->{'psgix.logger'} = $logger; |
72 | $app->($env); |
73 | }; |
74 | }; |
75 | TestApp->psgi_app; |
76 | }; |
77 | |
78 | test_psgi $app, sub { |
79 | my $cb = shift; |
80 | my $res = $cb->(GET "/log/debug"); |
81 | is(scalar(@logs), 1, "one event logged"); |
82 | is_deeply($logs[0], { level => 'debug', message => "debug" }, "right stuff"); |
83 | }; |
84 | }; |
85 | |
86 | |
87 | |
88 | done_testing; |