|
5 | 5 | use PHPUnit\Framework\TestCase; |
6 | 6 | use Sendy\Api\ApiException; |
7 | 7 | use Sendy\Api\Connection; |
| 8 | +use Sendy\Api\Exceptions\ClientException; |
| 9 | +use Sendy\Api\Exceptions\SendyException; |
8 | 10 | use Sendy\Api\Http\Request; |
9 | 11 | use Sendy\Api\Http\Response; |
10 | 12 | use Sendy\Api\Http\Transport\MockTransport; |
@@ -212,6 +214,60 @@ public function testTokensAreAcquiredWithRefreshToken(): void |
212 | 214 | ); |
213 | 215 | } |
214 | 216 |
|
| 217 | + public function testRevokedRefreshTokenIsHandled(): void |
| 218 | + { |
| 219 | + $connection = new Connection(); |
| 220 | + |
| 221 | + $transport = new MockTransport( |
| 222 | + new Response(400, [], json_encode([ |
| 223 | + 'error' => 'invalid_grant', |
| 224 | + 'hint' => 'Token has been revoked', |
| 225 | + ])), |
| 226 | + ); |
| 227 | + |
| 228 | + $connection->setTransport($transport); |
| 229 | + |
| 230 | + $connection->setOauthClient(true); |
| 231 | + $connection->setClientId('clientId'); |
| 232 | + $connection->setAccessToken('accessToken'); |
| 233 | + $connection->setClientSecret('clientSecret'); |
| 234 | + $connection->setRefreshToken('RefreshToken'); |
| 235 | + $connection->setTokenExpires(time() + 5); |
| 236 | + |
| 237 | + try { |
| 238 | + $connection->checkOrAcquireAccessToken(); |
| 239 | + } catch (SendyException $exception) { |
| 240 | + $this->fail($exception->getMessage()); |
| 241 | + } |
| 242 | + |
| 243 | + $this->assertTrue(true); |
| 244 | + } |
| 245 | + |
| 246 | + public function testUnexpectedExceptionWhenRefreshingTokensAreHandled(): void |
| 247 | + { |
| 248 | + $connection = new Connection(); |
| 249 | + |
| 250 | + $transport = new MockTransport( |
| 251 | + new Response(400, [], json_encode([ |
| 252 | + 'error' => 'unknown_error', |
| 253 | + 'hint' => 'Unknown error', |
| 254 | + ])), |
| 255 | + ); |
| 256 | + |
| 257 | + $connection->setTransport($transport); |
| 258 | + |
| 259 | + $connection->setOauthClient(true); |
| 260 | + $connection->setClientId('clientId'); |
| 261 | + $connection->setAccessToken('accessToken'); |
| 262 | + $connection->setClientSecret('clientSecret'); |
| 263 | + $connection->setRefreshToken('RefreshToken'); |
| 264 | + $connection->setTokenExpires(time() + 5); |
| 265 | + |
| 266 | + $this->expectException(ClientException::class); |
| 267 | + |
| 268 | + $connection->checkOrAcquireAccessToken(); |
| 269 | + } |
| 270 | + |
215 | 271 | public function testTokenUpdateCallbackIsCalled(): void |
216 | 272 | { |
217 | 273 | $connection = new Connection(); |
|
0 commit comments