6 use Test::More tests => 11;
7 use Test::MockObject::Extends;
13 my $m; BEGIN { use_ok($m = "Catalyst::Plugin::Authentication::Credential::HTTP") }
15 can_ok( $m, "authenticate_http" );
16 can_ok( $m, "authorization_required" );
17 can_ok( $m, "authorization_required_response" );
19 my $req = Test::MockObject->new;
20 my $req_headers = HTTP::Headers->new;
22 $req->set_always( headers => $req_headers );
24 my $res = Test::MockObject->new;
27 $res->mock(status => sub { $status = $_[1] });
29 my $res_headers = HTTP::Headers->new;
30 $res->set_always( headers => $res_headers );
32 my $c = Test::MockObject::Extends->new( $m );
35 $c->mock( login => sub { shift; @login_info = @_; 1 } );
36 $c->set_always( config => {} );
37 $c->set_always( req => $req );
38 $c->set_always( res => $res );
41 ok( !$c->authenticate_http, "http auth fails without header");
43 $req_headers->authorization_basic( qw/foo bar/ );
45 ok( $c->authenticate_http, "auth successful with header");
46 is_deeply( \@login_info, [qw/foo bar/], "login info delegated");
49 $c->authorization_required
50 } "no detach on authorization required with successful authentication";
56 $c->authorization_required;
57 } qr/^ $Catalyst::DETACH $/x, "detached on no authorization required with bad auth";
59 is( $status, 401, "401 status code" );
60 like( $res_headers->www_authenticate, qr/^Basic/, "WWW-Authenticate header set");