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 | |
20 | plan tests => 15; |
21 | |
22 | $ENV{TESTAPP_DB_FILE} = "$FindBin::Bin/auth.db" unless exists($ENV{TESTAPP_DB_FILE}); |
23 | |
24 | $ENV{TESTAPP_CONFIG} = { |
25 | name => 'TestApp', |
26 | authentication => { |
27 | default_realm => "users", |
28 | realms => { |
29 | users => { |
30 | credential => { |
31 | 'class' => "Password", |
32 | 'password_field' => 'password', |
33 | 'password_type' => 'clear' |
34 | }, |
35 | store => { |
36 | 'class' => 'DBIx::Class', |
37 | 'user_class' => 'TestApp::User', |
38 | }, |
39 | }, |
40 | }, |
41 | }, |
42 | }; |
43 | |
44 | $ENV{TESTAPP_PLUGINS} = [ |
45 | qw/Authentication/ |
46 | ]; |
47 | } |
48 | |
49 | use SetupDB; |
50 | |
51 | use Catalyst::Test 'TestApp'; |
52 | |
53 | # log a user in |
54 | { |
55 | ok( my $res = request('http://localhost/user_login?username=joeuser&password=hackme'), 'request ok' ); |
56 | is( $res->content, 'joeuser logged in', 'user logged in ok' ); |
57 | } |
58 | |
59 | # invalid user |
60 | { |
61 | ok( my $res = request('http://localhost/user_login?username=foo&password=bar'), 'request ok' ); |
62 | is( $res->content, 'not logged in', 'user not logged in ok' ); |
63 | } |
64 | |
65 | # disabled user - no disable check |
66 | { |
67 | ok( my $res = request('http://localhost/user_login?username=spammer&password=broken'), 'request ok' ); |
68 | is( $res->content, 'spammer logged in', 'status check - disabled user logged in ok' ); |
69 | } |
70 | |
71 | # disabled user - should fail login |
72 | { |
73 | ok( my $res = request('http://localhost/notdisabled_login?username=spammer&password=broken'), 'request ok' ); |
74 | is( $res->content, 'not logged in', 'status check - disabled user not logged in ok' ); |
75 | } |
76 | |
77 | # log the user out |
78 | { |
79 | ok( my $res = request('http://localhost/user_logout'), 'request ok' ); |
80 | is( $res->content, 'logged out', 'user logged out ok' ); |
81 | } |
82 | |
83 | # searchargs test |
84 | { |
85 | ok( my $res = request('http://localhost/searchargs_login?email=nada%40mucho.net&password=much'), 'request ok' ); |
86 | is( $res->content, 'nuffin logged in', 'searchargs based login ok' ); |
87 | } |
88 | |
89 | # resultset test |
90 | # searchargs test |
91 | { |
92 | ok( my $res = request('http://localhost/resultset_login?email=j%40cpants.org&password=letmein'), 'request ok' ); |
93 | is( $res->content, 'jayk logged in', 'resultset based login ok' ); |
94 | } |
95 | |
96 | { |
97 | $ENV{TESTAPP_CONFIG}->{authentication}->{realms}->{users}->{store}->{user_class} = 'Nonexistent::Class'; |
98 | my $res = request('http://localhost/user_login?username=joeuser&password=hackme'); |
99 | like( $res->content, qr/\$\Qc->model('Nonexistent::Class') did not return a resultset. Did you set user_class correctly?/, 'test for wrong user_class' ); |
100 | } |
101 | |
102 | |
103 | |
104 | |
105 | # clean up |
106 | unlink $ENV{TESTAPP_DB_FILE}; |