From 60572201e115496213bfcffd7327ccc9df331a93 Mon Sep 17 00:00:00 2001 From: lyokato Date: Tue, 17 May 2011 19:44:23 +0900 Subject: [PATCH] ClientCredentials grant handler now works as expected when client_user_id == 0 --- Changes | 3 +++ lib/OAuth/Lite2.pm | 2 +- .../Server/GrantHandler/ClientCredentials.pm | 4 +-- .../token_endpoint/client_credentials.t | 25 ++++++++++++++++--- 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/Changes b/Changes index 0748f4f..a9d1886 100644 --- a/Changes +++ b/Changes @@ -1,5 +1,8 @@ Revision history for Perl extension OAuth::Lite2. +0.01_11 Tue May 17 19:43:00 2011 + - client credentials grant handler now works as expected when client_user_id == 0 + 0.01_10 Thu Mar 17 13:28:00 2011 - removed Context. Now, DataHandler has request object, and you pick it up by DataHandler::request. diff --git a/lib/OAuth/Lite2.pm b/lib/OAuth/Lite2.pm index 4f1997a..dc9028d 100644 --- a/lib/OAuth/Lite2.pm +++ b/lib/OAuth/Lite2.pm @@ -3,7 +3,7 @@ package OAuth::Lite2; use strict; use warnings; -our $VERSION = '0.01_10'; +our $VERSION = '0.01_11'; 1; __END__ diff --git a/lib/OAuth/Lite2/Server/GrantHandler/ClientCredentials.pm b/lib/OAuth/Lite2/Server/GrantHandler/ClientCredentials.pm index 795e577..ae263d5 100644 --- a/lib/OAuth/Lite2/Server/GrantHandler/ClientCredentials.pm +++ b/lib/OAuth/Lite2/Server/GrantHandler/ClientCredentials.pm @@ -15,8 +15,8 @@ sub handle_request { my $client_id = $req->param("client_id"); my $client_secret = $req->param("client_secret"); - my $user_id = $dh->get_client_user_id($client_id, $client_secret) - or OAuth::Lite2::Server::Error::InvalidClient->throw; + my $user_id = $dh->get_client_user_id($client_id, $client_secret); + OAuth::Lite2::Server::Error::InvalidClient->throw unless defined $user_id; my $scope = $req->param("scope"); diff --git a/t/030_server/token_endpoint/client_credentials.t b/t/030_server/token_endpoint/client_credentials.t index 93a3671..e7602f1 100644 --- a/t/030_server/token_endpoint/client_credentials.t +++ b/t/030_server/token_endpoint/client_credentials.t @@ -2,7 +2,7 @@ use strict; use warnings; use lib 't/lib'; -use Test::More tests => 6; +use Test::More tests => 11; use Plack::Request; use Try::Tiny; @@ -11,7 +11,8 @@ use OAuth::Lite2::Server::GrantHandler::ClientCredentials; use OAuth::Lite2::Util qw(build_content); TestDataHandler->clear; -TestDataHandler->add_client(id => q{foo}, secret => q{bar}, user_id => 1); +TestDataHandler->add_client(id => q{foo}, secret => q{bar}, user_id => 1); +TestDataHandler->add_client(id => q{buz}, secret => q{hoge}, user_id => 0); my $dh = TestDataHandler->new; my $auth_info = $dh->create_or_update_auth_info( @@ -19,8 +20,14 @@ my $auth_info = $dh->create_or_update_auth_info( user_id => q{1}, scope => q{email}, ); +my $auth_info2 = $dh->create_or_update_auth_info( + client_id => q{buz}, + user_id => q{0}, + scope => q{email}, +); is($auth_info->refresh_token, "refresh_token_0"); +is($auth_info2->refresh_token, "refresh_token_1"); my $action = OAuth::Lite2::Server::GrantHandler::ClientCredentials->new; @@ -90,9 +97,21 @@ sub test_error { }, { token => q{access_token_0}, expires_in => q{3600}, - refresh_token => q{refresh_token_1}, + refresh_token => q{refresh_token_2}, }); + +# work as expected when user_id is 1 +&test_success({ + client_id => q{buz}, + client_secret => q{hoge}, +}, { + token => q{access_token_1}, + expires_in => q{3600}, + refresh_token => q{refresh_token_3}, +}); + &test_error({ client_id => q{unknown}, client_secret => q{bar}, }, q/invalid_client/); +