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