getMock(RefreshTokenRepositoryInterface::class); $grant = new RefreshTokenGrant($refreshTokenRepositoryMock); $this->assertEquals('refresh_token', $grant->getIdentifier()); } public function testRespondToRequest() { $client = new ClientEntity(); $client->setIdentifier('foo'); $client->setSecret('bar'); $clientRepositoryMock = $this->getMockBuilder(ClientRepositoryInterface::class)->getMock(); $clientRepositoryMock->method('getClientEntity')->willReturn($client); $accessTokenRepositoryMock = $this->getMockBuilder(AccessTokenRepositoryInterface::class)->getMock(); $accessTokenRepositoryMock->method('persistNewAccessToken')->willReturnSelf(); $userRepositoryMock = $this->getMockBuilder(UserRepositoryInterface::class)->getMock(); $userEntity = new UserEntity(); $userRepositoryMock->method('getUserEntityByUserCredentials')->willReturn($userEntity); $refreshTokenRepositoryMock = $this->getMockBuilder(RefreshTokenRepositoryInterface::class)->getMock(); $grant = new RefreshTokenGrant($refreshTokenRepositoryMock); $grant->setClientRepository($clientRepositoryMock); $grant->setAccessTokenRepository($accessTokenRepositoryMock); $grant->setPathToPublicKey('file://'.__DIR__.'/../Utils/public.key'); $grant->setPathToPrivateKey('file://'.__DIR__.'/../Utils/private.key'); $oldRefreshToken = KeyCrypt::encrypt( json_encode( [ 'client_id' => 'foo', 'refresh_token_id' => 'zyxwvu', 'access_token_id' => 'abcdef', 'scopes' => ['foo'], 'user_id' => 123, 'expire_time' => time() + 3600, ] ), 'file://'.__DIR__.'/../Utils/private.key' ); $serverRequest = new ServerRequest(); $serverRequest = $serverRequest->withParsedBody( [ 'client_id' => 'foo', 'client_secret' => 'bar', 'refresh_token' => $oldRefreshToken, ] ); $responseType = new StubResponseType(); $grant->respondToRequest($serverRequest, $responseType, new \DateInterval('PT5M')); $this->assertTrue($responseType->getAccessToken() instanceof AccessTokenEntityInterface); $this->assertTrue($responseType->getRefreshToken() instanceof RefreshTokenEntityInterface); } }