Commit | Line | Data |
2006bd3f |
1 | #!/usr/bin/perl |
2 | |
3 | use strict; |
4 | use warnings; |
5 | |
6 | use Test::More 'no_plan'; |
d1ba091f |
7 | # use KiokuX::Model; |
2006bd3f |
8 | use File::Temp; |
9 | |
10 | use_ok('Text::Tradition::UserStore'); |
11 | |
12 | my $fh = File::Temp->new(); |
13 | my $file = $fh->filename; |
14 | $fh->close; |
15 | my $dsn = "dbi:SQLite:dbname=$file"; |
2006bd3f |
16 | |
ef02228c |
17 | my $user_store = Text::Tradition::UserStore->new('dsn' => $dsn, |
18 | 'extra_args' => { 'create' => 1 } ); |
19 | |
20 | ## passwords |
21 | my $shortpass = 'bloggs'; |
22 | ok(!$user_store->validate_password($shortpass), '"bloggs" is too short for a password'); |
2006bd3f |
23 | |
d1ba091f |
24 | ## create user |
ef02228c |
25 | my $new_user = $user_store->add_user({ username => 'fred', |
26 | password => 'bloggspass'}); |
2006bd3f |
27 | isa_ok($new_user, 'Text::Tradition::User'); |
570cf8ba |
28 | is($new_user->active, 1, 'New user created and active'); |
2006bd3f |
29 | |
d1ba091f |
30 | ## find user |
31 | my $find_user = $user_store->find_user({ username => 'fred'}); |
32 | isa_ok($find_user, 'Text::Tradition::User'); |
ef02228c |
33 | ok($find_user->check_password('bloggspass'), 'Stored & retrieved with correct password'); |
34 | |
35 | ## modify user |
36 | my $changed_user = $user_store->modify_user({ username => 'fred', |
37 | password => 'passbloggs' }); |
38 | isa_ok($changed_user, 'Text::Tradition::User'); |
39 | my $changed = $user_store->find_user({ username => 'fred'}); |
40 | ok($changed->check_password('passbloggs'), 'Modified & retrieved with correct new password'); |
d1ba091f |
41 | |
570cf8ba |
42 | { |
43 | ## deactivate user |
44 | ## Sets all traditions to non-public, deactivates |
45 | my $user = $user_store->add_user({ username => 'testactive', |
46 | password => 'imanactiveuser' }); |
47 | ok($user->active, 'Deactivate test user starts active'); |
48 | |
49 | my $d_user = $user_store->deactivate_user({ username => 'testactive' }); |
50 | is($d_user->active, 0, 'Deactivated user'); |
51 | |
52 | ## TODO - add test where user has traditions to start with |
53 | } |
54 | |
55 | { |
56 | ## reactivate user |
57 | ## reactivates user, does not mess with their traditions (as we don't know which were public to start with) |
58 | |
59 | my $user = $user_store->add_user({ username => 'testinactive', |
60 | password => 'imaninactiveuser' }); |
61 | my $d_user = $user_store->deactivate_user({ username => 'testactive' }); |
62 | ok(!$d_user->active, 'Deactivate test user starts active'); |
63 | |
64 | my $a_user = $user_store->reactivate_user({ username => 'testinactive' }); |
65 | is($a_user->active, 1, 'Re-activated user'); |
66 | } |
67 | |
68 | { |
69 | ## delete user (admin only?) |
70 | my $user = $user_store->add_user({ username => 'testdelete', |
71 | password => 'imgoingtobedeleted' }); |
72 | |
73 | my $gone = $user_store->delete_user({ username => 'testdelete' }); |
74 | |
75 | my $d_user = $user_store->find_user({ username => 'testdelete' }); |
76 | |
77 | ok($gone && !$d_user, 'Deleted user completely from store'); |
78 | } |
d1ba091f |
79 | |