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