From 8dada95cbf28bfa9404c6ea884eae8d9b0a319b2 Mon Sep 17 00:00:00 2001 From: Pierrick VIGNAND Date: Thu, 18 Feb 2021 14:41:11 +0100 Subject: [PATCH 1/2] fix: MockResponse total_time should not be simulated when provided --- .../HttpClient/Response/MockResponse.php | 8 ++++---- .../Tests/Response/MockResponseTest.php | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/Symfony/Component/HttpClient/Response/MockResponse.php b/src/Symfony/Component/HttpClient/Response/MockResponse.php index 0f359f30b3..8f5803202c 100644 --- a/src/Symfony/Component/HttpClient/Response/MockResponse.php +++ b/src/Symfony/Component/HttpClient/Response/MockResponse.php @@ -211,8 +211,8 @@ class MockResponse implements ResponseInterface $response->info['size_upload'] = 0.0; } - // simulate "total_time" if it is set - if (isset($response->info['total_time'])) { + // simulate "total_time" if it is not set + if (!isset($response->info['total_time'])) { $response->info['total_time'] = microtime(true) - $response->info['start_time']; } @@ -260,7 +260,7 @@ class MockResponse implements ResponseInterface 'http_code' => $response->info['http_code'], ] + $info + $response->info; - if (isset($response->info['total_time'])) { + if (!isset($response->info['total_time'])) { $response->info['total_time'] = microtime(true) - $response->info['start_time']; } @@ -287,7 +287,7 @@ class MockResponse implements ResponseInterface $offset = \strlen($body); } - if (isset($response->info['total_time'])) { + if (!isset($response->info['total_time'])) { $response->info['total_time'] = microtime(true) - $response->info['start_time']; } diff --git a/src/Symfony/Component/HttpClient/Tests/Response/MockResponseTest.php b/src/Symfony/Component/HttpClient/Tests/Response/MockResponseTest.php index b4a4a22083..2f389bcc80 100644 --- a/src/Symfony/Component/HttpClient/Tests/Response/MockResponseTest.php +++ b/src/Symfony/Component/HttpClient/Tests/Response/MockResponseTest.php @@ -11,6 +11,24 @@ use Symfony\Component\HttpClient\Response\MockResponse; */ class MockResponseTest extends TestCase { + public function testTotalTimeShouldBeSimulatedWhenNotProvided() + { + $response = new MockResponse('body'); + $response = MockResponse::fromRequest('GET', 'https://example.com/file.txt', [], $response); + + $this->assertNotNull($response->getInfo('total_time')); + $this->assertGreaterThan(0.0, $response->getInfo('total_time')); + } + + public function testTotalTimeShouldNotBeSimulatedWhenProvided() + { + $totalTime = 4.2; + $response = new MockResponse('body', ['total_time' => $totalTime]); + $response = MockResponse::fromRequest('GET', 'https://example.com/file.txt', [], $response); + + $this->assertEquals($totalTime, $response->getInfo('total_time')); + } + public function testToArray() { $data = ['color' => 'orange', 'size' => 42]; From 1a26ed43e7c9cf05bebcc6113bd41aba455a23e6 Mon Sep 17 00:00:00 2001 From: Christian Flothmann Date: Fri, 26 Feb 2021 11:19:16 +0100 Subject: [PATCH 2/2] improve exception message if symfony/security-csrf is missing --- src/Symfony/Component/Form/FormRenderer.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/Form/FormRenderer.php b/src/Symfony/Component/Form/FormRenderer.php index 64e7cf3746..3aec936fd9 100644 --- a/src/Symfony/Component/Form/FormRenderer.php +++ b/src/Symfony/Component/Form/FormRenderer.php @@ -59,7 +59,7 @@ class FormRenderer implements FormRendererInterface public function renderCsrfToken($tokenId) { if (null === $this->csrfTokenManager) { - throw new BadMethodCallException('CSRF tokens can only be generated if a CsrfTokenManagerInterface is injected in FormRenderer::__construct().'); + throw new BadMethodCallException('CSRF tokens can only be generated if a CsrfTokenManagerInterface is injected in FormRenderer::__construct(). Try running "composer require symfony/security-csrf".'); } return $this->csrfTokenManager->getToken($tokenId)->getValue();