Tag old version. Update trunk to new version with additional tests
[catagits/Catalyst-Authentication-Credential-HTTP-Proxy.git] / t / live_app.t
CommitLineData
b2cd5ce7 1#!/usr/bin/perl
2use strict;
3use warnings;
4use Test::More;
5BEGIN {
6 eval { require Test::WWW::Mechanize::Catalyst }
7 or plan skip_all =>
8 "Test::WWW::Mechanize::Catalyst is needed for this test";
9 plan tests => 9;
10}
11use HTTP::Request;
12{
13 package AuthTestApp;
14 use Catalyst qw/
15 Authentication
16 /;
17 use Test::More;
18 our %users;
19 __PACKAGE__->config(authentication => {
20 default_realm => 'test_proxy',
21 realms => {
22 test => {
23 store => {
24 class => 'Minimal',
25 users => \%users,
26 },
27 credential => {
28 class => 'HTTP',
29 type => 'basic',
30 password_type => 'clear',
31 password_field => 'password'
32 },
33 },
34 test_proxy => {
35 store => {
36 class => 'Minimal',
37 users => {
38 foo => { password => 'proxypass' }
39 },
40 },
41 credential => {
42 class => 'HTTP::Proxy',
43 url => 'http://localhost/moose',
44 type => 'basic',
45 },
46 }
47 },
48 });
49 sub moose : Local {
50 my ( $self, $c ) = @_;
51 $c->authenticate({}, 'test');
52 $c->res->body( 'test realm:' . $c->user->id );
53 }
54 sub yak : Local {
55 my ( $self, $c ) = @_;
56 $c->authenticate({}, 'test_proxy');
57 $c->res->body( 'test_proxy realm:' . $c->user->id );
58 }
59 %users = (
60 foo => { password => "s3cr3t", },
61 );
62 __PACKAGE__->setup;
63}
64use Test::WWW::Mechanize::Catalyst qw/AuthTestApp/;
65{
66 no warnings qw/once redefine/;
67 *Catalyst::Authentication::Credential::HTTP::Proxy::User::new = sub { Test::WWW::Mechanize::Catalyst->new };
68}
69SKIP: {
70
71 skip 'Catalyst engine is not reenterant, this will not work', 5;
72 last;
73
74 my $mech = Test::WWW::Mechanize::Catalyst->new;
75 { # HTTP, no auth
76# $mech->get("http://localhost/moose");
77 is( $mech->status, 401, "status is 401" ) or die $mech->content;
78 $mech->content_lacks( "foo", "no output" );
79 }
80
81 {# HTTP with auth
82 my $r = HTTP::Request->new( GET => "http://localhost/moose" );
83 $r->authorization_basic(qw/foo s3cr3t/);
84# $mech->request($r);
85 is( $mech->status, 200, "status is 200" );
86 $mech->content_contains( "test realm:foo", "test realm:foo output" );
87 }
88
89 { # HTTP with other auth
90 my $r = HTTP::Request->new( GET => "http://localhost/moose" );
91 $r->authorization_basic(qw/foo proxypass/);
92# $mech->request($r);
93 is( $mech->status, 401, "status is 401" ) or die $mech->content;
94 }
95}
96
97SKIP: {
98
99 skip 'Catalyst engine is not reenterant, this will not work', 4;
100 last;
101
102 my $mech = Test::WWW::Mechanize::Catalyst->new;
103 { # Proxy, no auth
104# $mech->get("http://localhost/yak");
105 is( $mech->status, 401, "status is 401" ) or die $mech->content;
106 $mech->content_lacks( "foo", "no output" );
107 }
108
109 { # Proxy with other auth
110 my $r = HTTP::Request->new( GET => "http://localhost/yak" );
111 $r->authorization_basic(qw/foo s3cr3t/);
112# $mech->request($r);
113 is( $mech->status, 401, "status is 401" ) or die $mech->content;
114 }
115
116 { # HTTP with other auth
117 my $r = HTTP::Request->new( GET => "http://localhost/yak" );
118 $r->authorization_basic(qw/foo proxypass/);
119# $mech->request($r);
120 is( $mech->status, 200, "status is 200" );
121 $mech->content_contains( "test_proxy realm:foo", "test_proxy realm:foo output" );
122 }
123}