diff --git a/src/TestSuite/IntegrationTestCase.php b/src/TestSuite/IntegrationTestCase.php index c0ef9ad6a0a..7d230afa6dd 100644 --- a/src/TestSuite/IntegrationTestCase.php +++ b/src/TestSuite/IntegrationTestCase.php @@ -548,20 +548,25 @@ protected function _buildRequest($url, $method, $data) $tokenUrl = $url; if ($query) { - $tokenUrl .= '?' . http_build_query($query); + $tokenUrl .= '?' . $query; } + parse_str($query, $queryData); $props = [ 'url' => $url, 'post' => $this->_addTokens($tokenUrl, $data), 'cookies' => $this->_cookie, 'session' => $session, - 'query' => $query + 'query' => $queryData ]; if (is_string($data)) { $props['input'] = $data; } - $env = []; + $env = [ + 'REQUEST_METHOD' => $method, + 'QUERY_STRING' => $query, + 'REQUEST_URI' => $url, + ]; if (isset($this->_request['headers'])) { foreach ($this->_request['headers'] as $k => $v) { $name = strtoupper(str_replace('-', '_', $k)); @@ -572,7 +577,6 @@ protected function _buildRequest($url, $method, $data) } unset($this->_request['headers']); } - $env['REQUEST_METHOD'] = $method; $props['environment'] = $env; $props = Hash::merge($props, $this->_request); @@ -618,11 +622,10 @@ protected function _addTokens($url, $data) protected function _url($url) { $url = Router::url($url); - $query = []; + $query = ''; if (strpos($url, '?') !== false) { - list($url, $parameters) = explode('?', $url, 2); - parse_str($parameters, $query); + list($url, $query) = explode('?', $url, 2); } return [$url, $query]; diff --git a/tests/TestCase/TestSuite/IntegrationTestCaseTest.php b/tests/TestCase/TestSuite/IntegrationTestCaseTest.php index 079e1ed2354..e602dfd5d8f 100644 --- a/tests/TestCase/TestSuite/IntegrationTestCaseTest.php +++ b/tests/TestCase/TestSuite/IntegrationTestCaseTest.php @@ -151,8 +151,9 @@ public function testRequestBuildingQueryParameters() { $request = $this->_buildRequest('/tasks/view?archived=yes', 'GET', []); - $this->assertEquals('/tasks/view', $request['url']); - $this->assertEquals('yes', $request['query']['archived']); + $this->assertSame('/tasks/view', $request['url']); + $this->assertSame('archived=yes', $request['environment']['QUERY_STRING']); + $this->assertSame('/tasks/view', $request['environment']['REQUEST_URI']); } /** @@ -238,7 +239,7 @@ public function testGetHttpServer() * * @return void */ - public function testQueryStringHttpServer() + public function testGetQueryStringHttpServer() { $this->useHttpServer(true); @@ -248,6 +249,10 @@ public function testQueryStringHttpServer() $this->assertResponseContains('"q":"query"'); $this->assertResponseContains('"contentType":"text\/plain"'); $this->assertHeader('X-Middleware', 'true'); + + $request = $this->_controller->request; + $this->assertContains('/request_action/params_pass?q=query', $request->here()); + $this->assertContains('/request_action/params_pass?q=query', $request->getRequestTarget()); } /**