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 | |
6bd97524 |
16 | plan tests => 19; |
d1710b0f |
17 | |
b4319877 |
18 | use TestApp; |
19 | TestApp->config( { |
d1710b0f |
20 | name => 'TestApp', |
21 | authentication => { |
22 | default_realm => "users", |
23 | realms => { |
24 | users => { |
25 | credential => { |
26 | 'class' => "Password", |
27 | 'password_field' => 'password', |
28 | 'password_type' => 'clear' |
29 | }, |
30 | store => { |
31 | 'class' => 'DBIx::Class', |
f55cb81e |
32 | 'user_model' => 'TestApp::User', |
d1710b0f |
33 | }, |
34 | }, |
35 | }, |
36 | }, |
b4319877 |
37 | } ); |
d1710b0f |
38 | |
b4319877 |
39 | TestApp->setup( |
d1710b0f |
40 | qw/Authentication/ |
b4319877 |
41 | ); |
d1710b0f |
42 | } |
43 | |
d1710b0f |
44 | use Catalyst::Test 'TestApp'; |
45 | |
46 | # log a user in |
47 | { |
48 | ok( my $res = request('http://localhost/user_login?username=joeuser&password=hackme'), 'request ok' ); |
49 | is( $res->content, 'joeuser logged in', 'user logged in ok' ); |
50 | } |
51 | |
52 | # invalid user |
53 | { |
54 | ok( my $res = request('http://localhost/user_login?username=foo&password=bar'), 'request ok' ); |
55 | is( $res->content, 'not logged in', 'user not logged in ok' ); |
56 | } |
57 | |
58 | # disabled user - no disable check |
59 | { |
60 | ok( my $res = request('http://localhost/user_login?username=spammer&password=broken'), 'request ok' ); |
61 | is( $res->content, 'spammer logged in', 'status check - disabled user logged in ok' ); |
62 | } |
63 | |
64 | # disabled user - should fail login |
65 | { |
66 | ok( my $res = request('http://localhost/notdisabled_login?username=spammer&password=broken'), 'request ok' ); |
67 | is( $res->content, 'not logged in', 'status check - disabled user not logged in ok' ); |
68 | } |
69 | |
70 | # log the user out |
71 | { |
72 | ok( my $res = request('http://localhost/user_logout'), 'request ok' ); |
73 | is( $res->content, 'logged out', 'user logged out ok' ); |
74 | } |
75 | |
76 | # searchargs test |
77 | { |
78 | ok( my $res = request('http://localhost/searchargs_login?email=nada%40mucho.net&password=much'), 'request ok' ); |
79 | is( $res->content, 'nuffin logged in', 'searchargs based login ok' ); |
80 | } |
81 | |
6bd97524 |
82 | # result test |
83 | { |
84 | ok( my $res = request('http://localhost/result_login?email=j%40cpants.org&password=letmein'), 'request ok' ); |
85 | is( $res->content, 'jayk logged in', 'resultset based login ok' ); |
86 | } |
87 | |
d1710b0f |
88 | # resultset test |
d1710b0f |
89 | { |
90 | ok( my $res = request('http://localhost/resultset_login?email=j%40cpants.org&password=letmein'), 'request ok' ); |
91 | is( $res->content, 'jayk logged in', 'resultset based login ok' ); |
92 | } |
93 | |
c388ac9d |
94 | # invalid user |
95 | { |
96 | ok( my $res = request('http://localhost/bad_login?username=foo&password=bar'), 'request ok' ); |
97 | like( $res->content, qr/only has these columns/, 'incorrect parameters to authenticate throws a useful exception' ); |
98 | } |
99 | |
100 | |
d1710b0f |
101 | { |
b4319877 |
102 | TestApp->config->{authentication}->{realms}->{users}->{store}->{user_model} = 'Nonexistent::Class'; |
d1710b0f |
103 | my $res = request('http://localhost/user_login?username=joeuser&password=hackme'); |
f55cb81e |
104 | 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 |
105 | } |