mirror of
https://github.com/elyby/oauth2-server.git
synced 2025-05-31 14:12:07 +05:30
include CryptTrait tests, allow Server::respondToRequest trhow exceptions and fix ResposeType tests
This commit is contained in:
@@ -108,7 +108,7 @@ trait CryptTrait
|
|||||||
while ($encryptedData) {
|
while ($encryptedData) {
|
||||||
$chunk = substr($encryptedData, 0, $chunkSize);
|
$chunk = substr($encryptedData, 0, $chunkSize);
|
||||||
$encryptedData = substr($encryptedData, $chunkSize);
|
$encryptedData = substr($encryptedData, $chunkSize);
|
||||||
if (openssl_public_decrypt($chunk, $decrypted, $publicKey, OPENSSL_PKCS1_OAEP_PADDING) === false) {
|
if (openssl_public_decrypt($chunk, $decrypted, $publicKey/*, OPENSSL_PKCS1_OAEP_PADDING*/) === false) {
|
||||||
// @codeCoverageIgnoreStart
|
// @codeCoverageIgnoreStart
|
||||||
throw new \LogicException('Failed to decrypt data');
|
throw new \LogicException('Failed to decrypt data');
|
||||||
// @codeCoverageIgnoreEnd
|
// @codeCoverageIgnoreEnd
|
||||||
|
@@ -282,7 +282,9 @@ class AuthCodeGrant extends AbstractAuthorizeGrant
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (!$scope) {
|
if (!$scope) {
|
||||||
|
// @codeCoverageIgnoreStart
|
||||||
throw OAuthServerException::invalidScope($scopeId);
|
throw OAuthServerException::invalidScope($scopeId);
|
||||||
|
// @codeCoverageIgnoreEnd
|
||||||
}
|
}
|
||||||
|
|
||||||
$scopes[] = $scope;
|
$scopes[] = $scope;
|
||||||
|
@@ -176,7 +176,7 @@ class ImplicitGrant extends AbstractAuthorizeGrant
|
|||||||
}
|
}
|
||||||
|
|
||||||
// The user has either approved or denied the client, so redirect them back
|
// The user has either approved or denied the client, so redirect them back
|
||||||
$redirectUri = new Uri($client->getRedirectUri());
|
$redirectUri = $client->getRedirectUri();
|
||||||
$redirectPayload = [];
|
$redirectPayload = [];
|
||||||
|
|
||||||
$stateParameter = $this->getQueryStringParameter('state', $request);
|
$stateParameter = $this->getQueryStringParameter('state', $request);
|
||||||
@@ -208,8 +208,6 @@ class ImplicitGrant extends AbstractAuthorizeGrant
|
|||||||
}
|
}
|
||||||
|
|
||||||
// The user denied the client, redirect them back with an error
|
// The user denied the client, redirect them back with an error
|
||||||
$exception = OAuthServerException::accessDenied('The user denied the request', (string) $redirectUri);
|
throw OAuthServerException::accessDenied('The user denied the request', (string) $redirectUri);
|
||||||
|
|
||||||
return $exception->generateHttpResponse(null, true);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -54,7 +54,9 @@ class RefreshTokenGrant extends AbstractGrant
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (!$scope) {
|
if (!$scope) {
|
||||||
|
// @codeCoverageIgnoreStart
|
||||||
throw OAuthServerException::invalidScope($scopeId);
|
throw OAuthServerException::invalidScope($scopeId);
|
||||||
|
// @codeCoverageIgnoreEnd
|
||||||
}
|
}
|
||||||
|
|
||||||
return $scope;
|
return $scope;
|
||||||
|
@@ -127,7 +127,6 @@ class Server implements EmitterAwareInterface
|
|||||||
*/
|
*/
|
||||||
public function respondToRequest(ServerRequestInterface $request, ResponseInterface $response)
|
public function respondToRequest(ServerRequestInterface $request, ResponseInterface $response)
|
||||||
{
|
{
|
||||||
try {
|
|
||||||
$tokenResponse = null;
|
$tokenResponse = null;
|
||||||
while ($tokenResponse === null && $grantType = array_shift($this->enabledGrantTypes)) {
|
while ($tokenResponse === null && $grantType = array_shift($this->enabledGrantTypes)) {
|
||||||
/** @var \League\OAuth2\Server\Grant\GrantTypeInterface $grantType */
|
/** @var \League\OAuth2\Server\Grant\GrantTypeInterface $grantType */
|
||||||
@@ -145,9 +144,6 @@ class Server implements EmitterAwareInterface
|
|||||||
}
|
}
|
||||||
|
|
||||||
throw OAuthServerException::unsupportedGrantType();
|
throw OAuthServerException::unsupportedGrantType();
|
||||||
} catch (OAuthServerException $e) {
|
|
||||||
return $e->generateHttpResponse($response);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -12,12 +12,15 @@ use League\OAuth2\Server\Repositories\ClientRepositoryInterface;
|
|||||||
use League\OAuth2\Server\Repositories\RefreshTokenRepositoryInterface;
|
use League\OAuth2\Server\Repositories\RefreshTokenRepositoryInterface;
|
||||||
use League\OAuth2\Server\Repositories\ScopeRepositoryInterface;
|
use League\OAuth2\Server\Repositories\ScopeRepositoryInterface;
|
||||||
use League\OAuth2\Server\Repositories\UserRepositoryInterface;
|
use League\OAuth2\Server\Repositories\UserRepositoryInterface;
|
||||||
|
use League\OAuth2\Server\ResponseTypes\HtmlResponse;
|
||||||
|
use League\OAuth2\Server\ResponseTypes\RedirectResponse;
|
||||||
use LeagueTests\Stubs\ClientEntity;
|
use LeagueTests\Stubs\ClientEntity;
|
||||||
use LeagueTests\Stubs\CryptTraitStub;
|
use LeagueTests\Stubs\CryptTraitStub;
|
||||||
use LeagueTests\Stubs\ScopeEntity;
|
use LeagueTests\Stubs\ScopeEntity;
|
||||||
use LeagueTests\Stubs\StubResponseType;
|
use LeagueTests\Stubs\StubResponseType;
|
||||||
use LeagueTests\Stubs\UserEntity;
|
use LeagueTests\Stubs\UserEntity;
|
||||||
use Psr\Http\Message\ResponseInterface;
|
use Psr\Http\Message\ResponseInterface;
|
||||||
|
use Zend\Diactoros\Response;
|
||||||
use Zend\Diactoros\ServerRequest;
|
use Zend\Diactoros\ServerRequest;
|
||||||
|
|
||||||
class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
|
class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
|
||||||
@@ -81,6 +84,9 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
$userEntity = new UserEntity();
|
$userEntity = new UserEntity();
|
||||||
$userRepositoryMock->method('getUserEntityByUserCredentials')->willReturn($userEntity);
|
$userRepositoryMock->method('getUserEntityByUserCredentials')->willReturn($userEntity);
|
||||||
|
|
||||||
|
$accessTokenRepositoryMock = $this->getMockBuilder(AccessTokenRepositoryInterface::class)->getMock();
|
||||||
|
$accessTokenRepositoryMock->method('persistNewAccessToken')->willReturnSelf();
|
||||||
|
|
||||||
$grant = new AuthCodeGrant(
|
$grant = new AuthCodeGrant(
|
||||||
$this->getMock(AuthCodeRepositoryInterface::class),
|
$this->getMock(AuthCodeRepositoryInterface::class),
|
||||||
$this->getMock(RefreshTokenRepositoryInterface::class),
|
$this->getMock(RefreshTokenRepositoryInterface::class),
|
||||||
@@ -88,6 +94,7 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
new \DateInterval('PT10M')
|
new \DateInterval('PT10M')
|
||||||
);
|
);
|
||||||
$grant->setClientRepository($clientRepositoryMock);
|
$grant->setClientRepository($clientRepositoryMock);
|
||||||
|
$grant->setAccessTokenRepository($accessTokenRepositoryMock);
|
||||||
$grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key');
|
$grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key');
|
||||||
$grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key');
|
$grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key');
|
||||||
|
|
||||||
@@ -102,10 +109,7 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
'php://input',
|
'php://input',
|
||||||
[],
|
[],
|
||||||
[
|
[
|
||||||
'oauth_authorize_request' => $this->cryptStub->doEncrypt(
|
'oauth_authorize_request' => $this->cryptStub->doEncrypt(json_encode(['user_id' => 123])),
|
||||||
json_encode(['user_id' => 123]),
|
|
||||||
'file://' . __DIR__ . '/../Stubs/private.key'
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'response_type' => 'code',
|
'response_type' => 'code',
|
||||||
@@ -121,10 +125,16 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
$response = $grant->respondToRequest($request, new StubResponseType(), new \DateInterval('PT10M'));
|
$response = $grant->respondToRequest($request, new StubResponseType(), new \DateInterval('PT10M'));
|
||||||
|
|
||||||
$this->assertTrue($response instanceof ResponseInterface);
|
$this->assertTrue($response instanceof RedirectResponse);
|
||||||
|
|
||||||
|
$response = $response->generateHttpResponse(new Response);
|
||||||
$this->assertTrue(strstr($response->getHeader('location')[0], 'http://foo/bar') !== false);
|
$this->assertTrue(strstr($response->getHeader('location')[0], 'http://foo/bar') !== false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \League\OAuth2\Server\Exception\OAuthServerException
|
||||||
|
* @expectedExceptionCode 9
|
||||||
|
*/
|
||||||
public function testRespondToAuthorizationRequestUserDenied()
|
public function testRespondToAuthorizationRequestUserDenied()
|
||||||
{
|
{
|
||||||
$client = new ClientEntity();
|
$client = new ClientEntity();
|
||||||
@@ -136,6 +146,9 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
$userEntity = new UserEntity();
|
$userEntity = new UserEntity();
|
||||||
$userRepositoryMock->method('getUserEntityByUserCredentials')->willReturn($userEntity);
|
$userRepositoryMock->method('getUserEntityByUserCredentials')->willReturn($userEntity);
|
||||||
|
|
||||||
|
$accessTokenRepositoryMock = $this->getMockBuilder(AccessTokenRepositoryInterface::class)->getMock();
|
||||||
|
$accessTokenRepositoryMock->method('persistNewAccessToken')->willReturnSelf();
|
||||||
|
|
||||||
$grant = new AuthCodeGrant(
|
$grant = new AuthCodeGrant(
|
||||||
$this->getMock(AuthCodeRepositoryInterface::class),
|
$this->getMock(AuthCodeRepositoryInterface::class),
|
||||||
$this->getMock(RefreshTokenRepositoryInterface::class),
|
$this->getMock(RefreshTokenRepositoryInterface::class),
|
||||||
@@ -143,6 +156,7 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
new \DateInterval('PT10M')
|
new \DateInterval('PT10M')
|
||||||
);
|
);
|
||||||
$grant->setClientRepository($clientRepositoryMock);
|
$grant->setClientRepository($clientRepositoryMock);
|
||||||
|
$grant->setAccessTokenRepository($accessTokenRepositoryMock);
|
||||||
$grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key');
|
$grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key');
|
||||||
$grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key');
|
$grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key');
|
||||||
|
|
||||||
@@ -157,10 +171,7 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
'php://input',
|
'php://input',
|
||||||
[],
|
[],
|
||||||
[
|
[
|
||||||
'oauth_authorize_request' => $this->cryptStub->doEncrypt(
|
'oauth_authorize_request' => $this->cryptStub->doEncrypt(json_encode(['user_id' => 123])),
|
||||||
json_encode(['user_id' => 123]),
|
|
||||||
'file://' . __DIR__ . '/../Stubs/private.key'
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'response_type' => 'code',
|
'response_type' => 'code',
|
||||||
@@ -174,11 +185,7 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
$response = $grant->respondToRequest($request, new StubResponseType(), new \DateInterval('PT10M'));
|
$grant->respondToRequest($request, new StubResponseType(), new \DateInterval('PT10M'));
|
||||||
|
|
||||||
$this->assertTrue($response instanceof ResponseInterface);
|
|
||||||
$this->assertTrue(strstr($response->getHeader('location')[0], 'http://foo/bar') !== false);
|
|
||||||
$this->assertTrue(strstr($response->getHeader('location')[0], 'access_denied') !== false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -217,10 +224,7 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
'php://input',
|
'php://input',
|
||||||
[],
|
[],
|
||||||
[
|
[
|
||||||
'oauth_authorize_request' => $this->cryptStub->doEncrypt(
|
'oauth_authorize_request' => $this->cryptStub->doEncrypt(json_encode(['user_id' => 123])),
|
||||||
json_encode(['user_id' => 123]),
|
|
||||||
'file://' . __DIR__ . '/../Stubs/private.key'
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'response_type' => 'code',
|
'response_type' => 'code',
|
||||||
@@ -232,9 +236,7 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
$response = $grant->respondToRequest($request, new StubResponseType(), new \DateInterval('PT10M'));
|
$grant->respondToRequest($request, new StubResponseType(), new \DateInterval('PT10M'));
|
||||||
|
|
||||||
$this->assertTrue($response instanceof ResponseInterface);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testRespondToAuthorizationRequestBadClient()
|
public function testRespondToAuthorizationRequestBadClient()
|
||||||
@@ -268,10 +270,7 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
'php://input',
|
'php://input',
|
||||||
[],
|
[],
|
||||||
[
|
[
|
||||||
'oauth_authorize_request' => $this->cryptStub->doEncrypt(
|
'oauth_authorize_request' => $this->cryptStub->doEncrypt(json_encode(['user_id' => 123])),
|
||||||
json_encode(['user_id' => 123]),
|
|
||||||
'file://' . __DIR__ . '/../Stubs/private.key'
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'response_type' => 'code',
|
'response_type' => 'code',
|
||||||
@@ -323,10 +322,7 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
'php://input',
|
'php://input',
|
||||||
[],
|
[],
|
||||||
[
|
[
|
||||||
'oauth_authorize_request' => $this->cryptStub->doEncrypt(
|
'oauth_authorize_request' => $this->cryptStub->doEncrypt(json_encode(['user_id' => 123])),
|
||||||
json_encode(['user_id' => 123]),
|
|
||||||
'file://' . __DIR__ . '/../Stubs/private.key'
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'response_type' => 'code',
|
'response_type' => 'code',
|
||||||
@@ -397,9 +393,7 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
$response = $grant->respondToRequest($request, new StubResponseType(), new \DateInterval('PT10M'));
|
$grant->respondToRequest($request, new StubResponseType(), new \DateInterval('PT10M'));
|
||||||
|
|
||||||
$this->assertTrue($response instanceof ResponseInterface);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testRespondToAuthorizationRequestTryLogin()
|
public function testRespondToAuthorizationRequestTryLogin()
|
||||||
@@ -413,6 +407,9 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
$userEntity = new UserEntity();
|
$userEntity = new UserEntity();
|
||||||
$userRepositoryMock->method('getUserEntityByUserCredentials')->willReturn($userEntity);
|
$userRepositoryMock->method('getUserEntityByUserCredentials')->willReturn($userEntity);
|
||||||
|
|
||||||
|
$accessTokenRepositoryMock = $this->getMockBuilder(AccessTokenRepositoryInterface::class)->getMock();
|
||||||
|
$accessTokenRepositoryMock->method('persistNewAccessToken')->willReturnSelf();
|
||||||
|
|
||||||
$grant = new AuthCodeGrant(
|
$grant = new AuthCodeGrant(
|
||||||
$this->getMock(AuthCodeRepositoryInterface::class),
|
$this->getMock(AuthCodeRepositoryInterface::class),
|
||||||
$this->getMock(RefreshTokenRepositoryInterface::class),
|
$this->getMock(RefreshTokenRepositoryInterface::class),
|
||||||
@@ -420,6 +417,7 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
new \DateInterval('PT10M')
|
new \DateInterval('PT10M')
|
||||||
);
|
);
|
||||||
$grant->setClientRepository($clientRepositoryMock);
|
$grant->setClientRepository($clientRepositoryMock);
|
||||||
|
$grant->setAccessTokenRepository($accessTokenRepositoryMock);
|
||||||
$grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key');
|
$grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key');
|
||||||
$grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key');
|
$grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key');
|
||||||
|
|
||||||
@@ -434,10 +432,7 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
'php://input',
|
'php://input',
|
||||||
[],
|
[],
|
||||||
[
|
[
|
||||||
'oauth_authorize_request' => $this->cryptStub->doEncrypt(
|
'oauth_authorize_request' => $this->cryptStub->doEncrypt(json_encode(['user_id' => null])),
|
||||||
json_encode(['user_id' => null]),
|
|
||||||
'file://' . __DIR__ . '/../Stubs/private.key'
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'response_type' => 'code',
|
'response_type' => 'code',
|
||||||
@@ -452,7 +447,9 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
$response = $grant->respondToRequest($request, new StubResponseType(), new \DateInterval('PT10M'));
|
$response = $grant->respondToRequest($request, new StubResponseType(), new \DateInterval('PT10M'));
|
||||||
|
|
||||||
$this->assertTrue($response instanceof ResponseInterface);
|
$this->assertTrue($response instanceof RedirectResponse);
|
||||||
|
|
||||||
|
$response = $response->generateHttpResponse(new Response);
|
||||||
$this->assertTrue(strstr($response->getHeader('location')[0], 'http://foo/bar') !== false);
|
$this->assertTrue(strstr($response->getHeader('location')[0], 'http://foo/bar') !== false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -467,6 +464,9 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
$userEntity = null;
|
$userEntity = null;
|
||||||
$userRepositoryMock->method('getUserEntityByUserCredentials')->willReturn($userEntity);
|
$userRepositoryMock->method('getUserEntityByUserCredentials')->willReturn($userEntity);
|
||||||
|
|
||||||
|
$accessTokenRepositoryMock = $this->getMockBuilder(AccessTokenRepositoryInterface::class)->getMock();
|
||||||
|
$accessTokenRepositoryMock->method('persistNewAccessToken')->willReturnSelf();
|
||||||
|
|
||||||
$grant = new AuthCodeGrant(
|
$grant = new AuthCodeGrant(
|
||||||
$this->getMock(AuthCodeRepositoryInterface::class),
|
$this->getMock(AuthCodeRepositoryInterface::class),
|
||||||
$this->getMock(RefreshTokenRepositoryInterface::class),
|
$this->getMock(RefreshTokenRepositoryInterface::class),
|
||||||
@@ -474,6 +474,7 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
new \DateInterval('PT10M')
|
new \DateInterval('PT10M')
|
||||||
);
|
);
|
||||||
$grant->setClientRepository($clientRepositoryMock);
|
$grant->setClientRepository($clientRepositoryMock);
|
||||||
|
$grant->setAccessTokenRepository($accessTokenRepositoryMock);
|
||||||
$grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key');
|
$grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key');
|
||||||
$grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key');
|
$grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key');
|
||||||
|
|
||||||
@@ -488,10 +489,7 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
'php://input',
|
'php://input',
|
||||||
[],
|
[],
|
||||||
[
|
[
|
||||||
'oauth_authorize_request' => $this->cryptStub->doEncrypt(
|
'oauth_authorize_request' => $this->cryptStub->doEncrypt(json_encode(['user_id' => null])),
|
||||||
json_encode(['user_id' => null]),
|
|
||||||
'file://' . __DIR__ . '/../Stubs/private.key'
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'response_type' => 'code',
|
'response_type' => 'code',
|
||||||
@@ -506,9 +504,11 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
$response = $grant->respondToRequest($request, new StubResponseType(), new \DateInterval('PT10M'));
|
$response = $grant->respondToRequest($request, new StubResponseType(), new \DateInterval('PT10M'));
|
||||||
|
|
||||||
$this->assertTrue($response instanceof ResponseInterface);
|
$this->assertTrue($response instanceof HtmlResponse);
|
||||||
|
|
||||||
|
$response = $response->generateHttpResponse(new Response);
|
||||||
$this->assertTrue(strstr($response->getHeader('content-type')[0], 'text/html') !== false);
|
$this->assertTrue(strstr($response->getHeader('content-type')[0], 'text/html') !== false);
|
||||||
$this->assertTrue(strstr($response->getBody()->getContents(), 'Incorrect username or password') !== false);
|
$this->assertTrue(strstr((string) $response->getBody(), 'Incorrect username or password') !== false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testRespondToAuthorizationRequestShowAuthorizeForm()
|
public function testRespondToAuthorizationRequestShowAuthorizeForm()
|
||||||
@@ -523,6 +523,9 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
$userEntity = new UserEntity();
|
$userEntity = new UserEntity();
|
||||||
$userRepositoryMock->method('getUserEntityByUserCredentials')->willReturn($userEntity);
|
$userRepositoryMock->method('getUserEntityByUserCredentials')->willReturn($userEntity);
|
||||||
|
|
||||||
|
$accessTokenRepositoryMock = $this->getMockBuilder(AccessTokenRepositoryInterface::class)->getMock();
|
||||||
|
$accessTokenRepositoryMock->method('persistNewAccessToken')->willReturnSelf();
|
||||||
|
|
||||||
$grant = new AuthCodeGrant(
|
$grant = new AuthCodeGrant(
|
||||||
$this->getMock(AuthCodeRepositoryInterface::class),
|
$this->getMock(AuthCodeRepositoryInterface::class),
|
||||||
$this->getMock(RefreshTokenRepositoryInterface::class),
|
$this->getMock(RefreshTokenRepositoryInterface::class),
|
||||||
@@ -530,6 +533,7 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
new \DateInterval('PT10M')
|
new \DateInterval('PT10M')
|
||||||
);
|
);
|
||||||
$grant->setClientRepository($clientRepositoryMock);
|
$grant->setClientRepository($clientRepositoryMock);
|
||||||
|
$grant->setAccessTokenRepository($accessTokenRepositoryMock);
|
||||||
$grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key');
|
$grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key');
|
||||||
$grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key');
|
$grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key');
|
||||||
|
|
||||||
@@ -544,10 +548,7 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
'php://input',
|
'php://input',
|
||||||
[],
|
[],
|
||||||
[
|
[
|
||||||
'oauth_authorize_request' => $this->cryptStub->doEncrypt(
|
'oauth_authorize_request' => $this->cryptStub->doEncrypt(json_encode(['user_id' => 123])),
|
||||||
json_encode(['user_id' => 123]),
|
|
||||||
'file://' . __DIR__ . '/../Stubs/private.key'
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'response_type' => 'code',
|
'response_type' => 'code',
|
||||||
@@ -561,6 +562,7 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
$response = $grant->respondToRequest($request, new StubResponseType(), new \DateInterval('PT10M'));
|
$response = $grant->respondToRequest($request, new StubResponseType(), new \DateInterval('PT10M'));
|
||||||
|
|
||||||
|
$response = $response->generateHttpResponse(new Response);
|
||||||
$this->assertTrue($response instanceof ResponseInterface);
|
$this->assertTrue($response instanceof ResponseInterface);
|
||||||
$this->assertTrue(strstr($response->getHeader('set-cookie')[0], 'oauth_authorize_request') !== false);
|
$this->assertTrue(strstr($response->getHeader('set-cookie')[0], 'oauth_authorize_request') !== false);
|
||||||
}
|
}
|
||||||
@@ -623,8 +625,7 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
'scopes' => ['foo'],
|
'scopes' => ['foo'],
|
||||||
'redirect_uri' => 'http://foo/bar',
|
'redirect_uri' => 'http://foo/bar',
|
||||||
]
|
]
|
||||||
),
|
)
|
||||||
'file://' . __DIR__ . '/../Stubs/private.key'
|
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
@@ -779,8 +780,7 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
'scopes' => ['foo'],
|
'scopes' => ['foo'],
|
||||||
'redirect_uri' => 'http://foo/bar',
|
'redirect_uri' => 'http://foo/bar',
|
||||||
]
|
]
|
||||||
),
|
)
|
||||||
'file://' . __DIR__ . '/../Stubs/private.key'
|
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
@@ -849,8 +849,7 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
'scopes' => ['foo'],
|
'scopes' => ['foo'],
|
||||||
'redirect_uri' => 'http://foo/bar',
|
'redirect_uri' => 'http://foo/bar',
|
||||||
]
|
]
|
||||||
),
|
)
|
||||||
'file://' . __DIR__ . '/../Stubs/private.key'
|
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
@@ -916,8 +915,7 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
'scopes' => ['foo'],
|
'scopes' => ['foo'],
|
||||||
'redirect_uri' => 'http://foo/bar',
|
'redirect_uri' => 'http://foo/bar',
|
||||||
]
|
]
|
||||||
),
|
)
|
||||||
'file://' . __DIR__ . '/../Stubs/private.key'
|
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
@@ -7,10 +7,12 @@ use League\OAuth2\Server\Grant\ImplicitGrant;
|
|||||||
use League\OAuth2\Server\Repositories\AccessTokenRepositoryInterface;
|
use League\OAuth2\Server\Repositories\AccessTokenRepositoryInterface;
|
||||||
use League\OAuth2\Server\Repositories\ClientRepositoryInterface;
|
use League\OAuth2\Server\Repositories\ClientRepositoryInterface;
|
||||||
use League\OAuth2\Server\Repositories\UserRepositoryInterface;
|
use League\OAuth2\Server\Repositories\UserRepositoryInterface;
|
||||||
|
use League\OAuth2\Server\ResponseTypes\HtmlResponse;
|
||||||
use LeagueTests\Stubs\ClientEntity;
|
use LeagueTests\Stubs\ClientEntity;
|
||||||
|
use LeagueTests\Stubs\CryptTraitStub;
|
||||||
use LeagueTests\Stubs\StubResponseType;
|
use LeagueTests\Stubs\StubResponseType;
|
||||||
use LeagueTests\Stubs\UserEntity;
|
use LeagueTests\Stubs\UserEntity;
|
||||||
use Psr\Http\Message\ResponseInterface;
|
use Zend\Diactoros\Response;
|
||||||
use Zend\Diactoros\ServerRequest;
|
use Zend\Diactoros\ServerRequest;
|
||||||
|
|
||||||
class ImplicitGrantTest extends \PHPUnit_Framework_TestCase
|
class ImplicitGrantTest extends \PHPUnit_Framework_TestCase
|
||||||
@@ -22,7 +24,7 @@ class ImplicitGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
public function setUp()
|
public function setUp()
|
||||||
{
|
{
|
||||||
$this->cryptStub = new CryptTraitStub;
|
$this->cryptStub = new CryptTraitStub();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testGetIdentifier()
|
public function testGetIdentifier()
|
||||||
@@ -52,6 +54,10 @@ class ImplicitGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
$this->assertTrue($grant->canRespondToRequest($request));
|
$this->assertTrue($grant->canRespondToRequest($request));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \League\OAuth2\Server\Exception\OAuthServerException
|
||||||
|
* @expectedExceptionCode 9
|
||||||
|
*/
|
||||||
public function testRespondToAuthorizationRequest()
|
public function testRespondToAuthorizationRequest()
|
||||||
{
|
{
|
||||||
$client = new ClientEntity();
|
$client = new ClientEntity();
|
||||||
@@ -95,10 +101,7 @@ class ImplicitGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
$response = $grant->respondToRequest($request, new StubResponseType(), new \DateInterval('PT10M'));
|
$grant->respondToRequest($request, new StubResponseType(), new \DateInterval('PT10M'));
|
||||||
|
|
||||||
$this->assertTrue($response instanceof ResponseInterface);
|
|
||||||
$this->assertTrue(strstr($response->getHeader('location')[0], 'http://foo/bar') !== false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -122,10 +125,7 @@ class ImplicitGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
'php://input',
|
'php://input',
|
||||||
[],
|
[],
|
||||||
[
|
[
|
||||||
'oauth_authorize_request' => $this->cryptStub->doEncrypt(
|
'oauth_authorize_request' => $this->cryptStub->doEncrypt(json_encode(['user_id' => 123])),
|
||||||
json_encode(['user_id' => 123]),
|
|
||||||
'file://' . __DIR__ . '/../Stubs/private.key'
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'response_type' => 'token',
|
'response_type' => 'token',
|
||||||
@@ -137,9 +137,7 @@ class ImplicitGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
$response = $grant->respondToRequest($request, new StubResponseType(), new \DateInterval('PT10M'));
|
$grant->respondToRequest($request, new StubResponseType(), new \DateInterval('PT10M'));
|
||||||
|
|
||||||
$this->assertTrue($response instanceof ResponseInterface);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testRespondToAuthorizationRequestBadClient()
|
public function testRespondToAuthorizationRequestBadClient()
|
||||||
@@ -164,10 +162,7 @@ class ImplicitGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
'php://input',
|
'php://input',
|
||||||
[],
|
[],
|
||||||
[
|
[
|
||||||
'oauth_authorize_request' => $this->cryptStub->doEncrypt(
|
'oauth_authorize_request' => $this->cryptStub->doEncrypt(json_encode(['user_id' => 123])),
|
||||||
json_encode(['user_id' => 123]),
|
|
||||||
'file://' . __DIR__ . '/../Stubs/private.key'
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'response_type' => 'token',
|
'response_type' => 'token',
|
||||||
@@ -214,10 +209,7 @@ class ImplicitGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
'php://input',
|
'php://input',
|
||||||
[],
|
[],
|
||||||
[
|
[
|
||||||
'oauth_authorize_request' => $this->cryptStub->doEncrypt(
|
'oauth_authorize_request' => $this->cryptStub->doEncrypt(json_encode(['user_id' => 123])),
|
||||||
json_encode(['user_id' => 123]),
|
|
||||||
'file://' . __DIR__ . '/../Stubs/private.key'
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'response_type' => 'token',
|
'response_type' => 'token',
|
||||||
@@ -283,9 +275,7 @@ class ImplicitGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
$response = $grant->respondToRequest($request, new StubResponseType(), new \DateInterval('PT10M'));
|
$grant->respondToRequest($request, new StubResponseType(), new \DateInterval('PT10M'));
|
||||||
|
|
||||||
$this->assertTrue($response instanceof ResponseInterface);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testRespondToAuthorizationRequestTryLogin()
|
public function testRespondToAuthorizationRequestTryLogin()
|
||||||
@@ -299,8 +289,12 @@ class ImplicitGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
$userEntity = new UserEntity();
|
$userEntity = new UserEntity();
|
||||||
$userRepositoryMock->method('getUserEntityByUserCredentials')->willReturn($userEntity);
|
$userRepositoryMock->method('getUserEntityByUserCredentials')->willReturn($userEntity);
|
||||||
|
|
||||||
|
$accessTokenRepositoryMock = $this->getMockBuilder(AccessTokenRepositoryInterface::class)->getMock();
|
||||||
|
$accessTokenRepositoryMock->method('persistNewAccessToken')->willReturnSelf();
|
||||||
|
|
||||||
$grant = new ImplicitGrant($this->getMock(UserRepositoryInterface::class));
|
$grant = new ImplicitGrant($this->getMock(UserRepositoryInterface::class));
|
||||||
$grant->setClientRepository($clientRepositoryMock);
|
$grant->setClientRepository($clientRepositoryMock);
|
||||||
|
$grant->setAccessTokenRepository($accessTokenRepositoryMock);
|
||||||
$grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key');
|
$grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key');
|
||||||
$grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key');
|
$grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key');
|
||||||
|
|
||||||
@@ -315,10 +309,7 @@ class ImplicitGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
'php://input',
|
'php://input',
|
||||||
[],
|
[],
|
||||||
[
|
[
|
||||||
'oauth_authorize_request' => $this->cryptStub->doEncrypt(
|
'oauth_authorize_request' => $this->cryptStub->doEncrypt(json_encode(['user_id' => null])),
|
||||||
json_encode(['user_id' => null]),
|
|
||||||
'file://' . __DIR__ . '/../Stubs/private.key'
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'response_type' => 'token',
|
'response_type' => 'token',
|
||||||
@@ -332,9 +323,10 @@ class ImplicitGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
);
|
);
|
||||||
|
|
||||||
$response = $grant->respondToRequest($request, new StubResponseType(), new \DateInterval('PT10M'));
|
$response = $grant->respondToRequest($request, new StubResponseType(), new \DateInterval('PT10M'));
|
||||||
$this->assertTrue($response instanceof ResponseInterface);
|
$this->assertTrue($response instanceof HtmlResponse);
|
||||||
$this->assertTrue(strstr($response->getHeader('content-type')[0], 'text/html') !== false);
|
|
||||||
$this->assertTrue(strstr($response->getBody()->getContents(), 'Incorrect username or password') !== false);
|
$response = $response->generateHttpResponse(new Response);
|
||||||
|
$this->assertTrue(strstr((string) $response->getBody(), 'Incorrect username or password') !== false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testRespondToAuthorizationRequestShowAuthorizeForm()
|
public function testRespondToAuthorizationRequestShowAuthorizeForm()
|
||||||
@@ -348,8 +340,12 @@ class ImplicitGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
$userEntity = new UserEntity();
|
$userEntity = new UserEntity();
|
||||||
$userRepositoryMock->method('getUserEntityByUserCredentials')->willReturn($userEntity);
|
$userRepositoryMock->method('getUserEntityByUserCredentials')->willReturn($userEntity);
|
||||||
|
|
||||||
|
$accessTokenRepositoryMock = $this->getMockBuilder(AccessTokenRepositoryInterface::class)->getMock();
|
||||||
|
$accessTokenRepositoryMock->method('persistNewAccessToken')->willReturnSelf();
|
||||||
|
|
||||||
$grant = new ImplicitGrant($this->getMock(UserRepositoryInterface::class));
|
$grant = new ImplicitGrant($this->getMock(UserRepositoryInterface::class));
|
||||||
$grant->setClientRepository($clientRepositoryMock);
|
$grant->setClientRepository($clientRepositoryMock);
|
||||||
|
$grant->setAccessTokenRepository($accessTokenRepositoryMock);
|
||||||
$grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key');
|
$grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key');
|
||||||
$grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key');
|
$grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key');
|
||||||
|
|
||||||
@@ -364,10 +360,7 @@ class ImplicitGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
'php://input',
|
'php://input',
|
||||||
[],
|
[],
|
||||||
[
|
[
|
||||||
'oauth_authorize_request' => $this->cryptStub->doEncrypt(
|
'oauth_authorize_request' => $this->cryptStub->doEncrypt(json_encode(['user_id' => 123])),
|
||||||
json_encode(['user_id' => 123]),
|
|
||||||
'file://' . __DIR__ . '/../Stubs/private.key'
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'response_type' => 'code',
|
'response_type' => 'code',
|
||||||
@@ -381,10 +374,16 @@ class ImplicitGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
$response = $grant->respondToRequest($request, new StubResponseType(), new \DateInterval('PT10M'));
|
$response = $grant->respondToRequest($request, new StubResponseType(), new \DateInterval('PT10M'));
|
||||||
|
|
||||||
$this->assertTrue($response instanceof ResponseInterface);
|
$this->assertTrue($response instanceof HtmlResponse);
|
||||||
|
|
||||||
|
$response = $response->generateHttpResponse(new Response);
|
||||||
$this->assertTrue(strstr($response->getHeader('set-cookie')[0], 'oauth_authorize_request') !== false);
|
$this->assertTrue(strstr($response->getHeader('set-cookie')[0], 'oauth_authorize_request') !== false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \League\OAuth2\Server\Exception\OAuthServerException
|
||||||
|
* @expectedExceptionCode 9
|
||||||
|
*/
|
||||||
public function testRespondToAuthorizationRequestUserDenied()
|
public function testRespondToAuthorizationRequestUserDenied()
|
||||||
{
|
{
|
||||||
$client = new ClientEntity();
|
$client = new ClientEntity();
|
||||||
@@ -412,10 +411,7 @@ class ImplicitGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
'php://input',
|
'php://input',
|
||||||
[],
|
[],
|
||||||
[
|
[
|
||||||
'oauth_authorize_request' => $this->cryptStub->doEncrypt(
|
'oauth_authorize_request' => $this->cryptStub->doEncrypt(json_encode(['user_id' => 123])),
|
||||||
json_encode(['user_id' => 123]),
|
|
||||||
'file://' . __DIR__ . '/../Stubs/private.key'
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'response_type' => 'code',
|
'response_type' => 'code',
|
||||||
@@ -429,10 +425,6 @@ class ImplicitGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
$response = $grant->respondToRequest($request, new StubResponseType(), new \DateInterval('PT10M'));
|
$grant->respondToRequest($request, new StubResponseType(), new \DateInterval('PT10M'));
|
||||||
|
|
||||||
$this->assertTrue($response instanceof ResponseInterface);
|
|
||||||
$this->assertTrue(strstr($response->getHeader('location')[0], 'http://foo/bar') !== false);
|
|
||||||
$this->assertTrue(strstr($response->getHeader('location')[0], 'access_denied') !== false);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -10,6 +10,7 @@ use League\OAuth2\Server\Repositories\ClientRepositoryInterface;
|
|||||||
use League\OAuth2\Server\Repositories\RefreshTokenRepositoryInterface;
|
use League\OAuth2\Server\Repositories\RefreshTokenRepositoryInterface;
|
||||||
use League\OAuth2\Server\Repositories\ScopeRepositoryInterface;
|
use League\OAuth2\Server\Repositories\ScopeRepositoryInterface;
|
||||||
use LeagueTests\Stubs\ClientEntity;
|
use LeagueTests\Stubs\ClientEntity;
|
||||||
|
use LeagueTests\Stubs\CryptTraitStub;
|
||||||
use LeagueTests\Stubs\ScopeEntity;
|
use LeagueTests\Stubs\ScopeEntity;
|
||||||
use LeagueTests\Stubs\StubResponseType;
|
use LeagueTests\Stubs\StubResponseType;
|
||||||
use Zend\Diactoros\ServerRequest;
|
use Zend\Diactoros\ServerRequest;
|
||||||
@@ -23,7 +24,7 @@ class RefreshTokenGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
public function setUp()
|
public function setUp()
|
||||||
{
|
{
|
||||||
$this->cryptStub = new CryptTraitStub;
|
$this->cryptStub = new CryptTraitStub();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testGetIdentifier()
|
public function testGetIdentifier()
|
||||||
@@ -69,8 +70,7 @@ class RefreshTokenGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
'user_id' => 123,
|
'user_id' => 123,
|
||||||
'expire_time' => time() + 3600,
|
'expire_time' => time() + 3600,
|
||||||
]
|
]
|
||||||
),
|
)
|
||||||
'file://' . __DIR__ . '/../Stubs/private.key'
|
|
||||||
);
|
);
|
||||||
|
|
||||||
$serverRequest = new ServerRequest();
|
$serverRequest = new ServerRequest();
|
||||||
@@ -125,8 +125,7 @@ class RefreshTokenGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
'user_id' => 123,
|
'user_id' => 123,
|
||||||
'expire_time' => time() + 3600,
|
'expire_time' => time() + 3600,
|
||||||
]
|
]
|
||||||
),
|
)
|
||||||
'file://' . __DIR__ . '/../Stubs/private.key'
|
|
||||||
);
|
);
|
||||||
|
|
||||||
$serverRequest = new ServerRequest();
|
$serverRequest = new ServerRequest();
|
||||||
@@ -186,8 +185,7 @@ class RefreshTokenGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
'user_id' => 123,
|
'user_id' => 123,
|
||||||
'expire_time' => time() + 3600,
|
'expire_time' => time() + 3600,
|
||||||
]
|
]
|
||||||
),
|
)
|
||||||
'file://' . __DIR__ . '/../Stubs/private.key'
|
|
||||||
);
|
);
|
||||||
|
|
||||||
$serverRequest = new ServerRequest();
|
$serverRequest = new ServerRequest();
|
||||||
@@ -308,8 +306,7 @@ class RefreshTokenGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
'user_id' => 123,
|
'user_id' => 123,
|
||||||
'expire_time' => time() + 3600,
|
'expire_time' => time() + 3600,
|
||||||
]
|
]
|
||||||
),
|
)
|
||||||
'file://' . __DIR__ . '/../Stubs/private.key'
|
|
||||||
);
|
);
|
||||||
|
|
||||||
$serverRequest = new ServerRequest();
|
$serverRequest = new ServerRequest();
|
||||||
@@ -356,8 +353,7 @@ class RefreshTokenGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
'user_id' => 123,
|
'user_id' => 123,
|
||||||
'expire_time' => time() - 3600,
|
'expire_time' => time() - 3600,
|
||||||
]
|
]
|
||||||
),
|
)
|
||||||
'file://' . __DIR__ . '/../Stubs/private.key'
|
|
||||||
);
|
);
|
||||||
|
|
||||||
$serverRequest = new ServerRequest();
|
$serverRequest = new ServerRequest();
|
||||||
@@ -405,8 +401,7 @@ class RefreshTokenGrantTest extends \PHPUnit_Framework_TestCase
|
|||||||
'user_id' => 123,
|
'user_id' => 123,
|
||||||
'expire_time' => time() + 3600,
|
'expire_time' => time() + 3600,
|
||||||
]
|
]
|
||||||
),
|
)
|
||||||
'file://' . __DIR__ . '/../Stubs/private.key'
|
|
||||||
);
|
);
|
||||||
|
|
||||||
$serverRequest = new ServerRequest();
|
$serverRequest = new ServerRequest();
|
||||||
|
@@ -2,11 +2,17 @@
|
|||||||
|
|
||||||
namespace LeagueTests\Middleware;
|
namespace LeagueTests\Middleware;
|
||||||
|
|
||||||
|
use Lcobucci\JWT\Builder;
|
||||||
|
use Lcobucci\JWT\Signer\Key;
|
||||||
|
use Lcobucci\JWT\Signer\Rsa\Sha256;
|
||||||
|
use Lcobucci\JWT\Token;
|
||||||
|
use League\OAuth2\Server\Entities\AccessTokenEntity;
|
||||||
use League\OAuth2\Server\Middleware\ResourceServerMiddleware;
|
use League\OAuth2\Server\Middleware\ResourceServerMiddleware;
|
||||||
use League\OAuth2\Server\Repositories\AccessTokenRepositoryInterface;
|
use League\OAuth2\Server\Repositories\AccessTokenRepositoryInterface;
|
||||||
use League\OAuth2\Server\Repositories\ClientRepositoryInterface;
|
use League\OAuth2\Server\Repositories\ClientRepositoryInterface;
|
||||||
use League\OAuth2\Server\Repositories\ScopeRepositoryInterface;
|
use League\OAuth2\Server\Repositories\ScopeRepositoryInterface;
|
||||||
use League\OAuth2\Server\Server;
|
use League\OAuth2\Server\Server;
|
||||||
|
use LeagueTests\Stubs\ClientEntity;
|
||||||
use LeagueTests\Stubs\StubResponseType;
|
use LeagueTests\Stubs\StubResponseType;
|
||||||
use Zend\Diactoros\Response;
|
use Zend\Diactoros\Response;
|
||||||
use Zend\Diactoros\ServerRequest;
|
use Zend\Diactoros\ServerRequest;
|
||||||
@@ -21,13 +27,24 @@ class ResourceServerMiddlewareTest extends \PHPUnit_Framework_TestCase
|
|||||||
$clientRepository,
|
$clientRepository,
|
||||||
$this->getMock(AccessTokenRepositoryInterface::class),
|
$this->getMock(AccessTokenRepositoryInterface::class),
|
||||||
$this->getMock(ScopeRepositoryInterface::class),
|
$this->getMock(ScopeRepositoryInterface::class),
|
||||||
'',
|
'file://' . __DIR__ . '/../Stubs/private.key',
|
||||||
'',
|
'file://' . __DIR__ . '/../Stubs/public.key',
|
||||||
new StubResponseType()
|
new StubResponseType()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$client = new ClientEntity();
|
||||||
|
$client->setIdentifier('clientName');
|
||||||
|
|
||||||
|
$accessToken = new AccessTokenEntity();
|
||||||
|
$accessToken->setIdentifier('test');
|
||||||
|
$accessToken->setUserIdentifier(123);
|
||||||
|
$accessToken->setExpiryDateTime((new \DateTime())->add(new \DateInterval('PT1H')));
|
||||||
|
$accessToken->setClient($client);
|
||||||
|
|
||||||
|
$token = $accessToken->convertToJWT('file://' . __DIR__ . '/../Stubs/private.key');
|
||||||
|
|
||||||
$request = new ServerRequest();
|
$request = new ServerRequest();
|
||||||
$request = $request->withHeader('authorization', 'Basic test');
|
$request = $request->withHeader('authorization', sprintf('Bearer %s', $token));
|
||||||
|
|
||||||
$middleware = new ResourceServerMiddleware($server);
|
$middleware = new ResourceServerMiddleware($server);
|
||||||
$response = $middleware->__invoke(
|
$response = $middleware->__invoke(
|
||||||
|
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace LeagueTests\ResponseTypes;
|
namespace LeagueTests\ResponseTypes;
|
||||||
|
|
||||||
|
use League\OAuth2\Server\AuthorizationValidators\BearerTokenValidator;
|
||||||
use League\OAuth2\Server\Entities\AccessTokenEntity;
|
use League\OAuth2\Server\Entities\AccessTokenEntity;
|
||||||
use League\OAuth2\Server\Entities\RefreshTokenEntity;
|
use League\OAuth2\Server\Entities\RefreshTokenEntity;
|
||||||
use League\OAuth2\Server\Exception\OAuthServerException;
|
use League\OAuth2\Server\Exception\OAuthServerException;
|
||||||
@@ -19,11 +20,9 @@ class BearerResponseTypeTest extends \PHPUnit_Framework_TestCase
|
|||||||
{
|
{
|
||||||
$accessTokenRepositoryMock = $this->getMockBuilder(AccessTokenRepositoryInterface::class)->getMock();
|
$accessTokenRepositoryMock = $this->getMockBuilder(AccessTokenRepositoryInterface::class)->getMock();
|
||||||
|
|
||||||
$responseType = new BearerTokenResponse(
|
$responseType = new BearerTokenResponse($accessTokenRepositoryMock);
|
||||||
'file://' . __DIR__ . '/../Stubs/private.key',
|
$responseType->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key');
|
||||||
'file://' . __DIR__ . '/../Stubs/public.key',
|
$responseType->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key');
|
||||||
$accessTokenRepositoryMock
|
|
||||||
);
|
|
||||||
|
|
||||||
$client = new ClientEntity();
|
$client = new ClientEntity();
|
||||||
$client->setIdentifier('clientName');
|
$client->setIdentifier('clientName');
|
||||||
@@ -64,12 +63,11 @@ class BearerResponseTypeTest extends \PHPUnit_Framework_TestCase
|
|||||||
public function testDetermineAccessTokenInHeaderValidToken()
|
public function testDetermineAccessTokenInHeaderValidToken()
|
||||||
{
|
{
|
||||||
$accessTokenRepositoryMock = $this->getMockBuilder(AccessTokenRepositoryInterface::class)->getMock();
|
$accessTokenRepositoryMock = $this->getMockBuilder(AccessTokenRepositoryInterface::class)->getMock();
|
||||||
|
$accessTokenRepositoryMock->method('isAccessTokenRevoked')->willReturn(false);
|
||||||
|
|
||||||
$responseType = new BearerTokenResponse(
|
$responseType = new BearerTokenResponse($accessTokenRepositoryMock);
|
||||||
'file://' . __DIR__ . '/../Stubs/private.key',
|
$responseType->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key');
|
||||||
'file://' . __DIR__ . '/../Stubs/public.key',
|
$responseType->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key');
|
||||||
$accessTokenRepositoryMock
|
|
||||||
);
|
|
||||||
|
|
||||||
$client = new ClientEntity();
|
$client = new ClientEntity();
|
||||||
$client->setIdentifier('clientName');
|
$client->setIdentifier('clientName');
|
||||||
@@ -89,13 +87,16 @@ class BearerResponseTypeTest extends \PHPUnit_Framework_TestCase
|
|||||||
$responseType->setRefreshToken($refreshToken);
|
$responseType->setRefreshToken($refreshToken);
|
||||||
|
|
||||||
$response = $responseType->generateHttpResponse(new Response());
|
$response = $responseType->generateHttpResponse(new Response());
|
||||||
$response->getBody()->rewind();
|
$json = json_decode((string) $response->getBody());
|
||||||
$json = json_decode($response->getBody()->getContents());
|
|
||||||
|
$authorizationValidator = new BearerTokenValidator($accessTokenRepositoryMock);
|
||||||
|
$authorizationValidator->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key');
|
||||||
|
$authorizationValidator->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key');
|
||||||
|
|
||||||
$request = new ServerRequest();
|
$request = new ServerRequest();
|
||||||
$request = $request->withHeader('authorization', sprintf('Bearer %s', $json->access_token));
|
$request = $request->withHeader('authorization', sprintf('Bearer %s', $json->access_token));
|
||||||
|
|
||||||
$request = $responseType->validateAccessToken($request);
|
$request = $authorizationValidator->validateAuthorization($request);
|
||||||
|
|
||||||
$this->assertEquals('abcdef', $request->getAttribute('oauth_access_token_id'));
|
$this->assertEquals('abcdef', $request->getAttribute('oauth_access_token_id'));
|
||||||
$this->assertEquals('clientName', $request->getAttribute('oauth_client_id'));
|
$this->assertEquals('clientName', $request->getAttribute('oauth_client_id'));
|
||||||
@@ -106,12 +107,11 @@ class BearerResponseTypeTest extends \PHPUnit_Framework_TestCase
|
|||||||
public function testDetermineAccessTokenInHeaderInvalidJWT()
|
public function testDetermineAccessTokenInHeaderInvalidJWT()
|
||||||
{
|
{
|
||||||
$accessTokenRepositoryMock = $this->getMockBuilder(AccessTokenRepositoryInterface::class)->getMock();
|
$accessTokenRepositoryMock = $this->getMockBuilder(AccessTokenRepositoryInterface::class)->getMock();
|
||||||
|
$accessTokenRepositoryMock->method('isAccessTokenRevoked')->willReturn(false);
|
||||||
|
|
||||||
$responseType = new BearerTokenResponse(
|
$responseType = new BearerTokenResponse($accessTokenRepositoryMock);
|
||||||
'file://' . __DIR__ . '/../Stubs/private.key',
|
$responseType->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key');
|
||||||
'file://' . __DIR__ . '/../Stubs/public.key',
|
$responseType->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key');
|
||||||
$accessTokenRepositoryMock
|
|
||||||
);
|
|
||||||
|
|
||||||
$client = new ClientEntity();
|
$client = new ClientEntity();
|
||||||
$client->setIdentifier('clientName');
|
$client->setIdentifier('clientName');
|
||||||
@@ -131,14 +131,17 @@ class BearerResponseTypeTest extends \PHPUnit_Framework_TestCase
|
|||||||
$responseType->setRefreshToken($refreshToken);
|
$responseType->setRefreshToken($refreshToken);
|
||||||
|
|
||||||
$response = $responseType->generateHttpResponse(new Response());
|
$response = $responseType->generateHttpResponse(new Response());
|
||||||
$response->getBody()->rewind();
|
$json = json_decode((string) $response->getBody());
|
||||||
$json = json_decode($response->getBody()->getContents());
|
|
||||||
|
$authorizationValidator = new BearerTokenValidator($accessTokenRepositoryMock);
|
||||||
|
$authorizationValidator->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key');
|
||||||
|
$authorizationValidator->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key');
|
||||||
|
|
||||||
$request = new ServerRequest();
|
$request = new ServerRequest();
|
||||||
$request = $request->withHeader('authorization', sprintf('Bearer %s', $json->access_token . 'foo'));
|
$request = $request->withHeader('authorization', sprintf('Bearer %s', $json->access_token . 'foo'));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$responseType->validateAccessToken($request);
|
$authorizationValidator->validateAuthorization($request);
|
||||||
} catch (OAuthServerException $e) {
|
} catch (OAuthServerException $e) {
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
'Access token could not be verified',
|
'Access token could not be verified',
|
||||||
@@ -150,14 +153,11 @@ class BearerResponseTypeTest extends \PHPUnit_Framework_TestCase
|
|||||||
public function testDetermineAccessTokenInHeaderRevokedToken()
|
public function testDetermineAccessTokenInHeaderRevokedToken()
|
||||||
{
|
{
|
||||||
$accessTokenRepositoryMock = $this->getMockBuilder(AccessTokenRepositoryInterface::class)->getMock();
|
$accessTokenRepositoryMock = $this->getMockBuilder(AccessTokenRepositoryInterface::class)->getMock();
|
||||||
$accessTokenRepositoryMock->expects($this->once())->method('isAccessTokenRevoked')->willReturn(true);
|
$accessTokenRepositoryMock->method('isAccessTokenRevoked')->willReturn(true);
|
||||||
|
|
||||||
|
$responseType = new BearerTokenResponse($accessTokenRepositoryMock);
|
||||||
$responseType = new BearerTokenResponse(
|
$responseType->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key');
|
||||||
'file://' . __DIR__ . '/../Stubs/private.key',
|
$responseType->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key');
|
||||||
'file://' . __DIR__ . '/../Stubs/public.key',
|
|
||||||
$accessTokenRepositoryMock
|
|
||||||
);
|
|
||||||
|
|
||||||
$client = new ClientEntity();
|
$client = new ClientEntity();
|
||||||
$client->setIdentifier('clientName');
|
$client->setIdentifier('clientName');
|
||||||
@@ -177,14 +177,17 @@ class BearerResponseTypeTest extends \PHPUnit_Framework_TestCase
|
|||||||
$responseType->setRefreshToken($refreshToken);
|
$responseType->setRefreshToken($refreshToken);
|
||||||
|
|
||||||
$response = $responseType->generateHttpResponse(new Response());
|
$response = $responseType->generateHttpResponse(new Response());
|
||||||
$response->getBody()->rewind();
|
$json = json_decode((string) $response->getBody());
|
||||||
$json = json_decode($response->getBody()->getContents());
|
|
||||||
|
$authorizationValidator = new BearerTokenValidator($accessTokenRepositoryMock);
|
||||||
|
$authorizationValidator->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key');
|
||||||
|
$authorizationValidator->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key');
|
||||||
|
|
||||||
$request = new ServerRequest();
|
$request = new ServerRequest();
|
||||||
$request = $request->withHeader('authorization', sprintf('Bearer %s', $json->access_token));
|
$request = $request->withHeader('authorization', sprintf('Bearer %s', $json->access_token));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$responseType->validateAccessToken($request);
|
$authorizationValidator->validateAuthorization($request);
|
||||||
} catch (OAuthServerException $e) {
|
} catch (OAuthServerException $e) {
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
'Access token has been revoked',
|
'Access token has been revoked',
|
||||||
@@ -197,17 +200,19 @@ class BearerResponseTypeTest extends \PHPUnit_Framework_TestCase
|
|||||||
{
|
{
|
||||||
$accessTokenRepositoryMock = $this->getMockBuilder(AccessTokenRepositoryInterface::class)->getMock();
|
$accessTokenRepositoryMock = $this->getMockBuilder(AccessTokenRepositoryInterface::class)->getMock();
|
||||||
|
|
||||||
$responseType = new BearerTokenResponse(
|
$responseType = new BearerTokenResponse($accessTokenRepositoryMock);
|
||||||
'file://' . __DIR__ . '/../Stubs/private.key',
|
$responseType->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key');
|
||||||
'file://' . __DIR__ . '/../Stubs/public.key',
|
$responseType->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key');
|
||||||
$accessTokenRepositoryMock
|
|
||||||
);
|
$authorizationValidator = new BearerTokenValidator($accessTokenRepositoryMock);
|
||||||
|
$authorizationValidator->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key');
|
||||||
|
$authorizationValidator->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key');
|
||||||
|
|
||||||
$request = new ServerRequest();
|
$request = new ServerRequest();
|
||||||
$request = $request->withHeader('authorization', 'Bearer blah');
|
$request = $request->withHeader('authorization', 'Bearer blah');
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$responseType->validateAccessToken($request);
|
$authorizationValidator->validateAuthorization($request);
|
||||||
} catch (OAuthServerException $e) {
|
} catch (OAuthServerException $e) {
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
'The JWT string must have two dots',
|
'The JWT string must have two dots',
|
||||||
|
@@ -15,8 +15,10 @@ use League\OAuth2\Server\ResponseTypes\BearerTokenResponse;
|
|||||||
use League\OAuth2\Server\Server;
|
use League\OAuth2\Server\Server;
|
||||||
use LeagueTests\Stubs\ClientEntity;
|
use LeagueTests\Stubs\ClientEntity;
|
||||||
use LeagueTests\Stubs\StubResponseType;
|
use LeagueTests\Stubs\StubResponseType;
|
||||||
|
use LeagueTests\Stubs\UserEntity;
|
||||||
use Psr\Http\Message\ResponseInterface;
|
use Psr\Http\Message\ResponseInterface;
|
||||||
use Zend\Diactoros\ServerRequest;
|
use Zend\Diactoros\Response;
|
||||||
|
use Zend\Diactoros\ServerRequestFactory;
|
||||||
|
|
||||||
class ServerTest extends \PHPUnit_Framework_TestCase
|
class ServerTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
@@ -34,7 +36,7 @@ class ServerTest extends \PHPUnit_Framework_TestCase
|
|||||||
$server->enableGrantType(new ClientCredentialsGrant(), new \DateInterval('PT1M'));
|
$server->enableGrantType(new ClientCredentialsGrant(), new \DateInterval('PT1M'));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$server->respondToRequest();
|
$server->respondToRequest(ServerRequestFactory::fromGlobals(), new Response);
|
||||||
} catch (OAuthServerException $e) {
|
} catch (OAuthServerException $e) {
|
||||||
$this->assertEquals('unsupported_grant_type', $e->getErrorType());
|
$this->assertEquals('unsupported_grant_type', $e->getErrorType());
|
||||||
$this->assertEquals(400, $e->getHttpStatusCode());
|
$this->assertEquals(400, $e->getHttpStatusCode());
|
||||||
@@ -60,7 +62,7 @@ class ServerTest extends \PHPUnit_Framework_TestCase
|
|||||||
$_POST['grant_type'] = 'client_credentials';
|
$_POST['grant_type'] = 'client_credentials';
|
||||||
$_POST['client_id'] = 'foo';
|
$_POST['client_id'] = 'foo';
|
||||||
$_POST['client_secret'] = 'bar';
|
$_POST['client_secret'] = 'bar';
|
||||||
$response = $server->respondToRequest();
|
$response = $server->respondToRequest(ServerRequestFactory::fromGlobals(), new Response);
|
||||||
$this->assertEquals(200, $response->getStatusCode());
|
$this->assertEquals(200, $response->getStatusCode());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,16 +79,19 @@ class ServerTest extends \PHPUnit_Framework_TestCase
|
|||||||
$clientRepository,
|
$clientRepository,
|
||||||
$this->getMock(AccessTokenRepositoryInterface::class),
|
$this->getMock(AccessTokenRepositoryInterface::class),
|
||||||
$this->getMock(ScopeRepositoryInterface::class),
|
$this->getMock(ScopeRepositoryInterface::class),
|
||||||
'',
|
'file://' . __DIR__ . '/Stubs/private.key',
|
||||||
'',
|
'file://' . __DIR__ . '/Stubs/public.key',
|
||||||
new StubResponseType()
|
new StubResponseType()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$userRepository = $this->getMock(UserRepositoryInterface::class);
|
||||||
|
$userRepository->method('getUserEntityByUserCredentials')->willReturn(new UserEntity());
|
||||||
|
|
||||||
$server->enableGrantType(
|
$server->enableGrantType(
|
||||||
new AuthCodeGrant(
|
new AuthCodeGrant(
|
||||||
$this->getMock(AuthCodeRepositoryInterface::class),
|
$this->getMock(AuthCodeRepositoryInterface::class),
|
||||||
$this->getMock(RefreshTokenRepositoryInterface::class),
|
$this->getMock(RefreshTokenRepositoryInterface::class),
|
||||||
$this->getMock(UserRepositoryInterface::class),
|
$userRepository,
|
||||||
new \DateInterval('PT1H')
|
new \DateInterval('PT1H')
|
||||||
),
|
),
|
||||||
new \DateInterval('PT1M')
|
new \DateInterval('PT1M')
|
||||||
@@ -97,9 +102,13 @@ class ServerTest extends \PHPUnit_Framework_TestCase
|
|||||||
$_GET['response_type'] = 'code';
|
$_GET['response_type'] = 'code';
|
||||||
$_GET['client_id'] = $client->getIdentifier();
|
$_GET['client_id'] = $client->getIdentifier();
|
||||||
$_GET['redirect_uri'] = $client->getRedirectUri();
|
$_GET['redirect_uri'] = $client->getRedirectUri();
|
||||||
$response = $server->respondToRequest();
|
$_POST['action'] = 'approve';
|
||||||
$this->assertEquals(200, $response->getStatusCode());
|
$_POST['username'] = 'user';
|
||||||
|
$_POST['password'] = 'pass';
|
||||||
|
$response = $server->respondToRequest(ServerRequestFactory::fromGlobals(), new Response);
|
||||||
$this->assertTrue($response instanceof ResponseInterface);
|
$this->assertTrue($response instanceof ResponseInterface);
|
||||||
|
$this->assertEquals(302, $response->getStatusCode());
|
||||||
|
$this->assertTrue(strstr($response->getHeaderLine('location'), 'code=') !== false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testGetResponseType()
|
public function testGetResponseType()
|
||||||
@@ -134,7 +143,7 @@ class ServerTest extends \PHPUnit_Framework_TestCase
|
|||||||
);
|
);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$server->validateAuthenticatedRequest(new ServerRequest());
|
$server->validateAuthenticatedRequest(ServerRequestFactory::fromGlobals());
|
||||||
} catch (OAuthServerException $e) {
|
} catch (OAuthServerException $e) {
|
||||||
$this->assertEquals('Missing "Authorization" header', $e->getHint());
|
$this->assertEquals('Missing "Authorization" header', $e->getHint());
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user