diff options
Diffstat (limited to 't/01-basic.t')
-rw-r--r-- | t/01-basic.t | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/t/01-basic.t b/t/01-basic.t new file mode 100644 index 0000000..9646510 --- /dev/null +++ b/t/01-basic.t @@ -0,0 +1,81 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test::More; +use Plack::Test; + +use HTTP::Request::Common; +use Path::Class; +use Plack::Builder; + +{ + my $app = builder { + enable 'Auth::Htpasswd', + file => file(__FILE__)->dir->subdir('data', '01')->file('htpasswd'); + sub { + [ + 200, + [ 'Content-Type' => 'text/plain' ], + [ "Hello $_[0]->{REMOTE_USER}" ], + ] + }; + }; + + test_psgi app => $app, client => sub { + my $cb = shift; + + { + my $res = $cb->(GET "/"); + is($res->code, 401, "plain request gets 401"); + } + + { + my $res = $cb->( + GET "/", "Authorization" => "Basic dGVzdDplZGNiYQ", + ); + is($res->code, 401, "request with wrong password gets 401"); + } + + { + my $res = $cb->( + GET "/", "Authorization" => "Basic dHNldDphYmNkZQ", + ); + is($res->code, 401, "request with unknown username gets 401"); + } + + { + my $res = $cb->( + GET "/", "Authorization" => "Basic dGVzdDphYmNkZQ", + ); + is($res->code, 200, "valid authentication succeeds"); + is($res->content, "Hello test", "and gets the right content"); + } + }; +} + +{ + my $app = builder { + enable 'Auth::Htpasswd', + file => file(__FILE__)->dir->subdir('data', '01', 'htpasswd'), + realm => 'my realm'; + sub { + [ + 200, + [ 'Content-Type' => 'text/plain' ], + [ "Hello $_[0]->{REMOTE_USER}" ], + ] + }; + }; + + test_psgi app => $app, client => sub { + my $cb = shift; + + { + my $res = $cb->(GET "/"); + is($res->header('WWW-Authenticate'), 'Basic realm="my realm"', + "can set realm"); + } + }; +} + +done_testing; |