2014-01-17 16:06:57 +05:30
< ? php
namespace LeagueTests\Grant ;
use League\OAuth2\Server\Grant\ClientCredentials ;
use League\OAuth2\Server\Entity\Scope ;
use League\OAuth2\Server\Entity\Client ;
2014-02-24 20:12:22 +05:30
use League\OAuth2\Server\AuthorizationServer as Authorization ;
2014-01-17 16:06:57 +05:30
use League\OAuth2\Server\Grant\ClientException ;
use Mockery as M ;
class ClientCredentialsTest extends \PHPUnit_Framework_TestCase
{
function testCompleteFlowMissingClientId ()
{
2014-04-06 23:43:45 +05:30
$this -> setExpectedException ( 'League\OAuth2\Server\Exception\ClientException' , 'The request is missing a required parameter, includes an invalid parameter value, includes a parameter more than once, or is otherwise malformed. Check the "client_id" parameter.' );
2014-01-17 16:06:57 +05:30
$_POST [ 'grant_type' ] = 'client_credentials' ;
$server = new Authorization ;
$grant = new ClientCredentials ;
$server -> addGrantType ( $grant );
$server -> issueAccessToken ();
}
function testCompleteFlowMissingClientSecret ()
{
2014-04-06 23:43:45 +05:30
$this -> setExpectedException ( 'League\OAuth2\Server\Exception\ClientException' , 'The request is missing a required parameter, includes an invalid parameter value, includes a parameter more than once, or is otherwise malformed. Check the "client_secret" parameter.' );
2014-01-17 16:06:57 +05:30
$_POST = [
'grant_type' => 'client_credentials' ,
'client_id' => 'testapp'
];
$server = new Authorization ;
$grant = new ClientCredentials ;
$server -> addGrantType ( $grant );
$server -> issueAccessToken ();
}
function testCompleteFlowInvalidClient ()
{
2014-04-06 23:43:45 +05:30
$this -> setExpectedException ( 'League\OAuth2\Server\Exception\ClientException' , 'Client authentication failed' );
2014-01-17 16:06:57 +05:30
$_POST = [
'grant_type' => 'client_credentials' ,
'client_id' => 'testapp' ,
'client_secret' => 'foobar'
];
$server = new Authorization ;
$grant = new ClientCredentials ;
$clientStorage = M :: mock ( 'League\OAuth2\Server\Storage\ClientInterface' );
$clientStorage -> shouldReceive ( 'setServer' );
$clientStorage -> shouldReceive ( 'get' ) -> andReturn ( null );
$server -> setClientStorage ( $clientStorage );
$server -> addGrantType ( $grant );
$server -> issueAccessToken ();
}
function testCompleteFlowInvalidScope ()
{
2014-04-06 23:43:45 +05:30
$this -> setExpectedException ( 'League\OAuth2\Server\Exception\ClientException' , 'The requested scope is invalid, unknown, or malformed. Check the "foo" scope.' );
2014-01-17 16:06:57 +05:30
$_POST = [
'grant_type' => 'client_credentials' ,
'client_id' => 'testapp' ,
'client_secret' => 'foobar' ,
'scope' => 'foo'
];
$server = new Authorization ;
$grant = new ClientCredentials ;
$clientStorage = M :: mock ( 'League\OAuth2\Server\Storage\ClientInterface' );
$clientStorage -> shouldReceive ( 'setServer' );
$clientStorage -> shouldReceive ( 'get' ) -> andReturn (
( new Client ( $server )) -> setId ( 'testapp' )
);
$sessionStorage = M :: mock ( 'League\OAuth2\Server\Storage\SessionInterface' );
$sessionStorage -> shouldReceive ( 'setServer' );
$sessionStorage -> shouldReceive ( 'create' );
$sessionStorage -> shouldReceive ( 'getScopes' ) -> andReturn ([]);
$accessTokenStorage = M :: mock ( 'League\OAuth2\Server\Storage\AccessTokenInterface' );
$accessTokenStorage -> shouldReceive ( 'setServer' );
$accessTokenStorage -> shouldReceive ( 'create' );
$accessTokenStorage -> shouldReceive ( 'getScopes' ) -> andReturn ([]);
$scopeStorage = M :: mock ( 'League\OAuth2\Server\Storage\ScopeInterface' );
$scopeStorage -> shouldReceive ( 'setServer' );
$scopeStorage -> shouldReceive ( 'get' ) -> andReturn ( null );
$server -> setClientStorage ( $clientStorage );
$server -> setScopeStorage ( $scopeStorage );
$server -> setSessionStorage ( $sessionStorage );
$server -> setAccessTokenStorage ( $accessTokenStorage );
$server -> addGrantType ( $grant );
$server -> issueAccessToken ();
}
function testCompleteFlowNoScopes ()
{
$_POST = [
'grant_type' => 'client_credentials' ,
'client_id' => 'testapp' ,
'client_secret' => 'foobar'
];
$server = new Authorization ;
$grant = new ClientCredentials ;
$clientStorage = M :: mock ( 'League\OAuth2\Server\Storage\ClientInterface' );
$clientStorage -> shouldReceive ( 'setServer' );
$clientStorage -> shouldReceive ( 'get' ) -> andReturn (
( new Client ( $server )) -> setId ( 'testapp' )
);
$sessionStorage = M :: mock ( 'League\OAuth2\Server\Storage\SessionInterface' );
$sessionStorage -> shouldReceive ( 'setServer' );
$sessionStorage -> shouldReceive ( 'create' ) -> andreturn ( 123 );
$sessionStorage -> shouldReceive ( 'getScopes' ) -> shouldReceive ( 'getScopes' ) -> andReturn ([]);
$sessionStorage -> shouldReceive ( 'associateScope' );
$accessTokenStorage = M :: mock ( 'League\OAuth2\Server\Storage\AccessTokenInterface' );
$accessTokenStorage -> shouldReceive ( 'setServer' );
$accessTokenStorage -> shouldReceive ( 'create' );
$accessTokenStorage -> shouldReceive ( 'getScopes' ) -> andReturn ([]);
$accessTokenStorage -> shouldReceive ( 'associateScope' );
$scopeStorage = M :: mock ( 'League\OAuth2\Server\Storage\ScopeInterface' );
$scopeStorage -> shouldReceive ( 'setServer' );
// $scopeStorage->shouldReceive('get')->andReturn(
// // (new Scope($server))->setId('foo')
// );
$server -> setClientStorage ( $clientStorage );
$server -> setScopeStorage ( $scopeStorage );
$server -> setSessionStorage ( $sessionStorage );
$server -> setAccessTokenStorage ( $accessTokenStorage );
$server -> addGrantType ( $grant );
$server -> issueAccessToken ();
}
function testCompleteFlow ()
{
$_POST = [
'grant_type' => 'client_credentials' ,
'client_id' => 'testapp' ,
'client_secret' => 'foobar' ,
'scope' => 'foo'
];
$server = new Authorization ;
$grant = new ClientCredentials ;
$clientStorage = M :: mock ( 'League\OAuth2\Server\Storage\ClientInterface' );
$clientStorage -> shouldReceive ( 'setServer' );
$clientStorage -> shouldReceive ( 'get' ) -> andReturn (
( new Client ( $server )) -> setId ( 'testapp' )
);
$sessionStorage = M :: mock ( 'League\OAuth2\Server\Storage\SessionInterface' );
$sessionStorage -> shouldReceive ( 'setServer' );
$sessionStorage -> shouldReceive ( 'create' ) -> andreturn ( 123 );
$sessionStorage -> shouldReceive ( 'getScopes' ) -> shouldReceive ( 'getScopes' ) -> andReturn ([
( new Scope ( $server )) -> setId ( 'foo' )
]);
$sessionStorage -> shouldReceive ( 'associateScope' );
$accessTokenStorage = M :: mock ( 'League\OAuth2\Server\Storage\AccessTokenInterface' );
$accessTokenStorage -> shouldReceive ( 'setServer' );
$accessTokenStorage -> shouldReceive ( 'create' );
$accessTokenStorage -> shouldReceive ( 'getScopes' ) -> andReturn ([
( new Scope ( $server )) -> setId ( 'foo' )
]);
$accessTokenStorage -> shouldReceive ( 'associateScope' );
$scopeStorage = M :: mock ( 'League\OAuth2\Server\Storage\ScopeInterface' );
$scopeStorage -> shouldReceive ( 'setServer' );
$scopeStorage -> shouldReceive ( 'get' ) -> andReturn (
( new Scope ( $server )) -> setId ( 'foo' )
);
$server -> setClientStorage ( $clientStorage );
$server -> setScopeStorage ( $scopeStorage );
$server -> setSessionStorage ( $sessionStorage );
$server -> setAccessTokenStorage ( $accessTokenStorage );
$server -> addGrantType ( $grant );
$server -> issueAccessToken ();
}
}