Skip to content

Commit d5e8a9d

Browse files
kpicazatimacdonald
andauthored
[10.x] Fix type error registering PSR Request (#48823)
* [10.x] fix type error registering PSR Request * Formatting * Formatting --------- Co-authored-by: Tim MacDonald <[email protected]>
1 parent f54b5e0 commit d5e8a9d

File tree

2 files changed

+37
-1
lines changed

2 files changed

+37
-1
lines changed

src/Illuminate/Routing/RoutingServiceProvider.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ protected function registerPsrRequest()
139139

140140
return with((new PsrHttpFactory($psr17Factory, $psr17Factory, $psr17Factory, $psr17Factory))
141141
->createRequest($illuminateRequest = $app->make('request')), fn ($request) => $request->withParsedBody(
142-
array_merge($request->getParsedBody(), $illuminateRequest->getPayload()->all())
142+
array_merge($request->getParsedBody() ?? [], $illuminateRequest->getPayload()->all())
143143
));
144144
}
145145

tests/Integration/Foundation/RoutingServiceProviderTest.php

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,42 @@ public function testItIncludesMergedDataInServerRequestInterfaceInstancesUsingGe
2626
]);
2727
}
2828

29+
public function testItWorksNormallyWithoutMergeDataMiddlewareWithEmptyRequests()
30+
{
31+
Route::get('test-route', function (ServerRequestInterface $request) {
32+
return $request->getParsedBody();
33+
});
34+
35+
$response = $this->withoutExceptionHandling()->get('test-route', [
36+
'content-type' => 'application/json',
37+
]);
38+
39+
$response->assertOk();
40+
$response->assertExactJson([]);
41+
}
42+
43+
public function testItIncludesMergedDataInServerRequestInterfaceInstancesUsingGetJsonRequestsWithContentTypeHeader()
44+
{
45+
Route::get('test-route', function (ServerRequestInterface $request) {
46+
return $request->getParsedBody();
47+
})->middleware(MergeDataMiddleware::class);
48+
49+
$response = $this->getJson('test-route?'.http_build_query([
50+
'sent' => 'sent-data',
51+
'overridden' => 'overriden-sent-data',
52+
]), [
53+
'content-type' => 'application/json',
54+
]);
55+
56+
$response->assertOk();
57+
$response->assertExactJson([
58+
'json-data' => 'json-data',
59+
'merged' => 'replaced-merged-data',
60+
'overridden' => 'overriden-merged-data',
61+
'request-data' => 'request-data',
62+
]);
63+
}
64+
2965
public function testItIncludesMergedDataInServerRequestInterfaceInstancesUsingGetJsonRequests()
3066
{
3167
Route::get('test-route', function (ServerRequestInterface $request) {

0 commit comments

Comments
 (0)