From 36ccf4c65b731801b8aa960f5a088044b12dd8fa Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Sat, 9 May 2020 12:17:38 +0200 Subject: [PATCH] [HttpClient] test that timeout is not fatal --- .../HttpClient/Tests/HttpClientTestCase.php | 18 ++++++++++++++++++ .../HttpClient/Tests/MockHttpClientTest.php | 1 + 2 files changed, 19 insertions(+) diff --git a/src/Symfony/Component/HttpClient/Tests/HttpClientTestCase.php b/src/Symfony/Component/HttpClient/Tests/HttpClientTestCase.php index 29171969b4..89745e4555 100644 --- a/src/Symfony/Component/HttpClient/Tests/HttpClientTestCase.php +++ b/src/Symfony/Component/HttpClient/Tests/HttpClientTestCase.php @@ -12,6 +12,7 @@ namespace Symfony\Component\HttpClient\Tests; use Symfony\Component\HttpClient\Exception\ClientException; +use Symfony\Component\HttpClient\Exception\TransportException; use Symfony\Contracts\HttpClient\Test\HttpClientTestCase as BaseHttpClientTestCase; abstract class HttpClientTestCase extends BaseHttpClientTestCase @@ -91,4 +92,21 @@ abstract class HttpClientTestCase extends BaseHttpClientTestCase $this->assertSame('', fread($stream, 8192)); $this->assertTrue(feof($stream)); } + + public function testTimeoutIsNotAFatalError() + { + $client = $this->getHttpClient(__FUNCTION__); + $response = $client->request('GET', 'http://localhost:8057/timeout-body', [ + 'timeout' => 0.1, + ]); + + try { + $response->getContent(); + $this->fail(TransportException::class.' expected'); + } catch (TransportException $e) { + } + + usleep(400000); + $this->assertSame('<1><2>', $response->getContent()); + } } diff --git a/src/Symfony/Component/HttpClient/Tests/MockHttpClientTest.php b/src/Symfony/Component/HttpClient/Tests/MockHttpClientTest.php index bce4bfafea..b8125e6716 100644 --- a/src/Symfony/Component/HttpClient/Tests/MockHttpClientTest.php +++ b/src/Symfony/Component/HttpClient/Tests/MockHttpClientTest.php @@ -132,6 +132,7 @@ class MockHttpClientTest extends HttpClientTestCase case 'testTimeoutOnStream': case 'testUncheckedTimeoutThrows': + case 'testTimeoutIsNotAFatalError': $body = ['<1>', '', '<2>']; $responses[] = new MockResponse($body, ['response_headers' => $headers]); break;