diff --git a/CHANGELOG.md b/CHANGELOG.md index c0fbc9f..19ae1ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +## v2.3.1 + +### Fixed + +- Ignore query parameters in non-GET requests https://github.com/laragraph/utils/issues/26 + ## v2.3.0 ### Added diff --git a/src/RequestParser.php b/src/RequestParser.php index dd4616f..450e551 100644 --- a/src/RequestParser.php +++ b/src/RequestParser.php @@ -63,7 +63,7 @@ protected function bodyParams(Request $request): array return ['query' => $request->getContent()]; } - $bodyParams = $request->input(); + $bodyParams = $request->post(); if (is_array($bodyParams) && count($bodyParams) > 0) { if (Arr::isAssoc($bodyParams)) { diff --git a/tests/Unit/RequestParserTest.php b/tests/Unit/RequestParserTest.php index e8460fb..1a91f9c 100644 --- a/tests/Unit/RequestParserTest.php +++ b/tests/Unit/RequestParserTest.php @@ -119,6 +119,29 @@ public function testPostWithBatchedRequest(): void self::assertSame($barQuery, $barParams->query); } + public function testPostWithBatchedRequestAndGetParams(): void + { + $fooQuery = /** @lang GraphQL */ '{ foo }'; + $barQuery = /** @lang GraphQL */ '{ bar }'; + $request = $this->makeRequest( + 'POST', + [], + [], + ['Content-Type' => 'application/json'], + \Safe\json_encode([ + ['query' => $fooQuery], + ['query' => $barQuery], + ]), + 'http://foo.bar/graphql?Operation=foo,bar' + ); + $params = (new RequestParser())->parseRequest($request); + + self::assertIsArray($params); + [$fooParams, $barParams] = $params; + self::assertSame($fooQuery, $fooParams->query); + self::assertSame($barQuery, $barParams->query); + } + public function testPostDefaultsToRegularForm(): void { $query = /** @lang GraphQL */ '{ foo }'; @@ -502,10 +525,10 @@ public function testMultipartFormWithNonJsonMap(): void * @param array $headers * @param string|resource|null $content */ - private function makeRequest(string $method, array $parameters = [], array $files = [], array $headers = [], $content = null): Request + private function makeRequest(string $method, array $parameters = [], array $files = [], array $headers = [], $content = null, string $uri = 'http://foo.bar/graphql'): Request { $symfonyRequest = SymfonyRequest::create( - 'http://foo.bar/graphql', + $uri, $method, $parameters, [],