diff --git a/src/Middleware/RequestAcceptJson.php b/src/Middleware/RequestAcceptJson.php index fccb129..457e5d6 100644 --- a/src/Middleware/RequestAcceptJson.php +++ b/src/Middleware/RequestAcceptJson.php @@ -9,7 +9,8 @@ class RequestAcceptJson { public function handle(Request $request, Closure $next) { - if (!$request->headers->has('Accept')) { + $accept = $request->headers->get('Accept'); + if ($accept === null || $accept === '*/*' || $accept === 'application/*') { $request->headers->set('Accept', 'application/json'); } diff --git a/tests/Middleware/RequestAcceptJsonTest.php b/tests/Middleware/RequestAcceptJsonTest.php index 10f587a..30ad564 100644 --- a/tests/Middleware/RequestAcceptJsonTest.php +++ b/tests/Middleware/RequestAcceptJsonTest.php @@ -25,6 +25,40 @@ function ($request) { $this->assertSame('application/json', $result->header('Accept')); } + /** + * @test + */ + public function whenItReceivesWildcardAcceptHeaderItShouldSetToApplicationJson() + { + $mockRequest = $this->getRequest(['Accept' => '*/*']); + $middleware = new RequestAcceptJson(); + + $result = $middleware->handle( + $mockRequest, + function ($request) { + return $request; + } + ); + $this->assertSame('application/json', $result->header('Accept')); + } + + /** + * @test + */ + public function whenItReceivesApplicationWildcardAcceptHeaderItShouldSetToApplicationJson() + { + $mockRequest = $this->getRequest(['Accept' => 'application/*']); + $middleware = new RequestAcceptJson(); + + $result = $middleware->handle( + $mockRequest, + function ($request) { + return $request; + } + ); + $this->assertSame('application/json', $result->header('Accept')); + } + /** * @test */