/**
  * Check access token
  *
  * @param  AccessTokenInterface $accessToken
  * @return void
  * @throws OAuthAccessTokenNotFoundException
  * @throws OAuthAccessTokenExpiredException
  */
 protected function checkAccessToken($accessToken)
 {
     if (empty($accessToken)) {
         throw new OAuthAccessTokenNotFoundException('The access token could not be found.', 401, null, $this->realmName);
     }
     if ($accessToken->isExpired()) {
         throw new OAuthAccessTokenExpiredException('The access token provided has expired.', 401, null, $this->realmName);
     }
     if ($accessToken->isRevoked()) {
         throw new OAuthAccessTokenExpiredException('The access token provided was revoked.', 401, null, $this->realmName);
     }
 }
 /** @dataProvider provideStorage */
 public function testSetAccessToken(AccessTokenInterface $storage)
 {
     if ($storage instanceof NullStorage) {
         $this->markTestSkipped('Skipped Storage: ' . $storage->getMessage());
         return;
     }
     // assert token we are about to add does not exist
     $token = $storage->getAccessToken('newtoken');
     $this->assertFalse($token);
     // add new token
     $expires = time() + 20;
     $success = $storage->setAccessToken('newtoken', 'client ID', 'SOMEUSERID', $expires);
     $this->assertTrue($success);
     $token = $storage->getAccessToken('newtoken');
     $this->assertNotNull($token);
     $this->assertArrayHasKey('access_token', $token);
     $this->assertArrayHasKey('client_id', $token);
     $this->assertArrayHasKey('user_id', $token);
     $this->assertArrayHasKey('expires', $token);
     $this->assertEquals($token['access_token'], 'newtoken');
     $this->assertEquals($token['client_id'], 'client ID');
     $this->assertEquals($token['user_id'], 'SOMEUSERID');
     $this->assertEquals($token['expires'], $expires);
     // change existing token
     $expires = time() + 42;
     $success = $storage->setAccessToken('newtoken', 'client ID2', 'SOMEOTHERID', $expires);
     $this->assertTrue($success);
     $token = $storage->getAccessToken('newtoken');
     $this->assertNotNull($token);
     $this->assertArrayHasKey('access_token', $token);
     $this->assertArrayHasKey('client_id', $token);
     $this->assertArrayHasKey('user_id', $token);
     $this->assertArrayHasKey('expires', $token);
     $this->assertEquals($token['access_token'], 'newtoken');
     $this->assertEquals($token['client_id'], 'client ID2');
     $this->assertEquals($token['user_id'], 'SOMEOTHERID');
     $this->assertEquals($token['expires'], $expires);
     // add token with scope having an empty string value
     $expires = time() + 42;
     $success = $storage->setAccessToken('newtoken', 'client ID', 'SOMEOTHERID', $expires, '');
     $this->assertTrue($success);
 }
 /** @dataProvider provideStorage */
 public function testExpireAccessToken(AccessTokenInterface $storage)
 {
     if ($storage instanceof NullStorage) {
         $this->markTestSkipped('Skipped Storage: ' . $storage->getMessage());
         return;
     }
     // create a valid code
     $expires = time() + 20;
     $success = $storage->setAuthorizationCode('code-to-expire', 'client ID', 'SOMEUSERID', 'http://example.com', time() + 20);
     $this->assertTrue($success);
     // verify the new code exists
     $code = $storage->getAuthorizationCode('code-to-expire');
     $this->assertNotNull($code);
     $this->assertArrayHasKey('authorization_code', $code);
     $this->assertEquals($code['authorization_code'], 'code-to-expire');
     // now expire the code and ensure it's no longer available
     $storage->expireAuthorizationCode('code-to-expire');
     $code = $storage->getAuthorizationCode('code-to-expire');
     $this->assertFalse($code);
 }