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

Commit 7ec633e

Browse files
committed
Merge branch 'hotfix/template-reponse-deprecation'
Close #393
2 parents ea88814 + e8bbf18 commit 7ec633e

File tree

7 files changed

+51
-25
lines changed

7 files changed

+51
-25
lines changed

CHANGELOG.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,34 @@
22

33
All notable changes to this project will be documented in this file, in reverse chronological order by release.
44

5+
## 1.0.2 - 2016-11-11
6+
7+
### Added
8+
9+
- Nothing.
10+
11+
### Changes
12+
13+
- [#393](https://github.com/zendframework/zend-expressive/pull/393) updates
14+
`Application::run()` to inject the request with an `originalResponse`
15+
attribute using the provided response as the value.
16+
17+
### Deprecated
18+
19+
- Nothing.
20+
21+
### Removed
22+
23+
- Nothing.
24+
25+
### Fixed
26+
27+
- [#393](https://github.com/zendframework/zend-expressive/pull/393) fixes how
28+
each of the `TemplatedErrorHandler` and `WhoopsErrorHandler` access the
29+
"original" request, URI, and/or response. Previously, these used
30+
Stratigility-specific methods; they now use request attributes, eliminating
31+
deprecation notices emitted in Stratigility 1.3+ versions.
32+
533
## 1.0.1 - 2016-11-11
634

735
### Added

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 & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99

1010
use Psr\Http\Message\RequestInterface as Request;
1111
use Psr\Http\Message\ResponseInterface as Response;
12-
use Zend\Stratigility\Http\Response as StratigilityResponse;
1312
use Zend\Stratigility\Utils;
1413

1514
/**
@@ -191,9 +190,7 @@ private function handlePotentialSuccess(Request $request, Response $response)
191190
}
192191

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

198195
if ($originalResponse !== $response
199196
&& $originalResponse !== $decoratedResponse

src/WhoopsErrorHandler.php

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
use Psr\Http\Message\ResponseInterface as Response;
1212
use Whoops\Handler\PrettyPageHandler;
1313
use Whoops\Run as Whoops;
14-
use Zend\Stratigility\Http\Request as StratigilityRequest;
1514

1615
/**
1716
* Final handler with templated page capabilities plus Whoops exception reporting.
@@ -102,11 +101,9 @@ protected function handleException($exception, Request $request, Response $respo
102101
*/
103102
private function prepareWhoopsHandler(Request $request, PrettyPageHandler $handler)
104103
{
105-
if ($request instanceof StratigilityRequest) {
106-
$request = $request->getOriginalRequest();
107-
}
104+
$uri = $request->getAttribute('originalUri', false) ?: $request->getUri();
105+
$request = $request->getAttribute('originalRequest', false) ?: $request;
108106

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

test/IntegrationTest.php

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,8 @@ public function testDefaultFinalHandlerCanEmitA404WhenNoMiddlewareMatches()
4949
$request = new ServerRequest([], [], 'https://example.com/foo', 'GET');
5050
$response = new Response();
5151

52-
set_error_handler(function ($errno, $errstr) {
53-
return false !== strstr($errstr, 'OriginalMessages');
54-
}, E_USER_DEPRECATED);
55-
5652
$app->run($request, $response);
5753

58-
restore_error_handler();
59-
6054
$this->assertInstanceOf(ResponseInterface::class, $this->response);
6155
$this->assertEquals(404, $this->response->getStatusCode());
6256
}
@@ -68,14 +62,8 @@ public function testInjectedFinalHandlerCanEmitA404WhenNoMiddlewareMatches()
6862
$request = new ServerRequest([], [], 'https://example.com/foo', 'GET');
6963
$response = new Response();
7064

71-
set_error_handler(function ($errno, $errstr) {
72-
return false !== strstr($errstr, 'OriginalMessages');
73-
}, E_USER_DEPRECATED);
74-
7565
$app->run($request, $response);
7666

77-
restore_error_handler();
78-
7967
$this->assertInstanceOf(ResponseInterface::class, $this->response);
8068
$this->assertEquals(404, $this->response->getStatusCode());
8169
}

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)