From bde6e4156c08febd5db037819286418cb66f0bf1 Mon Sep 17 00:00:00 2001 From: Timo Poppinga <timo.poppinga@zdrei.com> Date: Tue, 7 Apr 2020 12:12:17 +0200 Subject: [PATCH] [TASK] Add methods PURGE and BAN in TYPO3\CMS\Core\Http\Request Add the HTTP methods 'PURGE' and 'BAN' to $supportedMethods, to support clear cache requests for proxy caches like varnish. Resolves: #90968 Releases: master, 9.5 Change-Id: I2d4737319d23b362af689eadd21b6c3134a894e4 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/64093 Tested-by: TYPO3com <noreply@typo3.com> Tested-by: Jonas Eberle <flightvision@googlemail.com> Tested-by: Timo Poppinga <timo.poppinga@zdrei.com> Tested-by: Benni Mack <benni@typo3.org> Reviewed-by: Jonas Eberle <flightvision@googlemail.com> Reviewed-by: Timo Poppinga <timo.poppinga@zdrei.com> Reviewed-by: Benni Mack <benni@typo3.org> --- typo3/sysext/core/Classes/Http/Request.php | 5 ++++- .../core/Tests/Unit/Http/RequestTest.php | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/typo3/sysext/core/Classes/Http/Request.php b/typo3/sysext/core/Classes/Http/Request.php index 4f89e0a9b813..39519917c9f6 100644 --- a/typo3/sysext/core/Classes/Http/Request.php +++ b/typo3/sysext/core/Classes/Http/Request.php @@ -66,7 +66,10 @@ class Request extends Message implements RequestInterface 'PROPFIND', 'PROPPATCH', 'REPORT', - 'UNLOCK' + 'UNLOCK', + // Custom methods + 'PURGE', + 'BAN' ]; /** diff --git a/typo3/sysext/core/Tests/Unit/Http/RequestTest.php b/typo3/sysext/core/Tests/Unit/Http/RequestTest.php index d28b0f13ee77..8c6dabafb26b 100644 --- a/typo3/sysext/core/Tests/Unit/Http/RequestTest.php +++ b/typo3/sysext/core/Tests/Unit/Http/RequestTest.php @@ -527,4 +527,22 @@ class RequestTest extends UnitTestCase $this->expectException(\InvalidArgumentException::class); new Request(null, null, 'php://memory', [$name => $value]); } + + /** + * @test + */ + public function supportedRequestMethodsWork(): void + { + $request = new Request('some-uri', 'PURGE'); + self::assertEquals('PURGE', $request->getMethod()); + } + + /** + * @test + */ + public function nonSupportedRequestMethodsRaisesException(): void + { + $this->expectException(\InvalidArgumentException::class); + new Request('some-uri', 'UNSUPPORTED'); + } } -- GitLab