/**
  * @test
  */
 public function it_can_authenticate_and_return_oauth_client_credentials_result()
 {
     $authorization = 'Basic ' . base64_encode(self::$apiKey->id . ':' . self::$apiKey->secret);
     $_SERVER['HTTP_AUTHORIZATION'] = $authorization;
     $_SERVER['REQUEST_URI'] = 'http://test.com/?grant_type=client_credentials';
     $_SERVER['QUERY_STRING'] = 'grant_type=client_credentials';
     self::$apiKey->setStatus('ENABLED');
     self::$apiKey->save();
     self::$account->setStatus('ENABLED');
     self::$account->save();
     $auth = new OAuthClientCredentialsRequestAuthenticator(self::$application);
     $result = $auth->authenticate(Request::createFromGlobals());
     $token = json_decode($result->getAccessToken());
     $this->assertInstanceOf('Stormpath\\Authc\\Api\\OAuthClientCredentialsAuthenticationResult', $result);
     $this->assertInstanceOf('Stormpath\\Resource\\Application', $result->getApplication());
     $this->assertInstanceOf('Stormpath\\Resource\\ApiKey', $result->getApiKey());
     $this->assertObjectHasAttribute('access_token', $token);
     $this->assertObjectHasAttribute('token_type', $token);
     $this->assertObjectHasAttribute('expires_in', $token);
 }
 /**
  * @return array
  */
 private function getAccessToken()
 {
     $authorization = 'Basic ' . base64_encode(self::$apiKey->id . ':' . self::$apiKey->secret);
     $_SERVER['HTTP_AUTHORIZATION'] = $authorization;
     $_SERVER['REQUEST_URI'] = 'http://test.com/?grant_type=client_credentials';
     $_SERVER['QUERY_STRING'] = 'grant_type=client_credentials';
     self::$apiKey->setStatus('ENABLED');
     self::$apiKey->save();
     self::$account->setStatus('ENABLED');
     self::$account->save();
     $auth = new OAuthClientCredentialsRequestAuthenticator(self::$application);
     $result = $auth->authenticate(Request::createFromGlobals());
     $token = json_decode($result->getAccessToken());
     $accessToken = $token->access_token;
     Request::tearDown();
     return $accessToken;
 }