public function testAccessTokenGetters()
 {
     $data = ['access_token' => 'testToken', 'token_type' => 'bearer', 'expires_in' => 300, 'scope' => 'profile administration', 'refresh_token' => 'testRefreshToken'];
     $token = new AccessToken($data['access_token'], $data['token_type'], $data);
     $this->assertEquals($data['access_token'], $token->getToken());
     $this->assertEquals($data['token_type'], $token->getType());
     $this->assertEquals($data['scope'], $token->getScope());
     $this->assertGreaterThan(time(), $token->getExpires()->getTimestamp());
     $this->assertFalse($token->isExpired());
     $this->assertEquals($data, $token->getData());
     $this->assertEquals('refresh_token', $token->getRefreshToken()->getType());
     $this->assertEquals($data['refresh_token'], $token->getRefreshToken()->getToken());
 }
 /**
  * Set the access token.
  *
  * @param AccessToken|string $accessToken
  * @param string             $type
  * @param int                $expires
  *
  * @return self
  */
 public function setAccessToken($accessToken, $type = null, $expires = null)
 {
     if (is_string($accessToken)) {
         $this->accessToken = new AccessToken($accessToken, $type, ['expires' => $expires]);
     } elseif ($accessToken instanceof AccessToken) {
         $this->accessToken = $accessToken;
     } else {
         throw new \InvalidArgumentException('Invalid access token');
     }
     if ($this->accessToken->getRefreshToken() instanceof AccessToken && $this->refreshTokenGrantType instanceof RefreshTokenGrantTypeInterface) {
         $this->refreshTokenGrantType->setRefreshToken($this->accessToken->getRefreshToken()->getToken());
     }
     return $this;
 }