/** * You aren't supposed to call this multiple times per test... * @param string $url The relative url (e.g. "/en/catalog/product/view/id/123") */ protected function load($url, $post = array()) { $request = Mage::app()->getRequest(); $request->setRequestUri($url); if ($post) { $request->setPost($post); $_SERVER['REQUEST_METHOD'] = 'POST'; } // real magic! $controller = new Mage_Core_Controller_Varien_Front(); $controller->init(); $request->setPathInfo()->setDispatched(false); if (!$request->isStraight()) { Mage::getModel('core/url_rewrite')->rewrite(); } $controller->rewrite(); $i = 0; while (!$request->isDispatched() && $i++ < 100) { foreach ($controller->getRouters() as $router) { if ($router->match($request)) { break; } } } if ($i > 100) { throw new Exception('Front controller reached 100 router match iterations'); } return $controller->getResponse(); }
/** * Overriden for getting rid * of initialization of routers for each test case * * (non-PHPdoc) * @see Mage_Core_Controller_Varien_Front::init() */ public function init() { if (!$this->_routers) { parent::init(); } return $this; }
/** * Initialize application front controller * * @return Mage_Core_Model_App */ protected function _initFrontController() { $this->_frontController = new Mage_Core_Controller_Varien_Front(); Mage::register('controller', $this->_frontController); $this->_frontController->init(); return $this; }
/** * Resets initialized routers before front controller re-initialization * on test cases * * @see Mage_Core_Controller_Varien_Front::init() */ public function init() { if ($this->_routers) { $this->_routers = array(); } return parent::init(); }
/** * @param string $sourcePath * @param string $resultPath * * @dataProvider applyRewritesDataProvider * @magentoConfigFixture global/rewrite/test_url/from /test\/(\w*)/ * @magentoConfigFixture global/rewrite/test_url/to new_test/$1/subdirectory * @magentoDataFixture Mage/Core/_files/url_rewrite.php * @magentoDbIsolation enabled */ public function testApplyRewrites($sourcePath, $resultPath) { /** @var $request Mage_Core_Controller_Request_Http */ $request = $this->_objectManager->create('Mage_Core_Controller_Request_Http'); $request->setPathInfo($sourcePath); $this->_model->applyRewrites($request); $this->assertEquals($resultPath, $request->getPathInfo()); }
public function testRewrite() { $route = $this->_model->getRequest()->getRouteName(); $controller = $this->_model->getRequest()->getControllerName(); $action = $this->_model->getRequest()->getActionName(); $this->_model->rewrite(); $this->assertEquals($route, $this->_model->getRequest()->getRouteName()); $this->assertEquals($controller, $this->_model->getRequest()->getControllerName()); $this->assertEquals($action, $this->_model->getRequest()->getActionName()); $this->markTestIncomplete('Requires an URL rewrite fixture.'); }
/** * Initialize application front controller * * @return Mage_Core_Model_App */ protected function _initFrontController() { $this->_frontController = new Mage_Core_Controller_Varien_Front(); Mage::register('controller', $this->_frontController); Varien_Profiler::start('mage::app::init_front_controller'); $this->_frontController->init(); Varien_Profiler::stop('mage::app::init_front_controller'); return $this; }
/** * Initialize application front controller * * @return Mage_Core_Model_App */ protected function _initFrontController() { $this->_frontController = new Mage_Core_Controller_Varien_Front(); Magento_Profiler::start('init_front_controller'); $this->_frontController->init(); Magento_Profiler::stop('init_front_controller'); return $this; }
/** * Rendering layout * * @param string $output * @return Mage_Core_Controller_Varien_Action */ public function renderLayout($output = '') { if ($this->getFlag('', 'no-renderLayout')) { return; } if ($this->_frontController->getNoRender()) { return; } Magento_Profiler::start('LAYOUT'); $this->_renderTitles(); Magento_Profiler::start('layout_render'); if ('' !== $output) { $this->getLayout()->addOutputElement($output); } Mage::dispatchEvent('controller_action_layout_render_before'); Mage::dispatchEvent('controller_action_layout_render_before_' . $this->getFullActionName()); $this->getLayout()->setDirectOutput(false); $output = $this->getLayout()->getOutput(); Mage::getSingleton('Mage_Core_Model_Translate_Inline')->processResponseBody($output); $this->getResponse()->appendBody($output); Magento_Profiler::stop('layout_render'); Magento_Profiler::stop('LAYOUT'); return $this; }
/** * Initialize application front controller * * @return Mage_Core_Model_App */ protected function _initFrontController() { AO::includeFile('Mage/Core/Controller/Varien/Front'); AO::includeFile('Mage/Core/Model/Session'); $this->_frontController = new Mage_Core_Controller_Varien_Front(); if (VPROF) { Varien_Profiler::start('mage::app::init_front_controller'); } $this->_frontController->init(); if (VPROF) { Varien_Profiler::stop('mage::app::init_front_controller'); } return $this; }