6 use Test::More 'no_plan';
9 use_ok('Text::Tradition::Directory');
11 my $fh = File::Temp->new();
12 my $file = $fh->filename;
14 my $dsn = "dbi:SQLite:dbname=$file";
16 my $user_store = Text::Tradition::Directory->new('dsn' => $dsn,
17 'extra_args' => { 'create' => 1 } );
19 my $scope = $user_store->new_scope;
22 my $shortpass = 'bloggs';
23 ok(!$user_store->validate_password($shortpass), '"bloggs" is too short for a password');
26 my $new_user = $user_store->add_user({ username => 'fred',
27 password => 'bloggspass'});
28 isa_ok($new_user, 'Text::Tradition::User');
29 is($new_user->active, 1, 'New user created and active');
32 my $find_user = $user_store->find_user({ username => 'fred'});
33 isa_ok($find_user, 'Text::Tradition::User');
34 ok($find_user->check_password('bloggspass'), 'Stored & retrieved with correct password');
37 my $changed_user = $user_store->modify_user({ username => 'fred',
38 password => 'passbloggs' });
39 isa_ok($changed_user, 'Text::Tradition::User');
40 my $changed = $user_store->find_user({ username => 'fred'});
41 ok($changed->check_password('passbloggs'), 'Modified & retrieved with correct new password');
45 ## Sets all traditions to non-public, deactivates
46 my $user = $user_store->add_user({ username => 'testactive',
47 password => 'imanactiveuser' });
48 ok($user->active, 'Deactivate test user starts active');
50 my $d_user = $user_store->deactivate_user({ username => 'testactive' });
51 is($d_user->active, 0, 'Deactivated user');
53 ## TODO - add test where user has traditions to start with
58 ## reactivates user, does not mess with their traditions (as we don't know which were public to start with)
60 my $user = $user_store->add_user({ username => 'testinactive',
61 password => 'imaninactiveuser' });
62 my $d_user = $user_store->deactivate_user({ username => 'testactive' });
63 ok(!$d_user->active, 'Deactivate test user starts active');
65 my $a_user = $user_store->reactivate_user({ username => 'testinactive' });
66 is($a_user->active, 1, 'Re-activated user');
70 ## delete user (admin only?)
71 my $user = $user_store->add_user({ username => 'testdelete',
72 password => 'imgoingtobedeleted' });
74 my $gone = $user_store->delete_user({ username => 'testdelete' });
76 my $d_user = $user_store->find_user({ username => 'testdelete' });
78 ok($gone && !$d_user, 'Deleted user completely from store');
84 my $t = Text::Tradition->new(
87 'file' => 't/data/simple.txt',
90 my $uuid = $user_store->save($t);
91 my $user = $user_store->add_user({ username => 'testadd',
92 password => 'testingtraditions' });
93 $user->add_tradition($t);
94 $user_store->update($user);
95 # $userstore->update($t);
97 is( scalar @{$user->traditions}, 1, 'Added one tradition');
99 my @tlist = $user_store->traditionlist($user->kiokudb_object_id);
100 is($tlist[0]->name, $t->name, 'Traditionlist returns stored user->tradition');