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

Commit 9b8862f

Browse files
committed
Add test for copying matched parameters in HEAD request
1 parent f7e21d8 commit 9b8862f

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

test/Middleware/ImplicitHeadMiddlewareTest.php

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ public function testInvokesHandlerWhenRouteImplicitlySupportsHeadAndSupportsGet(
143143
$result = $this->prophesize(RouteResult::class);
144144
$result->isFailure()->willReturn(false);
145145
$result->getMatchedRoute()->will([$route, 'reveal']);
146+
$result->getMatchedParams()->willReturn([]);
146147

147148
$request->withAttribute(RouteResult::class, $result->reveal())->will([$request, 'reveal']);
148149

@@ -157,4 +158,47 @@ public function testInvokesHandlerWhenRouteImplicitlySupportsHeadAndSupportsGet(
157158

158159
$this->assertSame($response->reveal(), $result);
159160
}
161+
162+
public function testInvokesHandlerWithRequestComposingRouteResultAndAttributes()
163+
{
164+
$result = $this->prophesize(RouteResult::class);
165+
$result->getMatchedRoute()->willReturn(false);
166+
167+
$request = $this->prophesize(ServerRequestInterface::class);
168+
$request->getMethod()->willReturn(RequestMethod::METHOD_HEAD);
169+
$request->getAttribute(RouteResult::class)->will([$result, 'reveal']);
170+
$request->withMethod(RequestMethod::METHOD_GET)->will([$request, 'reveal']);
171+
$request
172+
->withAttribute(
173+
ImplicitHeadMiddleware::FORWARDED_HTTP_METHOD_ATTRIBUTE,
174+
RequestMethod::METHOD_HEAD
175+
)
176+
->will([$request, 'reveal']);
177+
178+
$response = $this->prophesize(ResponseInterface::class);
179+
$response->withBody($this->stream->reveal())->will([$response, 'reveal']);
180+
181+
$route = $this->prophesize(Route::class);
182+
183+
$parameters = ['foo' => 'bar', 'baz' => 'bat'];
184+
$result = $this->prophesize(RouteResult::class);
185+
$result->isFailure()->willReturn(false);
186+
$result->getMatchedRoute()->will([$route, 'reveal']);
187+
$result->getMatchedParams()->willReturn($parameters)->shouldBeCalled();
188+
189+
$request->withAttribute(RouteResult::class, $result->reveal())->will([$request, 'reveal']);
190+
$request->withAttribute('foo', 'bar')->will([$request, 'reveal'])->shouldBeCalled();
191+
$request->withAttribute('baz', 'bat')->will([$request, 'reveal'])->shouldBeCalled();
192+
193+
$this->router->match($request)->will([$result, 'reveal']);
194+
195+
$handler = $this->prophesize(RequestHandlerInterface::class);
196+
$handler
197+
->handle(Argument::that([$request, 'reveal']))
198+
->will([$response, 'reveal']);
199+
200+
$result = $this->middleware->process($request->reveal(), $handler->reveal());
201+
202+
$this->assertSame($response->reveal(), $result);
203+
}
160204
}

0 commit comments

Comments
 (0)