/**
  * Prepare the actual HttpResponse for the token
  *
  * @param  AccessToken       $accessToken
  * @param  RefreshToken|null $refreshToken
  * @param  bool              $useRefreshTokenScopes
  * @return ResponseInterface
  */
 protected function prepareTokenResponse(AccessToken $accessToken, RefreshToken $refreshToken = null, $useRefreshTokenScopes = false)
 {
     $owner = $accessToken->getOwner();
     $scopes = $useRefreshTokenScopes ? $refreshToken->getScopes() : $accessToken->getScopes();
     $responseBody = ['access_token' => $accessToken->getToken(), 'token_type' => 'Bearer', 'expires_in' => $accessToken->getExpiresIn(), 'scope' => implode(' ', $scopes), 'owner_id' => $owner ? $owner->getTokenOwnerId() : null];
     if (null !== $refreshToken) {
         $responseBody['refresh_token'] = $refreshToken->getToken();
     }
     return new Response\JsonResponse(array_filter($responseBody));
 }
 public function testGettersAndSetters()
 {
     $owner = $this->getMock(TokenOwnerInterface::class);
     $client = new Client();
     $expiresAt = new DateTime();
     $refreshToken = new RefreshToken();
     $refreshToken->setToken('token');
     $refreshToken->setScopes(['scope1', 'scope2']);
     $refreshToken->setClient($client);
     $refreshToken->setExpiresAt($expiresAt);
     $refreshToken->setOwner($owner);
     $this->assertEquals('token', $refreshToken->getToken());
     $this->assertCount(2, $refreshToken->getScopes());
     $this->assertTrue($refreshToken->matchScopes('scope1'));
     $this->assertFalse($refreshToken->matchScopes('scope3'));
     $this->assertSame($client, $refreshToken->getClient());
     $this->assertEquals($expiresAt, $refreshToken->getExpiresAt());
     $this->assertSame($owner, $refreshToken->getOwner());
 }