File Coverage

t/20-http_username.t
Criterion Covered Total %
statement 74 75 98.6
branch 4 8 50.0
condition n/a
subroutine 12 12 100.0
pod n/a
total 90 95 94.7


line stmt bran cond sub pod time code
1 1     1   5 use strict;
  1         1  
  1         31  
2 1     1   3 use warnings;
  1         1  
  1         19  
3              
4 1     1   560 use Test::More;
  1         14865  
  1         6  
5 1     1   603 use Plack::Test;
  1         1305  
  1         50  
6              
7             BEGIN {
8            
9 1     1   394 use Dancer2;
  1         286469  
  1         6  
10            
11 1     1   42 set session => undef; # explicit
12 1         22623 set plugins => {
13             'HTTP::Auth::Extensible' => {
14             realms => {
15             some_realm => {
16             scheme => "Basic",
17             provider => "Config",
18             users => [
19             { user => "dave",
20             pass => "beer",
21             name => "David Precious",
22             roles => [
23             'BeerDrinker',
24             'VodkaDrinker',
25             ],
26             },
27             ]
28             }
29             }
30             }
31             };
32 1         117 set logger => "file";
33 1         9712 set log => "core";
34 1         198 set show_errors => 1;
35 1         61 set serializer => "YAML";
36            
37 1     1   56600 use Dancer2::Plugin::HTTP::Auth::Extensible;
  1         3  
  1         3  
38 1     1   36 no warnings 'uninitialized';
  1         1  
  1         217  
39              
40             get '/auth_http_username' => http_requires_authentication sub {
41 1         4 my $variable = http_username;
42 1 50       6 return qq|variable got: | unless defined $variable;
43 1         5 return qq|variable got: '$variable'|;
44 1         15795 };
45            
46             get '/http_username' => sub {
47 1         4319 my $variable = http_username;
48 1 50       15 return qq|variable got: | unless defined $variable;
49 0         0 return qq|variable got: '$variable'|;
50 1         3836 };
51            
52             put '/auth_http_username' => http_requires_authentication sub {
53 1         4 http_username(params->{new});
54 1         6 my $variable = http_username;
55 1 50       7 return qq|variable set: | unless defined $variable;
56 1         5 return qq|variable set: '$variable'|;
57 1         636 };
58              
59             put '/http_username' => sub {
60 1         4136 http_username(params->{new});
61 1         7 my $variable = http_username;
62 1 50       8 return qq|variable set: | unless defined $variable;
63 1         40 return qq|variable set: '$variable'|;
64 1         340 };
65              
66             } # BEGIN
67              
68 1         7 my $app = Dancer2->runner->psgi_app;
69              
70             {
71 1         3896 is (
  1         6  
72             ref $app,
73             'CODE',
74             'Got app'
75             );
76             };
77              
78             test_psgi $app, sub {
79 1     1   6094 my $cb = shift;
80 1         7 my $req = HTTP::Request->new( GET => '/auth_http_username');
81 1         3347 $req->authorization_basic ( 'dave', 'beer');
82 1         200 my $res = $cb->( $req );
83 1         7246 like (
84             $res->content,
85             qr|variable got: '.*'|,
86             'get http_username authenticated'
87             );
88 1         326 };
89              
90             test_psgi $app, sub {
91 1     1   91 my $cb = shift;
92 1         8 my $req = HTTP::Request->new( GET => '/http_username');
93 1         92 $req->authorization_basic ( 'dave', 'beer');
94 1         60 my $res = $cb->( $req );
95 1         2638 like (
96             $res->content,
97             qr|variable got: |,
98             'get http_username'
99             );
100 1         349 };
101              
102             test_psgi $app, sub {
103 1     1   92 my $cb = shift;
104 1         8 my $req = HTTP::Request->new( PUT => '/auth_http_username');
105 1         77 $req->authorization_basic ( 'dave', 'beer');
106 1         56 $req->uri->query_form( new => 'NEW');
107 1         107 my $res = $cb->( $req );
108 1         2587 like (
109             $res->content,
110             qr|variable set: 'NEW'|,
111             'put http_username authenticated'
112             );
113 1         287 };
114              
115             test_psgi $app, sub {
116 1     1   87 my $cb = shift;
117 1         7 my $req = HTTP::Request->new( PUT => '/http_username');
118 1         73 $req->authorization_basic ( 'dave', 'beer');
119 1         55 $req->uri->query_form( new => 'NEW');
120 1         57 my $res = $cb->( $req );
121 1         2623 like (
122             $res->content,
123             qr|variable set: 'NEW'|,
124             'put http_username'
125             );
126 1         493 };
127              
128 1         460 done_testing();