mirror of
				https://github.com/elyby/oauth2-server.git
				synced 2025-05-31 14:12:07 +05:30 
			
		
		
		
	Improved tests
This commit is contained in:
		@@ -8,7 +8,6 @@ use League\OAuth2\Server\Entities\UserEntityInterface;
 | 
			
		||||
use League\OAuth2\Server\Exception\OAuthServerException;
 | 
			
		||||
use League\OAuth2\Server\Repositories\AuthCodeRepositoryInterface;
 | 
			
		||||
use League\OAuth2\Server\Repositories\RefreshTokenRepositoryInterface;
 | 
			
		||||
use League\OAuth2\Server\Repositories\UserRepositoryInterface;
 | 
			
		||||
use League\OAuth2\Server\RequestEvent;
 | 
			
		||||
use League\OAuth2\Server\RequestTypes\AuthorizationRequest;
 | 
			
		||||
use League\OAuth2\Server\ResponseTypes\RedirectResponse;
 | 
			
		||||
@@ -25,18 +24,15 @@ class AuthCodeGrant extends AbstractAuthorizeGrant
 | 
			
		||||
    /**
 | 
			
		||||
     * @param \League\OAuth2\Server\Repositories\AuthCodeRepositoryInterface     $authCodeRepository
 | 
			
		||||
     * @param \League\OAuth2\Server\Repositories\RefreshTokenRepositoryInterface $refreshTokenRepository
 | 
			
		||||
     * @param \League\OAuth2\Server\Repositories\UserRepositoryInterface         $userRepository
 | 
			
		||||
     * @param \DateInterval                                                      $authCodeTTL
 | 
			
		||||
     */
 | 
			
		||||
    public function __construct(
 | 
			
		||||
        AuthCodeRepositoryInterface $authCodeRepository,
 | 
			
		||||
        RefreshTokenRepositoryInterface $refreshTokenRepository,
 | 
			
		||||
        UserRepositoryInterface $userRepository,
 | 
			
		||||
        \DateInterval $authCodeTTL
 | 
			
		||||
    ) {
 | 
			
		||||
        $this->setAuthCodeRepository($authCodeRepository);
 | 
			
		||||
        $this->setRefreshTokenRepository($refreshTokenRepository);
 | 
			
		||||
        $this->setUserRepository($userRepository);
 | 
			
		||||
        $this->authCodeTTL = $authCodeTTL;
 | 
			
		||||
        $this->refreshTokenTTL = new \DateInterval('P1M');
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ namespace League\OAuth2\Server\Grant;
 | 
			
		||||
use League\OAuth2\Server\Entities\ClientEntityInterface;
 | 
			
		||||
use League\OAuth2\Server\Entities\UserEntityInterface;
 | 
			
		||||
use League\OAuth2\Server\Exception\OAuthServerException;
 | 
			
		||||
use League\OAuth2\Server\Repositories\UserRepositoryInterface;
 | 
			
		||||
use League\OAuth2\Server\RequestEvent;
 | 
			
		||||
use League\OAuth2\Server\RequestTypes\AuthorizationRequest;
 | 
			
		||||
use League\OAuth2\Server\ResponseTypes\RedirectResponse;
 | 
			
		||||
@@ -20,12 +19,10 @@ class ImplicitGrant extends AbstractAuthorizeGrant
 | 
			
		||||
    private $accessTokenTTL;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param \League\OAuth2\Server\Repositories\UserRepositoryInterface $userRepository
 | 
			
		||||
     * @param \DateInterval $accessTokenTTL
 | 
			
		||||
     */
 | 
			
		||||
    public function __construct(UserRepositoryInterface $userRepository, \DateInterval $accessTokenTTL)
 | 
			
		||||
    public function __construct(\DateInterval $accessTokenTTL)
 | 
			
		||||
    {
 | 
			
		||||
        $this->setUserRepository($userRepository);
 | 
			
		||||
        $this->refreshTokenTTL = new \DateInterval('P1M');
 | 
			
		||||
        $this->accessTokenTTL = $accessTokenTTL;
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -44,7 +44,6 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
 | 
			
		||||
        $grant = new AuthCodeGrant(
 | 
			
		||||
            $this->getMock(AuthCodeRepositoryInterface::class),
 | 
			
		||||
            $this->getMock(RefreshTokenRepositoryInterface::class),
 | 
			
		||||
            $this->getMock(UserRepositoryInterface::class),
 | 
			
		||||
            new \DateInterval('PT10M')
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
@@ -56,7 +55,6 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
 | 
			
		||||
        $grant = new AuthCodeGrant(
 | 
			
		||||
            $this->getMock(AuthCodeRepositoryInterface::class),
 | 
			
		||||
            $this->getMock(RefreshTokenRepositoryInterface::class),
 | 
			
		||||
            $this->getMock(UserRepositoryInterface::class),
 | 
			
		||||
            new \DateInterval('PT10M')
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
@@ -87,7 +85,6 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
 | 
			
		||||
        $grant = new AuthCodeGrant(
 | 
			
		||||
            $this->getMock(AuthCodeRepositoryInterface::class),
 | 
			
		||||
            $this->getMock(RefreshTokenRepositoryInterface::class),
 | 
			
		||||
            $this->getMock(UserRepositoryInterface::class),
 | 
			
		||||
            new \DateInterval('PT10M')
 | 
			
		||||
        );
 | 
			
		||||
        $grant->setClientRepository($clientRepositoryMock);
 | 
			
		||||
@@ -120,7 +117,6 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
 | 
			
		||||
        $grant = new AuthCodeGrant(
 | 
			
		||||
            $this->getMock(AuthCodeRepositoryInterface::class),
 | 
			
		||||
            $this->getMock(RefreshTokenRepositoryInterface::class),
 | 
			
		||||
            $this->getMock(UserRepositoryInterface::class),
 | 
			
		||||
            new \DateInterval('PT10M')
 | 
			
		||||
        );
 | 
			
		||||
        $grant->setClientRepository($clientRepositoryMock);
 | 
			
		||||
@@ -154,7 +150,6 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
 | 
			
		||||
        $grant = new AuthCodeGrant(
 | 
			
		||||
            $this->getMock(AuthCodeRepositoryInterface::class),
 | 
			
		||||
            $this->getMock(RefreshTokenRepositoryInterface::class),
 | 
			
		||||
            $this->getMock(UserRepositoryInterface::class),
 | 
			
		||||
            new \DateInterval('PT10M')
 | 
			
		||||
        );
 | 
			
		||||
        $grant->setClientRepository($clientRepositoryMock);
 | 
			
		||||
@@ -187,7 +182,6 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
 | 
			
		||||
        $grant = new AuthCodeGrant(
 | 
			
		||||
            $this->getMock(AuthCodeRepositoryInterface::class),
 | 
			
		||||
            $this->getMock(RefreshTokenRepositoryInterface::class),
 | 
			
		||||
            $this->getMock(UserRepositoryInterface::class),
 | 
			
		||||
            new \DateInterval('PT10M')
 | 
			
		||||
        );
 | 
			
		||||
        $grant->setClientRepository($clientRepositoryMock);
 | 
			
		||||
@@ -223,7 +217,6 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
 | 
			
		||||
        $grant = new AuthCodeGrant(
 | 
			
		||||
            $this->getMock(AuthCodeRepositoryInterface::class),
 | 
			
		||||
            $this->getMock(RefreshTokenRepositoryInterface::class),
 | 
			
		||||
            $this->getMock(UserRepositoryInterface::class),
 | 
			
		||||
            new \DateInterval('PT10M')
 | 
			
		||||
        );
 | 
			
		||||
        $grant->setClientRepository($clientRepositoryMock);
 | 
			
		||||
@@ -260,7 +253,6 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
 | 
			
		||||
        $grant = new AuthCodeGrant(
 | 
			
		||||
            $this->getMock(AuthCodeRepositoryInterface::class),
 | 
			
		||||
            $this->getMock(RefreshTokenRepositoryInterface::class),
 | 
			
		||||
            $this->getMock(UserRepositoryInterface::class),
 | 
			
		||||
            new \DateInterval('PT10M')
 | 
			
		||||
        );
 | 
			
		||||
        $grant->setClientRepository($clientRepositoryMock);
 | 
			
		||||
@@ -297,7 +289,6 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
 | 
			
		||||
        $grant = new AuthCodeGrant(
 | 
			
		||||
            $authCodeRepository,
 | 
			
		||||
            $this->getMock(RefreshTokenRepositoryInterface::class),
 | 
			
		||||
            $this->getMock(UserRepositoryInterface::class),
 | 
			
		||||
            new \DateInterval('PT10M')
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
@@ -325,7 +316,6 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
 | 
			
		||||
        $grant = new AuthCodeGrant(
 | 
			
		||||
            $authCodeRepository,
 | 
			
		||||
            $this->getMock(RefreshTokenRepositoryInterface::class),
 | 
			
		||||
            $this->getMock(UserRepositoryInterface::class),
 | 
			
		||||
            new \DateInterval('PT10M')
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
@@ -343,10 +333,6 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
 | 
			
		||||
        $clientRepositoryMock = $this->getMockBuilder(ClientRepositoryInterface::class)->getMock();
 | 
			
		||||
        $clientRepositoryMock->method('getClientEntity')->willReturn($client);
 | 
			
		||||
 | 
			
		||||
        $userRepositoryMock = $this->getMockBuilder(UserRepositoryInterface::class)->getMock();
 | 
			
		||||
        $userEntity = new UserEntity();
 | 
			
		||||
        $userRepositoryMock->method('getUserEntityByUserCredentials')->willReturn($userEntity);
 | 
			
		||||
 | 
			
		||||
        $scopeRepositoryMock = $this->getMockBuilder(ScopeRepositoryInterface::class)->getMock();
 | 
			
		||||
        $scopeEntity = new ScopeEntity();
 | 
			
		||||
        $scopeRepositoryMock->method('getScopeEntityByIdentifier')->willReturn($scopeEntity);
 | 
			
		||||
@@ -362,7 +348,6 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
 | 
			
		||||
        $grant = new AuthCodeGrant(
 | 
			
		||||
            $this->getMock(AuthCodeRepositoryInterface::class),
 | 
			
		||||
            $this->getMock(RefreshTokenRepositoryInterface::class),
 | 
			
		||||
            $userRepositoryMock,
 | 
			
		||||
            new \DateInterval('PT10M')
 | 
			
		||||
        );
 | 
			
		||||
        $grant->setClientRepository($clientRepositoryMock);
 | 
			
		||||
@@ -414,14 +399,12 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
 | 
			
		||||
    public function testRespondToAccessTokenRequestMissingRedirectUri()
 | 
			
		||||
    {
 | 
			
		||||
        $clientRepositoryMock = $this->getMockBuilder(ClientRepositoryInterface::class)->getMock();
 | 
			
		||||
        $userRepositoryMock = $this->getMockBuilder(UserRepositoryInterface::class)->getMock();
 | 
			
		||||
        $accessTokenRepositoryMock = $this->getMockBuilder(AccessTokenRepositoryInterface::class)->getMock();
 | 
			
		||||
        $refreshTokenRepositoryMock = $this->getMockBuilder(RefreshTokenRepositoryInterface::class)->getMock();
 | 
			
		||||
 | 
			
		||||
        $grant = new AuthCodeGrant(
 | 
			
		||||
            $this->getMock(AuthCodeRepositoryInterface::class),
 | 
			
		||||
            $this->getMock(RefreshTokenRepositoryInterface::class),
 | 
			
		||||
            $userRepositoryMock,
 | 
			
		||||
            new \DateInterval('PT10M')
 | 
			
		||||
        );
 | 
			
		||||
        $grant->setClientRepository($clientRepositoryMock);
 | 
			
		||||
@@ -459,14 +442,12 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
 | 
			
		||||
        $clientRepositoryMock = $this->getMockBuilder(ClientRepositoryInterface::class)->getMock();
 | 
			
		||||
        $clientRepositoryMock->method('getClientEntity')->willReturn($client);
 | 
			
		||||
 | 
			
		||||
        $userRepositoryMock = $this->getMockBuilder(UserRepositoryInterface::class)->getMock();
 | 
			
		||||
        $accessTokenRepositoryMock = $this->getMockBuilder(AccessTokenRepositoryInterface::class)->getMock();
 | 
			
		||||
        $refreshTokenRepositoryMock = $this->getMockBuilder(RefreshTokenRepositoryInterface::class)->getMock();
 | 
			
		||||
 | 
			
		||||
        $grant = new AuthCodeGrant(
 | 
			
		||||
            $this->getMock(AuthCodeRepositoryInterface::class),
 | 
			
		||||
            $this->getMock(RefreshTokenRepositoryInterface::class),
 | 
			
		||||
            $userRepositoryMock,
 | 
			
		||||
            new \DateInterval('PT10M')
 | 
			
		||||
        );
 | 
			
		||||
        $grant->setClientRepository($clientRepositoryMock);
 | 
			
		||||
@@ -504,10 +485,6 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
 | 
			
		||||
        $clientRepositoryMock = $this->getMockBuilder(ClientRepositoryInterface::class)->getMock();
 | 
			
		||||
        $clientRepositoryMock->method('getClientEntity')->willReturn($client);
 | 
			
		||||
 | 
			
		||||
        $userRepositoryMock = $this->getMockBuilder(UserRepositoryInterface::class)->getMock();
 | 
			
		||||
        $userEntity = new UserEntity();
 | 
			
		||||
        $userRepositoryMock->method('getUserEntityByUserCredentials')->willReturn($userEntity);
 | 
			
		||||
 | 
			
		||||
        $accessTokenRepositoryMock = $this->getMockBuilder(AccessTokenRepositoryInterface::class)->getMock();
 | 
			
		||||
        $accessTokenRepositoryMock->method('persistNewAccessToken')->willReturnSelf();
 | 
			
		||||
 | 
			
		||||
@@ -517,7 +494,6 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
 | 
			
		||||
        $grant = new AuthCodeGrant(
 | 
			
		||||
            $this->getMock(AuthCodeRepositoryInterface::class),
 | 
			
		||||
            $this->getMock(RefreshTokenRepositoryInterface::class),
 | 
			
		||||
            $userRepositoryMock,
 | 
			
		||||
            new \DateInterval('PT10M')
 | 
			
		||||
        );
 | 
			
		||||
        $grant->setClientRepository($clientRepositoryMock);
 | 
			
		||||
@@ -570,10 +546,6 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
 | 
			
		||||
        $clientRepositoryMock = $this->getMockBuilder(ClientRepositoryInterface::class)->getMock();
 | 
			
		||||
        $clientRepositoryMock->method('getClientEntity')->willReturn($client);
 | 
			
		||||
 | 
			
		||||
        $userRepositoryMock = $this->getMockBuilder(UserRepositoryInterface::class)->getMock();
 | 
			
		||||
        $userEntity = new UserEntity();
 | 
			
		||||
        $userRepositoryMock->method('getUserEntityByUserCredentials')->willReturn($userEntity);
 | 
			
		||||
 | 
			
		||||
        $accessTokenRepositoryMock = $this->getMockBuilder(AccessTokenRepositoryInterface::class)->getMock();
 | 
			
		||||
        $accessTokenRepositoryMock->method('persistNewAccessToken')->willReturnSelf();
 | 
			
		||||
 | 
			
		||||
@@ -586,7 +558,6 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
 | 
			
		||||
        $grant = new AuthCodeGrant(
 | 
			
		||||
            $authCodeRepositoryMock,
 | 
			
		||||
            $this->getMock(RefreshTokenRepositoryInterface::class),
 | 
			
		||||
            $userRepositoryMock,
 | 
			
		||||
            new \DateInterval('PT10M')
 | 
			
		||||
        );
 | 
			
		||||
        $grant->setClientRepository($clientRepositoryMock);
 | 
			
		||||
@@ -639,10 +610,6 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
 | 
			
		||||
        $clientRepositoryMock = $this->getMockBuilder(ClientRepositoryInterface::class)->getMock();
 | 
			
		||||
        $clientRepositoryMock->method('getClientEntity')->willReturn($client);
 | 
			
		||||
 | 
			
		||||
        $userRepositoryMock = $this->getMockBuilder(UserRepositoryInterface::class)->getMock();
 | 
			
		||||
        $userEntity = new UserEntity();
 | 
			
		||||
        $userRepositoryMock->method('getUserEntityByUserCredentials')->willReturn($userEntity);
 | 
			
		||||
 | 
			
		||||
        $accessTokenRepositoryMock = $this->getMockBuilder(AccessTokenRepositoryInterface::class)->getMock();
 | 
			
		||||
        $accessTokenRepositoryMock->method('persistNewAccessToken')->willReturnSelf();
 | 
			
		||||
 | 
			
		||||
@@ -652,7 +619,6 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
 | 
			
		||||
        $grant = new AuthCodeGrant(
 | 
			
		||||
            $this->getMock(AuthCodeRepositoryInterface::class),
 | 
			
		||||
            $this->getMock(RefreshTokenRepositoryInterface::class),
 | 
			
		||||
            $userRepositoryMock,
 | 
			
		||||
            new \DateInterval('PT10M')
 | 
			
		||||
        );
 | 
			
		||||
        $grant->setClientRepository($clientRepositoryMock);
 | 
			
		||||
@@ -705,10 +671,6 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
 | 
			
		||||
        $clientRepositoryMock = $this->getMockBuilder(ClientRepositoryInterface::class)->getMock();
 | 
			
		||||
        $clientRepositoryMock->method('getClientEntity')->willReturn($client);
 | 
			
		||||
 | 
			
		||||
        $userRepositoryMock = $this->getMockBuilder(UserRepositoryInterface::class)->getMock();
 | 
			
		||||
        $userEntity = new UserEntity();
 | 
			
		||||
        $userRepositoryMock->method('getUserEntityByUserCredentials')->willReturn($userEntity);
 | 
			
		||||
 | 
			
		||||
        $accessTokenRepositoryMock = $this->getMockBuilder(AccessTokenRepositoryInterface::class)->getMock();
 | 
			
		||||
        $accessTokenRepositoryMock->method('persistNewAccessToken')->willReturnSelf();
 | 
			
		||||
 | 
			
		||||
@@ -718,7 +680,6 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase
 | 
			
		||||
        $grant = new AuthCodeGrant(
 | 
			
		||||
            $this->getMock(AuthCodeRepositoryInterface::class),
 | 
			
		||||
            $this->getMock(RefreshTokenRepositoryInterface::class),
 | 
			
		||||
            $userRepositoryMock,
 | 
			
		||||
            new \DateInterval('PT10M')
 | 
			
		||||
        );
 | 
			
		||||
        $grant->setClientRepository($clientRepositoryMock);
 | 
			
		||||
 
 | 
			
		||||
@@ -9,6 +9,7 @@ use League\OAuth2\Server\Repositories\AccessTokenRepositoryInterface;
 | 
			
		||||
use League\OAuth2\Server\Repositories\ClientRepositoryInterface;
 | 
			
		||||
use League\OAuth2\Server\Repositories\ScopeRepositoryInterface;
 | 
			
		||||
use League\OAuth2\Server\Repositories\UserRepositoryInterface;
 | 
			
		||||
use League\OAuth2\Server\RequestTypes\AuthorizationRequest;
 | 
			
		||||
use League\OAuth2\Server\ResponseTypes\HtmlResponse;
 | 
			
		||||
use League\OAuth2\Server\ResponseTypes\RedirectResponse;
 | 
			
		||||
use LeagueTests\Stubs\AccessTokenEntity;
 | 
			
		||||
@@ -33,14 +34,35 @@ class ImplicitGrantTest extends \PHPUnit_Framework_TestCase
 | 
			
		||||
 | 
			
		||||
    public function testGetIdentifier()
 | 
			
		||||
    {
 | 
			
		||||
        $grant = new ImplicitGrant($this->getMock(UserRepositoryInterface::class));
 | 
			
		||||
 | 
			
		||||
        $grant = new ImplicitGrant(new \DateInterval('PT10M'));
 | 
			
		||||
        $this->assertEquals('implicit', $grant->getIdentifier());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testCanRespondToRequest()
 | 
			
		||||
    public function testCanRespondToAccessTokenRequest()
 | 
			
		||||
    {
 | 
			
		||||
        $grant = new ImplicitGrant($this->getMock(UserRepositoryInterface::class));
 | 
			
		||||
        $grant = new ImplicitGrant(new \DateInterval('PT10M'));
 | 
			
		||||
 | 
			
		||||
        $this->assertFalse(
 | 
			
		||||
            $grant->canRespondToAccessTokenRequest(new ServerRequest())
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @expectedException \LogicException
 | 
			
		||||
     */
 | 
			
		||||
    public function testRespondToAccessTokenRequest()
 | 
			
		||||
    {
 | 
			
		||||
        $grant = new ImplicitGrant(new \DateInterval('PT10M'));
 | 
			
		||||
        $grant->respondToAccessTokenRequest(
 | 
			
		||||
            new ServerRequest(),
 | 
			
		||||
            new StubResponseType(),
 | 
			
		||||
            new \DateInterval('PT10M')
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testCanRespondToAuthorizationRequest()
 | 
			
		||||
    {
 | 
			
		||||
        $grant = new ImplicitGrant(new \DateInterval('PT10M'));
 | 
			
		||||
 | 
			
		||||
        $request = new ServerRequest(
 | 
			
		||||
            [],
 | 
			
		||||
@@ -48,390 +70,234 @@ class ImplicitGrantTest extends \PHPUnit_Framework_TestCase
 | 
			
		||||
            null,
 | 
			
		||||
            null,
 | 
			
		||||
            'php://input',
 | 
			
		||||
            [],
 | 
			
		||||
            [],
 | 
			
		||||
            [
 | 
			
		||||
            $headers = [],
 | 
			
		||||
            $cookies = [],
 | 
			
		||||
            $queryParams = [
 | 
			
		||||
                'response_type' => 'token',
 | 
			
		||||
                'client_id'     => 'foo',
 | 
			
		||||
            ]
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        $this->assertTrue($grant->canRespondToRequest($request));
 | 
			
		||||
        $this->assertTrue($grant->canRespondToAuthorizationRequest($request));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testRespondToAuthorizationRequest()
 | 
			
		||||
    public function testValidateAuthorizationRequest()
 | 
			
		||||
    {
 | 
			
		||||
        $client = new ClientEntity();
 | 
			
		||||
        $client->setRedirectUri('http://foo/bar');
 | 
			
		||||
        $clientRepositoryMock = $this->getMockBuilder(ClientRepositoryInterface::class)->getMock();
 | 
			
		||||
        $clientRepositoryMock->method('getClientEntity')->willReturn($client);
 | 
			
		||||
 | 
			
		||||
        $userRepositoryMock = $this->getMockBuilder(UserRepositoryInterface::class)->getMock();
 | 
			
		||||
        $userEntity = new UserEntity();
 | 
			
		||||
        $userRepositoryMock->method('getUserEntityByUserCredentials')->willReturn($userEntity);
 | 
			
		||||
 | 
			
		||||
        $accessTokenRepositoryMock = $this->getMockBuilder(AccessTokenRepositoryInterface::class)->getMock();
 | 
			
		||||
        $accessTokenRepositoryMock->method('getNewToken')->willReturn(new AccessTokenEntity());
 | 
			
		||||
        $accessTokenRepositoryMock->method('persistNewAccessToken')->willReturnSelf();
 | 
			
		||||
 | 
			
		||||
        $scopeRepositoryMock = $this->getMockBuilder(ScopeRepositoryInterface::class)->getMock();
 | 
			
		||||
        $scopeRepositoryMock->method('finalizeScopes')->willReturnArgument(0);
 | 
			
		||||
 | 
			
		||||
        $grant = new ImplicitGrant($userRepositoryMock);
 | 
			
		||||
        $grant = new ImplicitGrant(new \DateInterval('PT10M'));
 | 
			
		||||
        $grant->setClientRepository($clientRepositoryMock);
 | 
			
		||||
        $grant->setAccessTokenRepository($accessTokenRepositoryMock);
 | 
			
		||||
        $grant->setScopeRepository($scopeRepositoryMock);
 | 
			
		||||
        $grant->setPublicKey(new CryptKey('file://' . __DIR__ . '/../Stubs/public.key'));
 | 
			
		||||
        $grant->setPrivateKey(new CryptKey('file://' . __DIR__ . '/../Stubs/private.key'));
 | 
			
		||||
 | 
			
		||||
        $request = new ServerRequest(
 | 
			
		||||
            [
 | 
			
		||||
                'HTTP_HOST'   => 'auth-server.tld',
 | 
			
		||||
                'REQUEST_URI' => '/authorize',
 | 
			
		||||
            ],
 | 
			
		||||
            [],
 | 
			
		||||
            [],
 | 
			
		||||
            null,
 | 
			
		||||
            'POST',
 | 
			
		||||
            null,
 | 
			
		||||
            'php://input',
 | 
			
		||||
            [],
 | 
			
		||||
            [],
 | 
			
		||||
            [
 | 
			
		||||
                'response_type' => 'token',
 | 
			
		||||
            $headers = [],
 | 
			
		||||
            $cookies = [],
 | 
			
		||||
            $queryParams = [
 | 
			
		||||
                'response_type' => 'code',
 | 
			
		||||
                'client_id'     => 'foo',
 | 
			
		||||
                'state'         => 'foobar',
 | 
			
		||||
            ],
 | 
			
		||||
            [
 | 
			
		||||
                'username' => 'alex',
 | 
			
		||||
                'password' => 'whisky',
 | 
			
		||||
                'action'   => 'approve',
 | 
			
		||||
                'redirect_uri'  => 'http://foo/bar',
 | 
			
		||||
            ]
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        $response = $grant->respondToRequest($request, new StubResponseType(), new \DateInterval('PT10M'));
 | 
			
		||||
        $this->assertTrue($grant->validateAuthorizationRequest($request) instanceof AuthorizationRequest);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
        $this->assertTrue($response instanceof RedirectResponse);
 | 
			
		||||
    public function testValidateAuthorizationRequestRedirectUriArray()
 | 
			
		||||
    {
 | 
			
		||||
        $client = new ClientEntity();
 | 
			
		||||
        $client->setRedirectUri(['http://foo/bar']);
 | 
			
		||||
        $clientRepositoryMock = $this->getMockBuilder(ClientRepositoryInterface::class)->getMock();
 | 
			
		||||
        $clientRepositoryMock->method('getClientEntity')->willReturn($client);
 | 
			
		||||
 | 
			
		||||
        $grant = new ImplicitGrant(new \DateInterval('PT10M'));
 | 
			
		||||
        $grant->setClientRepository($clientRepositoryMock);
 | 
			
		||||
 | 
			
		||||
        $request = new ServerRequest(
 | 
			
		||||
            [],
 | 
			
		||||
            [],
 | 
			
		||||
            null,
 | 
			
		||||
            null,
 | 
			
		||||
            'php://input',
 | 
			
		||||
            $headers = [],
 | 
			
		||||
            $cookies = [],
 | 
			
		||||
            $queryParams = [
 | 
			
		||||
                'response_type' => 'code',
 | 
			
		||||
                'client_id'     => 'foo',
 | 
			
		||||
                'redirect_uri'  => 'http://foo/bar',
 | 
			
		||||
            ]
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        $this->assertTrue($grant->validateAuthorizationRequest($request) instanceof AuthorizationRequest);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @expectedException \League\OAuth2\Server\Exception\OAuthServerException
 | 
			
		||||
     * @expectedExceptionCode 3
 | 
			
		||||
     */
 | 
			
		||||
    public function testRespondToAuthorizationRequestMissingClientId()
 | 
			
		||||
    public function testValidateAuthorizationRequestMissingClientId()
 | 
			
		||||
    {
 | 
			
		||||
        $grant = new ImplicitGrant($this->getMock(UserRepositoryInterface::class));
 | 
			
		||||
        $grant->setPublicKey(new CryptKey('file://' . __DIR__ . '/../Stubs/public.key'));
 | 
			
		||||
        $grant->setPrivateKey(new CryptKey('file://' . __DIR__ . '/../Stubs/private.key'));
 | 
			
		||||
 | 
			
		||||
        $request = new ServerRequest(
 | 
			
		||||
            [
 | 
			
		||||
                'HTTP_HOST'   => 'auth-server.tld',
 | 
			
		||||
                'REQUEST_URI' => '/authorize',
 | 
			
		||||
            ],
 | 
			
		||||
            [],
 | 
			
		||||
            null,
 | 
			
		||||
            'POST',
 | 
			
		||||
            'php://input',
 | 
			
		||||
            [],
 | 
			
		||||
            [
 | 
			
		||||
                'oauth_authorize_request' => $this->cryptStub->doEncrypt(json_encode(['user_id' => 123])),
 | 
			
		||||
            ],
 | 
			
		||||
            [
 | 
			
		||||
                'response_type' => 'token',
 | 
			
		||||
            ],
 | 
			
		||||
            [
 | 
			
		||||
                'username' => 'alex',
 | 
			
		||||
                'password' => 'whisky',
 | 
			
		||||
                'action'   => 'approve',
 | 
			
		||||
            ]
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        $grant->respondToRequest($request, new StubResponseType(), new \DateInterval('PT10M'));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testRespondToAuthorizationRequestBadClient()
 | 
			
		||||
    {
 | 
			
		||||
        $client = null;
 | 
			
		||||
        $clientRepositoryMock = $this->getMockBuilder(ClientRepositoryInterface::class)->getMock();
 | 
			
		||||
        $clientRepositoryMock->method('getClientEntity')->willReturn($client);
 | 
			
		||||
 | 
			
		||||
        $grant = new ImplicitGrant($this->getMock(UserRepositoryInterface::class));
 | 
			
		||||
        $grant = new ImplicitGrant(new \DateInterval('PT10M'));
 | 
			
		||||
        $grant->setClientRepository($clientRepositoryMock);
 | 
			
		||||
        $grant->setPublicKey(new CryptKey('file://' . __DIR__ . '/../Stubs/public.key'));
 | 
			
		||||
        $grant->setPrivateKey(new CryptKey('file://' . __DIR__ . '/../Stubs/private.key'));
 | 
			
		||||
 | 
			
		||||
        $request = new ServerRequest(
 | 
			
		||||
            [
 | 
			
		||||
                'HTTP_HOST'   => 'auth-server.tld',
 | 
			
		||||
                'REQUEST_URI' => '/authorize',
 | 
			
		||||
            ],
 | 
			
		||||
            [],
 | 
			
		||||
            [],
 | 
			
		||||
            null,
 | 
			
		||||
            'POST',
 | 
			
		||||
            null,
 | 
			
		||||
            'php://input',
 | 
			
		||||
            [],
 | 
			
		||||
            [
 | 
			
		||||
                'oauth_authorize_request' => $this->cryptStub->doEncrypt(json_encode(['user_id' => 123])),
 | 
			
		||||
            ],
 | 
			
		||||
            [
 | 
			
		||||
                'response_type' => 'token',
 | 
			
		||||
                'client_id'     => 'foo',
 | 
			
		||||
            ],
 | 
			
		||||
            [
 | 
			
		||||
                'username' => 'alex',
 | 
			
		||||
                'password' => 'whisky',
 | 
			
		||||
                'action'   => 'approve',
 | 
			
		||||
            $headers = [],
 | 
			
		||||
            $cookies = [],
 | 
			
		||||
            $queryParams = [
 | 
			
		||||
                'response_type' => 'code',
 | 
			
		||||
            ]
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        try {
 | 
			
		||||
            /* @var StubResponseType $response */
 | 
			
		||||
            $grant->respondToRequest($request, new StubResponseType(), new \DateInterval('PT10M'));
 | 
			
		||||
        } catch (OAuthServerException $e) {
 | 
			
		||||
            $this->assertEquals($e->getMessage(), 'Client authentication failed');
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testRespondToAuthorizationRequestBadRedirectUri()
 | 
			
		||||
    {
 | 
			
		||||
        $client = new ClientEntity();
 | 
			
		||||
        $clientRepositoryMock = $this->getMockBuilder(ClientRepositoryInterface::class)->getMock();
 | 
			
		||||
        $clientRepositoryMock->method('getClientEntity')->willReturn($client);
 | 
			
		||||
 | 
			
		||||
        $userRepositoryMock = $this->getMockBuilder(UserRepositoryInterface::class)->getMock();
 | 
			
		||||
        $userEntity = new UserEntity();
 | 
			
		||||
        $userRepositoryMock->method('getUserEntityByUserCredentials')->willReturn($userEntity);
 | 
			
		||||
 | 
			
		||||
        $grant = new ImplicitGrant($this->getMock(UserRepositoryInterface::class));
 | 
			
		||||
        $grant->setClientRepository($clientRepositoryMock);
 | 
			
		||||
        $grant->setPublicKey(new CryptKey('file://' . __DIR__ . '/../Stubs/public.key'));
 | 
			
		||||
        $grant->setPrivateKey(new CryptKey('file://' . __DIR__ . '/../Stubs/private.key'));
 | 
			
		||||
 | 
			
		||||
        $request = new ServerRequest(
 | 
			
		||||
            [
 | 
			
		||||
                'HTTP_HOST'   => 'auth-server.tld',
 | 
			
		||||
                'REQUEST_URI' => '/authorize',
 | 
			
		||||
            ],
 | 
			
		||||
            [],
 | 
			
		||||
            null,
 | 
			
		||||
            'POST',
 | 
			
		||||
            'php://input',
 | 
			
		||||
            [],
 | 
			
		||||
            [
 | 
			
		||||
                'oauth_authorize_request' => $this->cryptStub->doEncrypt(json_encode(['user_id' => 123])),
 | 
			
		||||
            ],
 | 
			
		||||
            [
 | 
			
		||||
                'response_type' => 'token',
 | 
			
		||||
                'client_id'     => 'foo',
 | 
			
		||||
                'redirect_uri'  => 'sdfsdf',
 | 
			
		||||
            ],
 | 
			
		||||
            [
 | 
			
		||||
                'username' => 'alex',
 | 
			
		||||
                'password' => 'whisky',
 | 
			
		||||
                'action'   => 'approve',
 | 
			
		||||
            ]
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        try {
 | 
			
		||||
            /* @var StubResponseType $response */
 | 
			
		||||
            $grant->respondToRequest($request, new StubResponseType(), new \DateInterval('PT10M'));
 | 
			
		||||
        } catch (OAuthServerException $e) {
 | 
			
		||||
            $this->assertEquals($e->getMessage(), 'Client authentication failed');
 | 
			
		||||
        }
 | 
			
		||||
        $grant->validateAuthorizationRequest($request);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @expectedException \League\OAuth2\Server\Exception\OAuthServerException
 | 
			
		||||
     * @expectedExceptionCode 7
 | 
			
		||||
     * @expectedExceptionCode 4
 | 
			
		||||
     */
 | 
			
		||||
    public function testRespondToAuthorizationRequestBadCookie()
 | 
			
		||||
    public function testValidateAuthorizationRequestInvalidClientId()
 | 
			
		||||
    {
 | 
			
		||||
        $client = new ClientEntity();
 | 
			
		||||
        $client->setRedirectUri('http://foo/bar');
 | 
			
		||||
        $clientRepositoryMock = $this->getMockBuilder(ClientRepositoryInterface::class)->getMock();
 | 
			
		||||
        $clientRepositoryMock->method('getClientEntity')->willReturn($client);
 | 
			
		||||
        $clientRepositoryMock->method('getClientEntity')->willReturn(null);
 | 
			
		||||
 | 
			
		||||
        $userRepositoryMock = $this->getMockBuilder(UserRepositoryInterface::class)->getMock();
 | 
			
		||||
        $userEntity = new UserEntity();
 | 
			
		||||
        $userRepositoryMock->method('getUserEntityByUserCredentials')->willReturn($userEntity);
 | 
			
		||||
 | 
			
		||||
        $grant = new ImplicitGrant($this->getMock(UserRepositoryInterface::class));
 | 
			
		||||
        $grant = new ImplicitGrant(new \DateInterval('PT10M'));
 | 
			
		||||
        $grant->setClientRepository($clientRepositoryMock);
 | 
			
		||||
        $grant->setPublicKey(new CryptKey('file://' . __DIR__ . '/../Stubs/public.key'));
 | 
			
		||||
        $grant->setPrivateKey(new CryptKey('file://' . __DIR__ . '/../Stubs/private.key'));
 | 
			
		||||
 | 
			
		||||
        $request = new ServerRequest(
 | 
			
		||||
            [
 | 
			
		||||
                'HTTP_HOST'   => 'auth-server.tld',
 | 
			
		||||
                'REQUEST_URI' => '/authorize',
 | 
			
		||||
            ],
 | 
			
		||||
            [],
 | 
			
		||||
            [],
 | 
			
		||||
            null,
 | 
			
		||||
            'POST',
 | 
			
		||||
            'php://input',
 | 
			
		||||
            [],
 | 
			
		||||
            [
 | 
			
		||||
                'oauth_authorize_request' => 'blah',
 | 
			
		||||
            ],
 | 
			
		||||
            [
 | 
			
		||||
                'response_type' => 'token',
 | 
			
		||||
                'client_id'     => 'foo',
 | 
			
		||||
            ],
 | 
			
		||||
            [
 | 
			
		||||
                'username' => 'alex',
 | 
			
		||||
                'password' => 'whisky',
 | 
			
		||||
                'action'   => 'approve',
 | 
			
		||||
            ]
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        $grant->respondToRequest($request, new StubResponseType(), new \DateInterval('PT10M'));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testRespondToAuthorizationRequestTryLogin()
 | 
			
		||||
    {
 | 
			
		||||
        $client = new ClientEntity();
 | 
			
		||||
        $client->setRedirectUri('http://foo/bar');
 | 
			
		||||
        $clientRepositoryMock = $this->getMockBuilder(ClientRepositoryInterface::class)->getMock();
 | 
			
		||||
        $clientRepositoryMock->method('getClientEntity')->willReturn($client);
 | 
			
		||||
 | 
			
		||||
        $userRepositoryMock = $this->getMockBuilder(UserRepositoryInterface::class)->getMock();
 | 
			
		||||
        $userEntity = new UserEntity();
 | 
			
		||||
        $userRepositoryMock->method('getUserEntityByUserCredentials')->willReturn($userEntity);
 | 
			
		||||
 | 
			
		||||
        $accessTokenRepositoryMock = $this->getMockBuilder(AccessTokenRepositoryInterface::class)->getMock();
 | 
			
		||||
        $accessTokenRepositoryMock->method('persistNewAccessToken')->willReturnSelf();
 | 
			
		||||
 | 
			
		||||
        $grant = new ImplicitGrant($this->getMock(UserRepositoryInterface::class));
 | 
			
		||||
        $grant->setClientRepository($clientRepositoryMock);
 | 
			
		||||
        $grant->setAccessTokenRepository($accessTokenRepositoryMock);
 | 
			
		||||
        $grant->setPublicKey(new CryptKey('file://' . __DIR__ . '/../Stubs/public.key'));
 | 
			
		||||
        $grant->setPrivateKey(new CryptKey('file://' . __DIR__ . '/../Stubs/private.key'));
 | 
			
		||||
 | 
			
		||||
        $request = new ServerRequest(
 | 
			
		||||
            [
 | 
			
		||||
                'HTTP_HOST'   => 'auth-server.tld',
 | 
			
		||||
                'REQUEST_URI' => '/authorize',
 | 
			
		||||
            ],
 | 
			
		||||
            [],
 | 
			
		||||
            null,
 | 
			
		||||
            'POST',
 | 
			
		||||
            'php://input',
 | 
			
		||||
            [],
 | 
			
		||||
            [
 | 
			
		||||
                'oauth_authorize_request' => $this->cryptStub->doEncrypt(json_encode(['user_id' => null])),
 | 
			
		||||
            ],
 | 
			
		||||
            [
 | 
			
		||||
                'response_type' => 'token',
 | 
			
		||||
                'client_id'     => 'foo',
 | 
			
		||||
            ],
 | 
			
		||||
            [
 | 
			
		||||
                'username' => 'alex',
 | 
			
		||||
                'password' => 'whisky',
 | 
			
		||||
                'action'   => 'approve',
 | 
			
		||||
            ]
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        $response = $grant->respondToRequest($request, new StubResponseType(), new \DateInterval('PT10M'));
 | 
			
		||||
        $this->assertTrue($response instanceof HtmlResponse);
 | 
			
		||||
 | 
			
		||||
        $response = $response->generateHttpResponse(new Response);
 | 
			
		||||
        $this->assertTrue(strstr((string) $response->getBody(), 'Incorrect username or password') !== false);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testRespondToAuthorizationRequestShowAuthorizeForm()
 | 
			
		||||
    {
 | 
			
		||||
        $client = new ClientEntity();
 | 
			
		||||
        $client->setRedirectUri('http://foo/bar');
 | 
			
		||||
        $clientRepositoryMock = $this->getMockBuilder(ClientRepositoryInterface::class)->getMock();
 | 
			
		||||
        $clientRepositoryMock->method('getClientEntity')->willReturn($client);
 | 
			
		||||
 | 
			
		||||
        $userRepositoryMock = $this->getMockBuilder(UserRepositoryInterface::class)->getMock();
 | 
			
		||||
        $userEntity = new UserEntity();
 | 
			
		||||
        $userRepositoryMock->method('getUserEntityByUserCredentials')->willReturn($userEntity);
 | 
			
		||||
 | 
			
		||||
        $accessTokenRepositoryMock = $this->getMockBuilder(AccessTokenRepositoryInterface::class)->getMock();
 | 
			
		||||
        $accessTokenRepositoryMock->method('persistNewAccessToken')->willReturnSelf();
 | 
			
		||||
 | 
			
		||||
        $grant = new ImplicitGrant($this->getMock(UserRepositoryInterface::class));
 | 
			
		||||
        $grant->setClientRepository($clientRepositoryMock);
 | 
			
		||||
        $grant->setAccessTokenRepository($accessTokenRepositoryMock);
 | 
			
		||||
        $grant->setPublicKey(new CryptKey('file://' . __DIR__ . '/../Stubs/public.key'));
 | 
			
		||||
        $grant->setPrivateKey(new CryptKey('file://' . __DIR__ . '/../Stubs/private.key'));
 | 
			
		||||
 | 
			
		||||
        $request = new ServerRequest(
 | 
			
		||||
            [
 | 
			
		||||
                'HTTP_HOST'   => 'auth-server.tld',
 | 
			
		||||
                'REQUEST_URI' => '/authorize',
 | 
			
		||||
            ],
 | 
			
		||||
            [],
 | 
			
		||||
            null,
 | 
			
		||||
            'POST',
 | 
			
		||||
            'php://input',
 | 
			
		||||
            [],
 | 
			
		||||
            [
 | 
			
		||||
                'oauth_authorize_request' => $this->cryptStub->doEncrypt(json_encode(['user_id' => 123])),
 | 
			
		||||
            ],
 | 
			
		||||
            [
 | 
			
		||||
            $headers = [],
 | 
			
		||||
            $cookies = [],
 | 
			
		||||
            $queryParams = [
 | 
			
		||||
                'response_type' => 'code',
 | 
			
		||||
                'client_id'     => 'foo',
 | 
			
		||||
            ],
 | 
			
		||||
            [
 | 
			
		||||
                'username' => 'alex',
 | 
			
		||||
                'password' => 'whisky',
 | 
			
		||||
            ]
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        $response = $grant->respondToRequest($request, new StubResponseType(), new \DateInterval('PT10M'));
 | 
			
		||||
        $grant->validateAuthorizationRequest($request);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
        $this->assertTrue($response instanceof HtmlResponse);
 | 
			
		||||
    /**
 | 
			
		||||
     * @expectedException \League\OAuth2\Server\Exception\OAuthServerException
 | 
			
		||||
     * @expectedExceptionCode 4
 | 
			
		||||
     */
 | 
			
		||||
    public function testValidateAuthorizationRequestBadRedirectUriString()
 | 
			
		||||
    {
 | 
			
		||||
        $client = new ClientEntity();
 | 
			
		||||
        $client->setRedirectUri('http://foo/bar');
 | 
			
		||||
        $clientRepositoryMock = $this->getMockBuilder(ClientRepositoryInterface::class)->getMock();
 | 
			
		||||
        $clientRepositoryMock->method('getClientEntity')->willReturn($client);
 | 
			
		||||
 | 
			
		||||
        $response = $response->generateHttpResponse(new Response);
 | 
			
		||||
        $this->assertTrue(strstr($response->getHeader('set-cookie')[0], 'oauth_authorize_request') !== false);
 | 
			
		||||
        $grant = new ImplicitGrant(new \DateInterval('PT10M'));
 | 
			
		||||
        $grant->setClientRepository($clientRepositoryMock);
 | 
			
		||||
 | 
			
		||||
        $request = new ServerRequest(
 | 
			
		||||
            [],
 | 
			
		||||
            [],
 | 
			
		||||
            null,
 | 
			
		||||
            null,
 | 
			
		||||
            'php://input',
 | 
			
		||||
            $headers = [],
 | 
			
		||||
            $cookies = [],
 | 
			
		||||
            $queryParams = [
 | 
			
		||||
                'response_type' => 'code',
 | 
			
		||||
                'client_id'     => 'foo',
 | 
			
		||||
                'redirect_uri'  => 'http://bar',
 | 
			
		||||
            ]
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        $grant->validateAuthorizationRequest($request);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @expectedException \League\OAuth2\Server\Exception\OAuthServerException
 | 
			
		||||
     * @expectedExceptionCode 4
 | 
			
		||||
     */
 | 
			
		||||
    public function testValidateAuthorizationRequestBadRedirectUriArray()
 | 
			
		||||
    {
 | 
			
		||||
        $client = new ClientEntity();
 | 
			
		||||
        $client->setRedirectUri(['http://foo/bar']);
 | 
			
		||||
        $clientRepositoryMock = $this->getMockBuilder(ClientRepositoryInterface::class)->getMock();
 | 
			
		||||
        $clientRepositoryMock->method('getClientEntity')->willReturn($client);
 | 
			
		||||
 | 
			
		||||
        $grant = new ImplicitGrant(new \DateInterval('PT10M'));
 | 
			
		||||
        $grant->setClientRepository($clientRepositoryMock);
 | 
			
		||||
 | 
			
		||||
        $request = new ServerRequest(
 | 
			
		||||
            [],
 | 
			
		||||
            [],
 | 
			
		||||
            null,
 | 
			
		||||
            null,
 | 
			
		||||
            'php://input',
 | 
			
		||||
            $headers = [],
 | 
			
		||||
            $cookies = [],
 | 
			
		||||
            $queryParams = [
 | 
			
		||||
                'response_type' => 'code',
 | 
			
		||||
                'client_id'     => 'foo',
 | 
			
		||||
                'redirect_uri'  => 'http://bar',
 | 
			
		||||
            ]
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        $grant->validateAuthorizationRequest($request);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testCompleteAuthorizationRequest()
 | 
			
		||||
    {
 | 
			
		||||
        $authRequest = new AuthorizationRequest();
 | 
			
		||||
        $authRequest->setAuthorizationApproved(true);
 | 
			
		||||
        $authRequest->setClient(new ClientEntity());
 | 
			
		||||
        $authRequest->setGrantTypeId('authorization_code');
 | 
			
		||||
        $authRequest->setUser(new UserEntity());
 | 
			
		||||
 | 
			
		||||
        $accessTokenRepositoryMock = $this->getMockBuilder(AccessTokenRepositoryInterface::class)->getMock();
 | 
			
		||||
        $accessTokenRepositoryMock->method('getNewToken')->willReturn(new AccessTokenEntity());
 | 
			
		||||
        $accessTokenRepositoryMock->method('persistNewAccessToken')->willReturnSelf();
 | 
			
		||||
 | 
			
		||||
        $grant = new ImplicitGrant(new \DateInterval('PT10M'));
 | 
			
		||||
        $grant->setPrivateKey(new CryptKey('file://' . __DIR__ . '/../Stubs/private.key'));
 | 
			
		||||
        $grant->setPublicKey(new CryptKey('file://' . __DIR__ . '/../Stubs/public.key'));
 | 
			
		||||
        $grant->setAccessTokenRepository($accessTokenRepositoryMock);
 | 
			
		||||
 | 
			
		||||
        $this->assertTrue($grant->completeAuthorizationRequest($authRequest) instanceof RedirectResponse);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @expectedException \League\OAuth2\Server\Exception\OAuthServerException
 | 
			
		||||
     * @expectedExceptionCode 9
 | 
			
		||||
     */
 | 
			
		||||
    public function testRespondToAuthorizationRequestUserDenied()
 | 
			
		||||
    public function testCompleteAuthorizationRequestDenied()
 | 
			
		||||
    {
 | 
			
		||||
        $client = new ClientEntity();
 | 
			
		||||
        $client->setRedirectUri('http://foo/bar');
 | 
			
		||||
        $clientRepositoryMock = $this->getMockBuilder(ClientRepositoryInterface::class)->getMock();
 | 
			
		||||
        $clientRepositoryMock->method('getClientEntity')->willReturn($client);
 | 
			
		||||
        $authRequest = new AuthorizationRequest();
 | 
			
		||||
        $authRequest->setAuthorizationApproved(false);
 | 
			
		||||
        $authRequest->setClient(new ClientEntity());
 | 
			
		||||
        $authRequest->setGrantTypeId('authorization_code');
 | 
			
		||||
        $authRequest->setUser(new UserEntity());
 | 
			
		||||
 | 
			
		||||
        $userRepositoryMock = $this->getMockBuilder(UserRepositoryInterface::class)->getMock();
 | 
			
		||||
        $userEntity = new UserEntity();
 | 
			
		||||
        $userRepositoryMock->method('getUserEntityByUserCredentials')->willReturn($userEntity);
 | 
			
		||||
        $accessTokenRepositoryMock = $this->getMockBuilder(AccessTokenRepositoryInterface::class)->getMock();
 | 
			
		||||
        $accessTokenRepositoryMock->method('getNewToken')->willReturn(new AccessTokenEntity());
 | 
			
		||||
        $accessTokenRepositoryMock->method('persistNewAccessToken')->willReturnSelf();
 | 
			
		||||
 | 
			
		||||
        $grant = new ImplicitGrant($this->getMock(UserRepositoryInterface::class));
 | 
			
		||||
        $grant->setClientRepository($clientRepositoryMock);
 | 
			
		||||
        $grant->setPublicKey(new CryptKey('file://' . __DIR__ . '/../Stubs/public.key'));
 | 
			
		||||
        $grant = new ImplicitGrant(new \DateInterval('PT10M'));
 | 
			
		||||
        $grant->setPrivateKey(new CryptKey('file://' . __DIR__ . '/../Stubs/private.key'));
 | 
			
		||||
        $grant->setPublicKey(new CryptKey('file://' . __DIR__ . '/../Stubs/public.key'));
 | 
			
		||||
        $grant->setAccessTokenRepository($accessTokenRepositoryMock);
 | 
			
		||||
 | 
			
		||||
        $request = new ServerRequest(
 | 
			
		||||
            [
 | 
			
		||||
                'HTTP_HOST'   => 'auth-server.tld',
 | 
			
		||||
                'REQUEST_URI' => '/authorize',
 | 
			
		||||
            ],
 | 
			
		||||
            [],
 | 
			
		||||
            null,
 | 
			
		||||
            'POST',
 | 
			
		||||
            'php://input',
 | 
			
		||||
            [],
 | 
			
		||||
            [
 | 
			
		||||
                'oauth_authorize_request' => $this->cryptStub->doEncrypt(json_encode(['user_id' => 123])),
 | 
			
		||||
            ],
 | 
			
		||||
            [
 | 
			
		||||
                'response_type' => 'code',
 | 
			
		||||
                'client_id'     => 'foo',
 | 
			
		||||
                'state'         => 'foobar',
 | 
			
		||||
            ],
 | 
			
		||||
            [
 | 
			
		||||
                'username' => 'alex',
 | 
			
		||||
                'password' => 'whisky',
 | 
			
		||||
                'action'   => 'denied',
 | 
			
		||||
            ]
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        $grant->respondToRequest($request, new StubResponseType(), new \DateInterval('PT10M'));
 | 
			
		||||
        $grant->completeAuthorizationRequest($authRequest);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -133,7 +133,6 @@ class ServerTest extends \PHPUnit_Framework_TestCase
 | 
			
		||||
        $grant = new AuthCodeGrant(
 | 
			
		||||
            $authCodeRepository,
 | 
			
		||||
            $this->getMock(RefreshTokenRepositoryInterface::class),
 | 
			
		||||
            $this->getMock(UserRepositoryInterface::class),
 | 
			
		||||
            new \DateInterval('PT10M')
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
@@ -162,7 +161,6 @@ class ServerTest extends \PHPUnit_Framework_TestCase
 | 
			
		||||
        $grant = new AuthCodeGrant(
 | 
			
		||||
            $this->getMock(AuthCodeRepositoryInterface::class),
 | 
			
		||||
            $this->getMock(RefreshTokenRepositoryInterface::class),
 | 
			
		||||
            $this->getMock(UserRepositoryInterface::class),
 | 
			
		||||
            new \DateInterval('PT10M')
 | 
			
		||||
        );
 | 
			
		||||
        $grant->setClientRepository($clientRepositoryMock);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user