Skip to content
This repository was archived by the owner on Jan 29, 2020. It is now read-only.

Commit 08bfae2

Browse files
committed
Do not rely on Stratigility getOriginal*() methods
These are deprecated starting with Stratigility 1.3. This patch updates the `TemplatedErrorHandler` and the `WhoopsErrorHandler` to instead use the request `getOriginal*` attributes, which are injected in the Stratigility request/response decorators, and which can be injected by the `OriginalMessages` middleware as well. Additionally, this updates the `Application::run()` method to ensure that the `originalResponse` attribute is injected, as it is not in earlier Stratigility versions.
1 parent ea88814 commit 08bfae2

File tree

5 files changed

+23
-11
lines changed

5 files changed

+23
-11
lines changed

src/Application.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -558,8 +558,9 @@ public function route($path, $middleware = null, array $methods = null, $name =
558558
*/
559559
public function run(ServerRequestInterface $request = null, ResponseInterface $response = null)
560560
{
561-
$request = $request ?: ServerRequestFactory::fromGlobals();
562561
$response = $response ?: new Response();
562+
$request = $request ?: ServerRequestFactory::fromGlobals();
563+
$request = $request->withAttribute('originalResponse', $response);
563564

564565
$response = $this($request, $response);
565566

src/TemplatedErrorHandler.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -191,9 +191,7 @@ private function handlePotentialSuccess(Request $request, Response $response)
191191
}
192192

193193
$originalResponse = $this->originalResponse;
194-
$decoratedResponse = $response instanceof StratigilityResponse
195-
? $response->getOriginalResponse()
196-
: $response;
194+
$decoratedResponse = $request->getAttribute('originalResponse', $response);
197195

198196
if ($originalResponse !== $response
199197
&& $originalResponse !== $decoratedResponse

src/WhoopsErrorHandler.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -102,11 +102,9 @@ protected function handleException($exception, Request $request, Response $respo
102102
*/
103103
private function prepareWhoopsHandler(Request $request, PrettyPageHandler $handler)
104104
{
105-
if ($request instanceof StratigilityRequest) {
106-
$request = $request->getOriginalRequest();
107-
}
105+
$uri = $request->getAttribute('originalUri', false) ?: $request->getUri();
106+
$request = $request->getAttribute('originalRequest', false) ?: $request;
108107

109-
$uri = $request->getUri();
110108
$handler->addDataTable('Expressive Application Request', [
111109
'HTTP Method' => $request->getMethod(),
112110
'URI' => (string) $uri,

test/TemplatedErrorHandlerTest.php

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
use Exception;
1313
use PHPUnit_Framework_TestCase as TestCase;
1414
use Prophecy\Argument;
15-
use Psr\Http\Message\RequestInterface;
15+
use Psr\Http\Message\ServerRequestInterface;
1616
use Psr\Http\Message\ResponseInterface;
1717
use Psr\Http\Message\StreamInterface;
1818
use Zend\Expressive\Template\TemplateRendererInterface;
@@ -30,7 +30,7 @@ public function getTemplateImplementation()
3030

3131
public function getRequest($stream)
3232
{
33-
$request = $this->prophesize(RequestInterface::class);
33+
$request = $this->prophesize(ServerRequestInterface::class);
3434
$request->getBody()->will(function () use ($stream) {
3535
return $stream->reveal();
3636
});
@@ -130,6 +130,9 @@ public function testInvocationWithoutErrorAndResponseSameAsOriginalReturns404Res
130130
$handler->setOriginalResponse($response->reveal());
131131

132132
$request = $this->getRequest($this->getStream());
133+
$request
134+
->getAttribute('originalResponse', Argument::that([$response, 'reveal']))
135+
->will([$response, 'reveal']);
133136

134137
$result = $handler($request->reveal(), $response->reveal());
135138
$this->assertSame($expected->reveal(), $result);
@@ -151,6 +154,9 @@ public function testInvocationWithoutErrorAndResponseSameAsOriginalWithNewBodyCo
151154
$handler->setOriginalResponse($response->reveal());
152155

153156
$request = $this->getRequest($this->getStream());
157+
$request
158+
->getAttribute('originalResponse', Argument::that([$response, 'reveal']))
159+
->will([$response, 'reveal']);
154160

155161
$result = $handler($request->reveal(), $response->reveal());
156162
$this->assertSame($response->reveal(), $result);
@@ -167,6 +173,9 @@ public function testInvocationWithoutErrorAndResponseDifferentThanOriginalReturn
167173

168174
$response = $this->getResponse($this->getStream());
169175
$request = $this->getRequest($this->getStream());
176+
$request
177+
->getAttribute('originalResponse', Argument::that([$response, 'reveal']))
178+
->will([$response, 'reveal']);
170179

171180
$result = $handler($request->reveal(), $response->reveal());
172181
$this->assertSame($response->reveal(), $result);
@@ -243,6 +252,9 @@ public function testInvocationWithoutErrorAndResponseSameAsOriginalCanReturnTemp
243252

244253
$request = $this->getRequest($this->getStream());
245254
$request->getUri()->shouldBeCalled();
255+
$request
256+
->getAttribute('originalResponse', Argument::that([$response, 'reveal']))
257+
->will([$response, 'reveal']);
246258

247259
$result = $handler($request->reveal(), $response->reveal());
248260
$this->assertSame($expected->reveal(), $result);

test/WhoopsErrorHandlerTest.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ public function testExceptionErrorPreparesPageHandlerAndInvokesWhoops()
8282
$request->getAttributes()->shouldBeCalled();
8383
$request->getQueryParams()->shouldBeCalled();
8484
$request->getParsedBody()->shouldBeCalled();
85+
$request->getAttribute('originalUri', false)->willReturn(false);
86+
$request->getAttribute('originalRequest', false)->willReturn(false);
8587

8688
$result = $handler($request->reveal(), $response->reveal(), $exception);
8789
$this->assertSame($expected->reveal(), $result);
@@ -119,7 +121,8 @@ public function testOriginalRequestIsPulledFromStratigilityRequest()
119121

120122
$request = new ServerRequest(['SCRIPT_NAME' => __FILE__]);
121123
$decoratingRequest = $this->prophesize(StratigilityRequest::class);
122-
$decoratingRequest->getOriginalRequest()->willReturn($request);
124+
$decoratingRequest->getAttribute('originalRequest', false)->willReturn($request);
125+
$decoratingRequest->getAttribute('originalUri', false)->willReturn($request->getUri());
123126

124127
$result = $handler($decoratingRequest->reveal(), $response->reveal(), $exception);
125128
$this->assertSame($expected->reveal(), $result);

0 commit comments

Comments
 (0)