diff --git a/src/Elasticsearch/Connections/Connection.php b/src/Elasticsearch/Connections/Connection.php index 413e00e39..194ba5028 100644 --- a/src/Elasticsearch/Connections/Connection.php +++ b/src/Elasticsearch/Connections/Connection.php @@ -346,15 +346,17 @@ function ($response) use ($connection, $transport, $request, $options) { private function getURI(string $uri, ?array $params): string { if (isset($params) === true && !empty($params)) { - array_walk( - $params, - function (&$value, &$key) { + $params = array_map( + function ($value) { if ($value === true) { - $value = 'true'; + return 'true'; } elseif ($value === false) { - $value = 'false'; + return 'false'; } - } + + return $value; + }, + $params ); $uri .= '?' . http_build_query($params); diff --git a/tests/Elasticsearch/Tests/Connections/ConnectionTest.php b/tests/Elasticsearch/Tests/Connections/ConnectionTest.php index 2508522d6..1379697b4 100644 --- a/tests/Elasticsearch/Tests/Connections/ConnectionTest.php +++ b/tests/Elasticsearch/Tests/Connections/ConnectionTest.php @@ -363,4 +363,36 @@ public function testHeaderClientParamIsResetAfterSent() $headersAfter = $connection->getHeaders(); $this->assertEquals($headersBefore, $headersAfter); } + + /** + * @depends testGetHeadersContainUserAgent + * + * @covers \Connection::performRequest + * @covers \Connection::getURI + */ + public function testParametersAreSent() + { + $connectionParams = []; + $host = [ + 'host' => 'localhost' + ]; + $requestParams = [ + 'foo' => true, + 'baz' => false, + 'bar' => 'baz' + ]; + + $connection = new Connection( + ClientBuilder::defaultHandler(), + $host, + $connectionParams, + $this->serializer, + $this->logger, + $this->trace + ); + $result = $connection->performRequest('GET', '/', $requestParams); + $request = $connection->getLastRequestInfo()['request']; + + $this->assertEquals('/?foo=true&baz=false&bar=baz', $request['uri']); + } }