Commit | Line | Data |
d1710b0f |
1 | #!perl |
2 | |
3 | use strict; |
4 | use warnings; |
5 | use DBI; |
6 | use File::Path; |
7 | use FindBin; |
8 | use Test::More; |
9 | use lib "$FindBin::Bin/lib"; |
10 | |
11 | BEGIN { |
12 | eval { require DBD::SQLite } |
13 | or plan skip_all => |
14 | "DBD::SQLite is required for this test"; |
15 | |
16 | eval { require DBIx::Class } |
17 | or plan skip_all => |
18 | "DBIx::Class is required for this test"; |
19 | |
c388ac9d |
20 | plan tests => 17; |
d1710b0f |
21 | |
d1710b0f |
22 | $ENV{TESTAPP_CONFIG} = { |
23 | name => 'TestApp', |
24 | authentication => { |
25 | default_realm => "users", |
26 | realms => { |
27 | users => { |
28 | credential => { |
29 | 'class' => "Password", |
30 | 'password_field' => 'password', |
31 | 'password_type' => 'clear' |
32 | }, |
33 | store => { |
34 | 'class' => 'DBIx::Class', |
f55cb81e |
35 | 'user_model' => 'TestApp::User', |
d1710b0f |
36 | }, |
37 | }, |
38 | }, |
39 | }, |
40 | }; |
41 | |
42 | $ENV{TESTAPP_PLUGINS} = [ |
43 | qw/Authentication/ |
44 | ]; |
45 | } |
46 | |
d1710b0f |
47 | use Catalyst::Test 'TestApp'; |
48 | |
49 | # log a user in |
50 | { |
51 | ok( my $res = request('http://localhost/user_login?username=joeuser&password=hackme'), 'request ok' ); |
52 | is( $res->content, 'joeuser logged in', 'user logged in ok' ); |
53 | } |
54 | |
55 | # invalid user |
56 | { |
57 | ok( my $res = request('http://localhost/user_login?username=foo&password=bar'), 'request ok' ); |
58 | is( $res->content, 'not logged in', 'user not logged in ok' ); |
59 | } |
60 | |
61 | # disabled user - no disable check |
62 | { |
63 | ok( my $res = request('http://localhost/user_login?username=spammer&password=broken'), 'request ok' ); |
64 | is( $res->content, 'spammer logged in', 'status check - disabled user logged in ok' ); |
65 | } |
66 | |
67 | # disabled user - should fail login |
68 | { |
69 | ok( my $res = request('http://localhost/notdisabled_login?username=spammer&password=broken'), 'request ok' ); |
70 | is( $res->content, 'not logged in', 'status check - disabled user not logged in ok' ); |
71 | } |
72 | |
73 | # log the user out |
74 | { |
75 | ok( my $res = request('http://localhost/user_logout'), 'request ok' ); |
76 | is( $res->content, 'logged out', 'user logged out ok' ); |
77 | } |
78 | |
79 | # searchargs test |
80 | { |
81 | ok( my $res = request('http://localhost/searchargs_login?email=nada%40mucho.net&password=much'), 'request ok' ); |
82 | is( $res->content, 'nuffin logged in', 'searchargs based login ok' ); |
83 | } |
84 | |
85 | # resultset test |
86 | # searchargs test |
87 | { |
88 | ok( my $res = request('http://localhost/resultset_login?email=j%40cpants.org&password=letmein'), 'request ok' ); |
89 | is( $res->content, 'jayk logged in', 'resultset based login ok' ); |
90 | } |
91 | |
c388ac9d |
92 | # invalid user |
93 | { |
94 | ok( my $res = request('http://localhost/bad_login?username=foo&password=bar'), 'request ok' ); |
95 | like( $res->content, qr/only has these columns/, 'incorrect parameters to authenticate throws a useful exception' ); |
96 | } |
97 | |
98 | |
d1710b0f |
99 | { |
f55cb81e |
100 | $ENV{TESTAPP_CONFIG}->{authentication}->{realms}->{users}->{store}->{user_model} = 'Nonexistent::Class'; |
d1710b0f |
101 | my $res = request('http://localhost/user_login?username=joeuser&password=hackme'); |
f55cb81e |
102 | like( $res->content, qr/\$\Qc->model('Nonexistent::Class') did not return a resultset. Did you set user_model correctly?/, 'test for wrong user_class' ); |
d1710b0f |
103 | } |