analysis script for upcoming presentation
[scpubgit/stemmatology.git] / t / text_tradition_user.t
index 5297df4..a401ebe 100644 (file)
@@ -5,6 +5,7 @@ use warnings;
 
 use Test::More 'no_plan';
 use File::Temp;
+use TryCatch;
 
 use_ok('Text::Tradition::Directory');
 
@@ -21,12 +22,22 @@ my $scope = $user_store->new_scope;
 ## passwords
 my $shortpass = 'bloggs';
 ok(!$user_store->validate_password($shortpass), '"bloggs" is too short for a password');
+try {
+       my $dud_user = $user_store->add_user({ username => 'joe',
+                                                                                  password => $shortpass });
+       ok( 0, "User with short password should not have been created" );
+} catch ( Text::Tradition::Error $e ) {
+       is( $e->message, "Invalid password - must be at least " 
+               . $user_store->MIN_PASS_LEN . " characters long",
+               "Attempt to add user with too-short password threw correct error" );
+}
 
 ## create user
 my $new_user = $user_store->add_user({ username => 'fred',
                                        password => 'bloggspass'});
 isa_ok($new_user, 'Text::Tradition::User');
 is($new_user->active, 1, 'New user created and active');
+is($new_user->email, 'fred', 'Email value set to username');
 ok(!$new_user->is_admin, 'New user is not an admin');
 
 ## find user
@@ -207,3 +218,54 @@ TODO: {
     is(scalar @admin_tlist, scalar @tlist, 'Got all traditions for admin user');
 
 }
+
+{
+    ## Add/find simple openid user with OpenIDish parameters:
+
+    my $openid_user = $user_store->create_user({ 
+        url => 'http://username.myopenid.com',
+        email => 'username.myopenid.com',
+    });
+    ok($openid_user, 'Created user from OpenID params');
+
+    my $get_openid_user = $user_store->find_user({
+        url => 'http://username.myopenid.com',
+        email => 'username.myopenid.com',
+    });
+
+    ok($openid_user == $get_openid_user, 'Found OpenID user again');
+    is($get_openid_user->id, 'http://username.myopenid.com', 'Set id to unique url from openid');
+    is($get_openid_user->email, 'username.myopenid.com', 'Kept original email value');
+}
+
+{
+    ## Add/find openid user with email attribute:
+    my $openid_user = $user_store->create_user({ 
+        url => 'http://blahblah.com/foo/bar/baz/lotsofjunk',
+        email => 'http://blahblah.com/foo/bar/baz/lotsofjunk',
+        extensions => {
+            'http://openid.net/srv/ax/1.0' => { 
+                'value.email' => 'fredbloggs@blahblah.com',
+                'type.email' => 'http://axschema.org/contact/email',
+                'mode' => 'fetch_response',
+            },
+        },
+    });
+    ok($openid_user, 'Created user from OpenID params');
+
+    my $get_openid_user = $user_store->find_user({
+        url => 'http://blahblah.com/foo/bar/baz/lotsofjunk',
+        email => 'http://blahblah.com/foo/bar/baz/lotsofjunk',
+        extensions => {
+            'http://openid.net/srv/ax/1.0' => { 
+                'value.email' => 'fredbloggs@blahblah.com',
+                'type.email' => 'http://axschema.org/contact/email',
+                'mode' => 'fetch_response',
+            },
+        },
+    });
+
+    ok($openid_user == $get_openid_user, 'Found OpenID user again');
+    is($get_openid_user->id, 'http://blahblah.com/foo/bar/baz/lotsofjunk', 'Set id to unique url from openid');
+    is($get_openid_user->email, 'fredbloggs@blahblah.com', 'Set email value to email from extension');
+}