public function doRequest($request) { // redirector should not exit $redirector = \Zend_Controller_Action_HelperBroker::getStaticHelper('redirector'); $redirector->setExit(false); // json helper should not exit $json = \Zend_Controller_Action_HelperBroker::getStaticHelper('json'); $json->suppressExit = true; $zendRequest = new \Zend_Controller_Request_HttpTestCase(); $zendRequest->setMethod($request->getMethod()); $zendRequest->setCookies($request->getCookies()); $zendRequest->setParams($request->getParameters()); // Sf2's BrowserKit does not distinguish between GET, POST, PUT etc., // so we set all parameters in ZF's request here to not break apps // relying on $request->getPost() $zendRequest->setPost($request->getParameters()); $zendRequest->setRawBody($request->getContent()); $zendRequest->setRequestUri(str_replace('http://localhost', '', $request->getUri())); $zendRequest->setHeaders($this->extractHeaders($request)); $_FILES = $this->remapFiles($request->getFiles()); $_SERVER = array_merge($_SERVER, $request->getServer()); $zendResponse = new \Zend_Controller_Response_HttpTestCase(); $this->front->setRequest($zendRequest)->setResponse($zendResponse); ob_start(); try { $this->bootstrap->run(); } catch (\Exception $e) { ob_end_clean(); throw $e; } ob_end_clean(); $this->zendRequest = $zendRequest; $response = new Response($zendResponse->getBody(), $zendResponse->getHttpResponseCode(), $this->formatResponseHeaders($zendResponse)); return $response; }
/** * Sets up the fixture, for example, open a network connection. * This method is called before a test is executed. * * @return void */ public function setUp() { $this->front = \Zend\Controller\Front::getInstance(); $this->front->resetInstance(); $this->request = new Request\Http(); $this->front->setRequest($this->request); }
/** * Sets up the fixture, for example, open a network connection. * This method is called before a test is executed. * * @return void */ public function setUp() { $this->front = Zend_Controller_Front::getInstance(); $this->front->resetInstance(); $this->request = new Zend_Controller_Request_Http(); $this->front->setRequest($this->request); }
public function doRequest($request) { // redirector should not exit $redirector = \Zend_Controller_Action_HelperBroker::getStaticHelper('redirector'); $redirector->setExit(false); // json helper should not exit $json = \Zend_Controller_Action_HelperBroker::getStaticHelper('json'); $json->suppressExit = true; $zendRequest = new \Zend_Controller_Request_HttpTestCase(); $zendRequest->setMethod($request->getMethod()); $zendRequest->setCookies($request->getCookies()); $zendRequest->setParams($request->getParameters()); $zendRequest->setRequestUri(str_replace('http://localhost', '', $request->getUri())); $zendRequest->setHeaders($request->getServer()); $_FILES = $request->getFiles(); $_SERVER = array_merge($_SERVER, $request->getServer()); $zendResponse = new \Zend_Controller_Response_HttpTestCase(); $this->front->setRequest($zendRequest)->setResponse($zendResponse); ob_start(); $this->bootstrap->run(); ob_end_clean(); $this->zendRequest = $zendRequest; $response = new Response($zendResponse->getBody(), $zendResponse->getHttpResponseCode(), $zendResponse->getHeaders()); return $response; }
protected function tearDown() { if (null !== $this->_oldRequest) { $this->_front->setRequest($this->_oldRequest); } else { $this->_front->setRequest(new Zend_Controller_Request_Http()); } $this->_front->setRouter($this->_oldRouter); }
/** * Sets up all the initial required pieces of the app. * * @param string $environment * @param string $appPath * @param string $moduleDir */ public function __construct($environment, $appPath = APPLICATION_PATH, $moduleDir = 'modules') { // set the environment $this->_environment = (string) $environment; // set the application path $this->_appPath = $appPath; // set the modules dir path $this->_moduleDir = $this->_appPath . DIRECTORY_SEPARATOR . $moduleDir; // initiate autoloader require_once 'Zend/Loader/Autoloader.php'; $this->_autoloader = Zend_Loader_Autoloader::getInstance(); // set up module autoloading $this->_autoloader->pushAutoloader(array($this, 'moduleAutoload')); // set front controller $this->_front = Zend_Controller_Front::getInstance(); // add module directory $this->_front->addModuleDirectory($this->_moduleDir); // initiate request if ($this->_request === null) { $this->_request = new Zend_Controller_Request_Http(); } // initiate response if ($this->_response === null) { $this->_response = new Zend_Controller_Response_Http(); } // initiate router (Zend_Controller_Router_Rwrite) $this->_router = $this->_front->getRouter(); // get application.ini options $appOptions = $this->_getApplicationOptions(); // set routes in router from application.ini (if any) $this->_addRoutesFromConfig($appOptions); // update request with routes $this->_route($this->_request); // get module options $moduleOptions = $this->_getModuleOptions(); // merge application and module options into one array $options = $this->mergeOptions($appOptions, $moduleOptions); // set options $this->setOptions($options); // update front controller request $this->_front->setRequest($this->_request); // update front controller response $this->_front->setResponse($this->_response); // to be used in dispatch $this->_front->setRouter($this->_router); }
public function testHelperPullsResponseFromFrontControllerWithNoRegisteredActionController() { $helper = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer'); $this->assertNull($helper->getActionController()); $aRequest = new Zend_Controller_Request_Http(); $aRequest->setModuleName('default')->setControllerName('zend_controller_action_helper-broker')->setActionName('index'); $aResponse = new Zend_Controller_Response_Cli(); $fRequest = new Zend_Controller_Request_Http(); $fRequest->setModuleName('foo')->setControllerName('foo-bar')->setActionName('baz'); $fResponse = new Zend_Controller_Response_Cli(); $this->front->setRequest($fRequest)->setResponse($fResponse); $hRequest = $helper->getRequest(); $this->assertNotSame($hRequest, $aRequest); $this->assertSame($hRequest, $fRequest); $hResponse = $helper->getResponse(); $this->assertNotSame($hResponse, $aResponse); $this->assertSame($hResponse, $fResponse); }
/** * Processes the requestStack and merges their responses into $response. * * @param Zend_Controller_Front $front * @param Zend_Controller_Response_Abstract $response * */ protected function _processRequestStack($front, Zend_Controller_Response_Abstract $response) { $stack =& $this->_requestStack; $config =& $this->_config; $i = count($stack) - 1; $responseStack = array(); $front->returnResponse(true); do { $myResponse = new Zend_Controller_Response_Http(); $nextRequest = array_pop($stack); $nextRequest->setParam($config['indexKey'], $i); $this->_resetHelper(); $this->_resetPlugins(); $this->_resetParams($nextRequest->getParams()); $front->setRequest($nextRequest); $front->setResponse($myResponse); $responseStack[] = $front->dispatch($nextRequest, $myResponse); } while ($i--); $front->returnResponse(false); $bodies = array(); for ($i = 0, $len = count($responseStack); $i < $len; $i++) { $bodies[] = $responseStack[$i]->getBody(); } $body = implode(',', $bodies); $response->setBody('[' . $body . ']'); }
/** * Route to APImodule * @param \Zend_Controller_Front $front */ private function routeToApi(\Zend_Controller_Front $front) { $errorPlugin = new \Zend_Controller_Plugin_ErrorHandler(); $errorPlugin->setErrorHandlerController(BaseRouter::DEFAULT_ERROR_CONTROLLER); $errorPlugin->setErrorHandlerAction(BaseRouter::DEFAULT_ERROR_ACTION); $errorPlugin->setErrorHandlerModule(ApiRouter::API_MODULE); $front->setParam('noViewRenderer', true); $front->setRequest(new ApiRequest())->setRouter(new ApiRouter())->registerPlugin($errorPlugin); }