X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F05_password.t;h=13fd88fadfff4cb0c2f5444a3e0168a6748a7dcf;hb=622e71d9ad63648e294499347525496d218a8564;hp=43f0b37443a7b84f9f4e94320b388faf60cfa9d7;hpb=b003080b492fdac6ff876744b4666117ed85bd7b;p=catagits%2FCatalyst-Plugin-Authentication.git diff --git a/t/05_password.t b/t/05_password.t index 43f0b37..13fd88f 100644 --- a/t/05_password.t +++ b/t/05_password.t @@ -1,13 +1,44 @@ -#!/usr/bin/perl - use strict; use warnings; -use Test::More 'no_plan'; - +use Test::More tests => 11; +use Test::Exception; +use Test::MockObject; -my $m; BEGIN { use_ok($m = "Catalyst::Plugin::Authentication::Credential::Password") } +# 1,2 +my $m; BEGIN { use_ok($m = "Catalyst::Authentication::Credential::Password") } +can_ok($m, "authenticate"); -can_ok($m, "login"); +my $app = Test::MockObject->new; +my $realm = Test::MockObject->new; +my $user = Test::MockObject->new; +our ($user_get_password_field_name, $user_password ); +$user->mock('get' => sub { $user_get_password_field_name = $_[1]; return $user_password }); +# 3-6 # Test clear passwords if you mess up the password_field +{ + local $user_password = undef; # The user returns an undef password, + local $user_get_password_field_name; # as there is no field named 'mistyped' + my $config = { password_type => 'clear', password_field => 'mistyped' }; + my $i; lives_ok { $i = $m->new($config, $app, $realm) } 'Construct instance'; + ok($i, 'Have instance'); + my $r = $i->check_password($user, { username => 'someuser', password => 'password' }); + is($user_get_password_field_name, 'mistyped', + '(Incorrect) field name from config correctly passed to user'); + ok(! $r, 'Authentication unsuccessful' ); +} +# 7-11 # Test clear passwords working, and not working +{ + local $user_password = 'mypassword'; + local $user_get_password_field_name; + my $config = { password_type => 'clear', password_field => 'the_password_field' }; + my $i; lives_ok { $i = $m->new($config, $app, $realm) } 'Construct instance'; + ok($i, 'Have instance'); + my $r = $i->check_password($user, { username => 'someuser', the_password_field => 'mypassword' }); + is($user_get_password_field_name, 'the_password_field', + 'Correct field name from config correctly passed to user'); + ok( $r, 'Authentication successful with correct password' ); + $r = $i->check_password($user, { username => 'someuser', the_password_field => 'adifferentpassword' }); + ok( ! $r, 'Authentication ussuccessful with incorrect password' ); +}