/** * 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 = new CakeResponse(); ob_start(); $dispatcher->dispatch($request, $response); $out = ob_get_clean(); ob_start(); $dispatcher->cached($request->here()); $cached = ob_get_clean(); $cached = preg_replace('/<!--+[^<>]+-->/', '', $cached); $this->assertTextEquals($cached, $out); $filename = $this->__cachePath($request->here()); unlink($filename); }
/** * Test full page caching with themes. * * @return void */ public function testFullPageCachingWithThemes() { Configure::write('Cache.disable', false); Configure::write('Cache.check', true); Configure::write('debug', 2); Router::reload(); Router::connect('/:controller/:action/*'); App::build(array('View' => array(CAKE . 'Test' . DS . 'test_app' . DS . 'View' . DS)), true); $dispatcher = new TestDispatcher(); $request = new CakeRequest('/test_cached_pages/themed'); $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->assertEqual($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); }
/** * testStaticAssets method * * @return void * @access public */ function testStaticAssets() { Router::reload(); App::build(array('plugins' => array(TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'plugins' . DS), 'vendors' => array(TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'vendors' . DS), 'views' => array(TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'views' . DS))); $Dispatcher = new TestDispatcher(); $debug = Configure::read('debug'); Configure::write('debug', 0); ob_start(); $Dispatcher->dispatch('theme/test_theme/../webroot/css/test_asset.css'); $result = ob_get_clean(); $this->assertEqual(null, $result); ob_start(); $Dispatcher->dispatch('theme/test_theme/flash/theme_test.swf'); $result = ob_get_clean(); $file = file_get_contents(TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'views' . DS . 'themed' . DS . 'test_theme' . DS . 'webroot' . DS . 'flash' . DS . 'theme_test.swf'); $this->assertEqual($file, $result); $this->assertEqual('this is just a test to load swf file from the theme.', $result); ob_start(); $Dispatcher->dispatch('theme/test_theme/pdfs/theme_test.pdf'); $result = ob_get_clean(); $file = file_get_contents(TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'views' . DS . 'themed' . DS . 'test_theme' . DS . 'webroot' . DS . 'pdfs' . DS . 'theme_test.pdf'); $this->assertEqual($file, $result); $this->assertEqual('this is just a test to load pdf file from the theme.', $result); ob_start(); $Dispatcher->dispatch('theme/test_theme/img/test.jpg'); $result = ob_get_clean(); $file = file_get_contents(TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'views' . DS . 'themed' . DS . 'test_theme' . DS . 'webroot' . DS . 'img' . DS . 'test.jpg'); $this->assertEqual($file, $result); $Dispatcher->params = $Dispatcher->parseParams('theme/test_theme/css/test_asset.css'); ob_start(); $Dispatcher->cached('theme/test_theme/css/test_asset.css'); $result = ob_get_clean(); $this->assertEqual('this is the test asset css file', $result); $Dispatcher->params = $Dispatcher->parseParams('theme/test_theme/js/theme.js'); ob_start(); $Dispatcher->cached('theme/test_theme/js/theme.js'); $result = ob_get_clean(); $this->assertEqual('root theme js file', $result); $Dispatcher->params = $Dispatcher->parseParams('theme/test_theme/js/one/theme_one.js'); ob_start(); $Dispatcher->cached('theme/test_theme/js/one/theme_one.js'); $result = ob_get_clean(); $this->assertEqual('nested theme js file', $result); ob_start(); $Dispatcher->dispatch('test_plugin/flash/plugin_test.swf'); $result = ob_get_clean(); $file = file_get_contents(TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'plugins' . DS . 'test_plugin' . DS . 'webroot' . DS . 'flash' . DS . 'plugin_test.swf'); $this->assertEqual($file, $result); $this->assertEqual('this is just a test to load swf file from the plugin.', $result); ob_start(); $Dispatcher->dispatch('test_plugin/pdfs/plugin_test.pdf'); $result = ob_get_clean(); $file = file_get_contents(TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'plugins' . DS . 'test_plugin' . DS . 'webroot' . DS . 'pdfs' . DS . 'plugin_test.pdf'); $this->assertEqual($file, $result); $this->assertEqual('this is just a test to load pdf file from the plugin.', $result); ob_start(); $Dispatcher->cached('test_plugin/js/test_plugin/test.js'); $result = ob_get_clean(); $this->assertEqual('alert("Test App");', $result); $Dispatcher->params = $Dispatcher->parseParams('test_plugin/js/test_plugin/test.js'); ob_start(); $Dispatcher->cached('test_plugin/js/test_plugin/test.js'); $result = ob_get_clean(); $this->assertEqual('alert("Test App");', $result); $Dispatcher->params = $Dispatcher->parseParams('test_plugin/css/test_plugin_asset.css'); ob_start(); $Dispatcher->cached('test_plugin/css/test_plugin_asset.css'); $result = ob_get_clean(); $this->assertEqual('this is the test plugin asset css file', $result); $Dispatcher->params = $Dispatcher->parseParams('test_plugin/img/cake.icon.gif'); ob_start(); $Dispatcher->cached('test_plugin/img/cake.icon.gif'); $result = ob_get_clean(); $file = file_get_contents(TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'plugins' . DS . 'test_plugin' . DS . 'webroot' . DS . 'img' . DS . 'cake.icon.gif'); $this->assertEqual($file, $result); $Dispatcher->params = $Dispatcher->parseParams('plugin_js/js/plugin_js.js'); ob_start(); $Dispatcher->cached('plugin_js/js/plugin_js.js'); $result = ob_get_clean(); $expected = "alert('win sauce');"; $this->assertEqual($result, $expected); $Dispatcher->params = $Dispatcher->parseParams('plugin_js/js/one/plugin_one.js'); ob_start(); $Dispatcher->cached('plugin_js/js/one/plugin_one.js'); $result = ob_get_clean(); $expected = "alert('plugin one nested js file');"; $this->assertEqual($result, $expected); Configure::write('debug', $debug); //reset the header content-type without page can render as plain text. header('Content-type: text/html'); }