/** * testFullPageCachingDispatch method * * @dataProvider cacheActionProvider * @return void */ public function testFullPageCachingDispatch($url) { Configure::write('Cache.disable', false); Configure::write('Cache.check', true); Configure::write('debug', 2); Router::reload(); Router::connect('/', array('controller' => 'test_cached_pages', 'action' => 'index')); Router::connect('/:controller/:action/*'); App::build(array('View' => array(CAKE . 'Test' . DS . 'test_app' . DS . 'View' . DS)), App::RESET); $dispatcher = new TestDispatcher(); $request = new CakeRequest($url); $response = $this->getMock('CakeResponse', array('send')); $dispatcher->dispatch($request, $response); $out = $response->body(); Configure::write('Dispatcher.filters', array('CacheDispatcher')); $request = new CakeRequest($url); $response = $this->getMock('CakeResponse', array('send')); $dispatcher = new TestDispatcher(); $dispatcher->dispatch($request, $response); $cached = $response->body(); $cached = preg_replace('/<!--+[^<>]+-->/', '', $cached); $this->assertTextEquals($out, $cached); $filename = $this->_cachePath($request->here()); unlink($filename); }
/** * Tests that the Dispatcher does not return an empty action * * @return void * @access public */ function testTrailingSlash() { $_POST = array(); $_SERVER['PHP_SELF'] = '/cake/repo/branches/1.2.x.x/index.php'; Router::reload(); $Dispatcher = new TestDispatcher(); Router::connect('/myalias/:action/*', array('controller' => 'my_controller', 'action' => null)); $Dispatcher->base = false; $url = 'myalias/'; //Fails $controller = $Dispatcher->dispatch($url, array('return' => 1)); $result = $Dispatcher->parseParams($url); $this->assertEqual('index', $result['action']); $url = 'myalias'; //Passes $controller = $Dispatcher->dispatch($url, array('return' => 1)); $result = $Dispatcher->parseParams($url); $this->assertEqual('index', $result['action']); }
/** * testFullPageCachingDispatch method * * @dataProvider cacheActionProvider * @return void */ public function testFullPageCachingDispatch($url) { Configure::write('Cache.disable', false); Configure::write('Cache.check', true); Configure::write('debug', 2); Router::reload(); Router::connect('/', array('controller' => 'test_cached_pages', 'action' => 'index')); Router::connect('/:controller/:action/*'); App::build(array('View' => array(CAKE . 'Test' . DS . 'test_app' . DS . 'View' . DS)), true); $dispatcher = new TestDispatcher(); $request = new CakeRequest($url); $response = new CakeResponse(); ob_start(); $dispatcher->dispatch($request, $response); $out = ob_get_clean(); ob_start(); $dispatcher->cached($request->here()); $cached = ob_get_clean(); $result = str_replace(array("\t", "\r\n", "\n"), "", $out); $cached = preg_replace('/<!--+[^<>]+-->/', '', $cached); $expected = str_replace(array("\t", "\r\n", "\n"), "", $cached); $this->assertEquals($expected, $result); $filename = $this->__cachePath($request->here()); unlink($filename); }
/** * testFullPageCachingDispatch method * * @return void */ public function testFullPageCachingDispatch() { Configure::write('Cache.disable', false); Configure::write('Cache.check', true); Configure::write('debug', 2); $_POST = array(); $_SERVER['PHP_SELF'] = '/'; Router::reload(); Router::connect('/', array('controller' => 'test_cached_pages', 'action' => 'index')); App::build(array('views' => array(TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'views' . DS)), true); $dispatcher = new TestDispatcher(); $request = new CakeRequest('/'); ob_start(); $dispatcher->dispatch($request); $out = ob_get_clean(); ob_start(); $dispatcher->cached($request->here); $cached = ob_get_clean(); $result = str_replace(array("\t", "\r\n", "\n"), "", $out); $cached = preg_replace('/<!--+[^<>]+-->/', '', $cached); $expected = str_replace(array("\t", "\r\n", "\n"), "", $cached); $this->assertEqual($result, $expected); $filename = $this->__cachePath($request->here); unlink($filename); $request = new CakeRequest('test_cached_pages/index'); $_POST = array('slasher' => "Up in your's grill \\ '"); ob_start(); $dispatcher->dispatch($request); $out = ob_get_clean(); ob_start(); $dispatcher->cached($request->here); $cached = ob_get_clean(); $result = str_replace(array("\t", "\r\n", "\n"), "", $out); $cached = preg_replace('/<!--+[^<>]+-->/', '', $cached); $expected = str_replace(array("\t", "\r\n", "\n"), "", $cached); $this->assertEqual($result, $expected); $filename = $this->__cachePath($request->here); unlink($filename); $request = new CakeRequest('TestCachedPages/index'); ob_start(); $dispatcher->dispatch($request); $out = ob_get_clean(); ob_start(); $dispatcher->cached($request->here); $cached = ob_get_clean(); $result = str_replace(array("\t", "\r\n", "\n"), "", $out); $cached = preg_replace('/<!--+[^<>]+-->/', '', $cached); $expected = str_replace(array("\t", "\r\n", "\n"), "", $cached); $this->assertEqual($result, $expected); $filename = $this->__cachePath($request->here); unlink($filename); $request = new CakeRequest('TestCachedPages/test_nocache_tags'); ob_start(); $dispatcher->dispatch($request); $out = ob_get_clean(); ob_start(); $dispatcher->cached($request->here); $cached = ob_get_clean(); $result = str_replace(array("\t", "\r\n", "\n"), "", $out); $cached = preg_replace('/<!--+[^<>]+-->/', '', $cached); $expected = str_replace(array("\t", "\r\n", "\n"), "", $cached); $this->assertEqual($result, $expected); $filename = $this->__cachePath($request->here); unlink($filename); $request = new CakeRequest('test_cached_pages/view/param/param'); ob_start(); $dispatcher->dispatch($request); $out = ob_get_clean(); ob_start(); $dispatcher->cached($request->here); $cached = ob_get_clean(); $result = str_replace(array("\t", "\r\n", "\n"), "", $out); $cached = preg_replace('/<!--+[^<>]+-->/', '', $cached); $expected = str_replace(array("\t", "\r\n", "\n"), "", $cached); $this->assertEqual($result, $expected); $filename = $this->__cachePath($request->here); unlink($filename); $request = new CakeRequest('test_cached_pages/view/foo:bar/value:goo'); ob_start(); $dispatcher->dispatch($request); $out = ob_get_clean(); ob_start(); $dispatcher->cached($request->here); $cached = ob_get_clean(); $result = str_replace(array("\t", "\r\n", "\n"), "", $out); $cached = preg_replace('/<!--+[^<>]+-->/', '', $cached); $expected = str_replace(array("\t", "\r\n", "\n"), "", $cached); $this->assertEqual($result, $expected); $filename = $this->__cachePath($request->here); $this->assertTrue(file_exists($filename)); unlink($filename); }
class TestDispatcher extends AnewtURLDispatcher { function __construct() { parent::__construct(); $this->add_route_regex('test', '#^regex$#'); $this->add_route_regex('test', '#^regex/(\\d)$#'); $this->add_route_regex('test', '#^regex/(?P<first>\\d+)/(?P<second>\\d+)$#'); $this->constraints = array('first' => '/^1$/', 'second' => '/^\\d+$/'); $this->add_route_url_parts('test', 'parts/foo/:bar'); $this->add_route_url_parts('test', '/parts/:first/:second/'); $this->add_route_url_parts('test', array('parts', ':first', ':second', ':third'), array('third' => '#^three$#')); $this->add_route_url_parts(array($this, 'command_test'), '/'); $this->add_route_url_parts(array('TestDispatcherCommand', 'external_test'), '/external'); } function command_test($parameters) { print_r($parameters); } } class TestDispatcherCommand { public static function external_test($parameters) { echo 'external command', NL; print_r($parameters); } } $d = new TestDispatcher(); $d->dispatch();