/**
* @param array $requestArguments
* @param bool $failOnFailure
* @return Response
*/
protected function fetchFrontendResponse(array $requestArguments, $failOnFailure = true)
{
if (!empty($requestArguments['url'])) {
$requestUrl = '/' . ltrim($requestArguments['url'], '/');
} else {
$requestUrl = '/?' . GeneralUtility::implodeArrayForUrl('', $requestArguments);
}
if (property_exists($this, 'instancePath')) {
$instancePath = $this->instancePath;
} else {
$instancePath = ORIGINAL_ROOT . 'typo3temp/functional-' . substr(sha1(get_class($this)), 0, 7);
}
$arguments = array('documentRoot' => $instancePath, 'requestUrl' => 'http://localhost' . $requestUrl);
$template = new \Text_Template(ORIGINAL_ROOT . 'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/request.tpl');
$template->setVar(array('arguments' => var_export($arguments, true), 'originalRoot' => ORIGINAL_ROOT));
$php = \PHPUnit_Util_PHP::factory();
$response = $php->runJob($template->render());
$result = json_decode($response['stdout'], true);
if ($result === null) {
$this->fail('Frontend Response is empty');
}
if ($failOnFailure && $result['status'] === Response::STATUS_Failure) {
$this->fail('Frontend Response has failure:' . LF . $result['error']);
}
$response = new Response($result['status'], $result['content'], $result['error']);
return $response;
}