#!perl -T
use strict;
use warnings;
use Test::Exception;
use Test::MockObject::Extends;
use Test::MockObject;
use Test::More tests => 6;
my $m;
BEGIN {
use_ok( $m = 'Catalyst::Plugin::Authentication::Credential::JugemKey' );
}
can_ok( $m, 'authenticate_jugemkey_url' );
can_ok( $m, 'authenticate_jugemkey_get_token' );
my $jugemkey = Test::MockObject->new;
my $auth_url = 'http://jugemkey.jp/api/auth/';
$jugemkey->mock( uri_to_login => sub { $auth_url } );
my $c = Test::MockObject::Extends->new($m);
my $user_class = Test::MockObject->new;
$user_class->fake_module('Fake::User::Class', new => sub { 1 });
my $config = {
authentication => {
jugemkey => {
api_key => 'dummy_key',
secret => 'dummy_secret',
perms => 'auth',
jugemkey_object => $jugemkey,
user_class => 'Fake::User::Class',
},
},
};
$c->mock( config => sub {$config} );
is( $c->authenticate_jugemkey_url, $auth_url, 'returns auth_url correctly' );
my $req = Test::MockObject->new;
my $res = Test::MockObject->new;
$res->fake_module(
'WebService::JugemKey::Auth::User',
name => sub {'miyashita'},
token => sub {'dummy_token'}
);
$jugemkey->mock( get_token => sub { $res } );
my $params = {};
$req->fake_module('Catalyst::Request');
$req->mock( params => sub {$params} );
$req->mock( param => sub { $params->{$_[1]} } );
$c->mock( req => sub {$req} );
$c->mock( default_auth_store => sub { } );
$c->mock( set_authenticated => sub { } );
$c->mock( debug => sub { 0 } );
ok( !$c->authenticate_jugemkey_get_token, 'auth failed without frob' );
$params->{frob} = 'dummy_frob';
ok( $c->authenticate_jugemkey_get_token, 'auth succeeded with frob' );