/**
  * @inheritdoc
  */
 public function refreshToken()
 {
     if (!$this->client->getToken()) {
         throw new \Exception('Token is not set');
     }
     $response = $this->httpClient->post(AuthorizationModel::ENDPOINT_BASE . AuthorizationModel::ENDPOINT_TOKEN, ['refresh_token' => $this->client->getToken()->getRefreshToken(), 'client_id' => $this->client->getClientId(), 'client_secret' => $this->client->getClientSecret(), 'grant_type' => AuthorizationModel::GRANT_REFRESH]);
     return $this->tokenMapper->buildToken($response->getBody());
 }
 public function testMapToCustomClass()
 {
     $tokenClass = 'Mechpave\\ImgurClient\\Tests\\Entity\\CustomToken';
     $objectMapper = $this->getMockBuilder('Mechpave\\ImgurClient\\Mapper\\ObjectMapper')->disableOriginalConstructor()->getMock();
     $objectMapper->expects($this->once())->method('getTokenClass')->willReturn($tokenClass);
     /** @noinspection PhpParamsInspection */
     $tokenMapper = new TokenMapper($objectMapper);
     $token = $tokenMapper->buildToken($this->tokenData);
     $time = time();
     $this->assertTrue($token instanceof $tokenClass);
     $this->assertEquals($token->getAccessToken(), $this->tokenData['access_token']);
     $this->assertEquals($token->getRefreshToken(), $this->tokenData['refresh_token']);
     $this->assertEquals($token->getExpiresAt(), $this->tokenData['expires_in'] + $time);
     $this->assertEquals($token->getAccountId(), $this->tokenData['account_id']);
 }