diff --git a/src/Entity/AbstractTokenEntity.php b/src/Entity/AbstractTokenEntity.php index 45140ad8..02a24d1b 100644 --- a/src/Entity/AbstractTokenEntity.php +++ b/src/Entity/AbstractTokenEntity.php @@ -153,10 +153,9 @@ abstract class AbstractTokenEntity */ public function __toString() { - if (is_null($this->token)) { - throw new \BadMethodCallException('Token is null'); + if ($this->token === null) { + return ''; } - return $this->token; } diff --git a/src/Exception/UnauthorizedClientException.php b/src/Exception/UnauthorizedClientException.php index ac3485c7..fd1f18c3 100644 --- a/src/Exception/UnauthorizedClientException.php +++ b/src/Exception/UnauthorizedClientException.php @@ -29,7 +29,7 @@ class UnauthorizedClientException extends OAuthException /** * {@inheritdoc} */ - public function __construct($parameter) + public function __construct() { parent::__construct('The client is not authorized to request an access token using this method.'); } diff --git a/tests/Entity/AbstractTokenEntityTest.php b/tests/Entity/AbstractTokenEntityTest.php index 2f16ea2e..3b934c0c 100644 --- a/tests/Entity/AbstractTokenEntityTest.php +++ b/tests/Entity/AbstractTokenEntityTest.php @@ -74,7 +74,7 @@ class AbstractTokenTest extends \PHPUnit_Framework_TestCase $accessTokenStorage->shouldReceive('getScopes')->andReturn( [] ); - $accessTokenStorage->shouldReceive('setServer'); + $accessTokenStorage''>shouldReceive('setServer'); $server->setAccessTokenStorage($accessTokenStorage); @@ -103,4 +103,14 @@ class AbstractTokenTest extends \PHPUnit_Framework_TestCase $this->assertTrue($result['scope1'] instanceof ScopeEntity); $this->assertTrue($result['scope2'] instanceof ScopeEntity); } + + public function test__toString() + { + $server = M::mock('League\OAuth2\Server\AbstractServer'); + + $entity = new StubAbstractTokenEntity($server); + $this->assertEquals('', (string) $entity); + $entity->setToken('foobar'); + $this->assertEquals('foobar', (string) $entity); + } } diff --git a/tests/Grant/ClientCredentialsGrantTest.php b/tests/Grant/ClientCredentialsGrantTest.php index be01da8b..8db12085 100644 --- a/tests/Grant/ClientCredentialsGrantTest.php +++ b/tests/Grant/ClientCredentialsGrantTest.php @@ -198,4 +198,55 @@ class ClientCredentialsGrantTest extends \PHPUnit_Framework_TestCase $server->addGrantType($grant); $server->issueAccessToken(); } + + public function testClientNotAuthorizedToUseGrant() + { + $this->setExpectedException('\League\OAuth2\Server\Exception\UnauthorizedClientException'); + + $_POST = [ + 'grant_type' => 'client_credentials', + 'client_id' => 'testapp', + 'client_secret' => 'foobar', + 'scope' => 'foo' + ]; + + $server = new AuthorizationServer; + $grant = new ClientCredentialsGrant; + + $clientStorage = M::mock('League\OAuth2\Server\Storage\ClientInterface'); + $clientStorage->shouldReceive('setServer'); + $clientStorage->shouldReceive('get')->andThrow( + new \League\OAuth2\Server\Exception\UnauthorizedClientException + ); + + $sessionStorage = M::mock('League\OAuth2\Server\Storage\SessionInterface'); + $sessionStorage->shouldReceive('setServer'); + // $sessionStorage->shouldReceive('create')->andreturn(123); + // $sessionStorage->shouldReceive('getScopes')->shouldReceive('getScopes')->andReturn([ + // (new ScopeEntity($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 ScopeEntity($server))->setId('foo') + // ]); + // $accessTokenStorage->shouldReceive('associateScope'); + + $scopeStorage = M::mock('League\OAuth2\Server\Storage\ScopeInterface'); + $scopeStorage->shouldReceive('setServer'); + $scopeStorage->shouldReceive('get')->andReturn( + (new ScopeEntity($server))->setId('foo') + ); + + $server->setClientStorage($clientStorage); + $server->setScopeStorage($scopeStorage); + $server->setSessionStorage($sessionStorage); + $server->setAccessTokenStorage($accessTokenStorage); + + $server->addGrantType($grant); + $server->issueAccessToken(); + } }