6 use Test::More 'no_plan';
10 use_ok('Text::Tradition::UserStore');
12 my $fh = File::Temp->new();
13 my $file = $fh->filename;
15 my $dsn = "dbi:SQLite:dbname=$file";
17 my $user_store = Text::Tradition::UserStore->new('dsn' => $dsn,
18 'extra_args' => { 'create' => 1 } );
21 my $shortpass = 'bloggs';
22 ok(!$user_store->validate_password($shortpass), '"bloggs" is too short for a password');
25 my $new_user = $user_store->add_user({ username => 'fred',
26 password => 'bloggspass'});
27 isa_ok($new_user, 'Text::Tradition::User');
28 is($new_user->active, 1, 'New user created and active');
31 my $find_user = $user_store->find_user({ username => 'fred'});
32 isa_ok($find_user, 'Text::Tradition::User');
33 ok($find_user->check_password('bloggspass'), 'Stored & retrieved with correct password');
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');
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');
49 my $d_user = $user_store->deactivate_user({ username => 'testactive' });
50 is($d_user->active, 0, 'Deactivated user');
52 ## TODO - add test where user has traditions to start with
57 ## reactivates user, does not mess with their traditions (as we don't know which were public to start with)
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');
64 my $a_user = $user_store->reactivate_user({ username => 'testinactive' });
65 is($a_user->active, 1, 'Re-activated user');
69 ## delete user (admin only?)
70 my $user = $user_store->add_user({ username => 'testdelete',
71 password => 'imgoingtobedeleted' });
73 my $gone = $user_store->delete_user({ username => 'testdelete' });
75 my $d_user = $user_store->find_user({ username => 'testdelete' });
77 ok($gone && !$d_user, 'Deleted user completely from store');