/** * testStaticAssets method * * @return void * @access public */ function testAssets() { 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->assertFalse($result); ob_start(); $Dispatcher->dispatch('theme/test_theme/pdfs'); $result = ob_get_clean(); $this->assertFalse($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->asset('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->asset('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->asset('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->asset('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->asset('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->asset('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->asset('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->asset('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->asset('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'); $Dispatcher->params = $Dispatcher->parseParams('test_plugin/css/theme_one.htc'); ob_start(); $Dispatcher->asset('test_plugin/css/unknown.extension'); $result = ob_get_clean(); $this->assertEqual('Testing a file with unknown extension to mime mapping.', $result); header('Content-type: text/html'); $Dispatcher->params = $Dispatcher->parseParams('test_plugin/css/theme_one.htc'); ob_start(); $Dispatcher->asset('test_plugin/css/theme_one.htc'); $result = ob_get_clean(); $this->assertEqual('htc file', $result); header('Content-type: text/html'); }
/** * test that asset filters work for theme and plugin assets * * @return void */ public function testAssetFilterForThemeAndPlugins() { $Dispatcher = new TestDispatcher(); $response = $this->getMock('CakeResponse', array('_sendHeader')); Configure::write('Asset.filter', array('js' => '', 'css' => '')); $this->assertTrue($Dispatcher->asset('theme/test_theme/ccss/cake.generic.css', $response)); $this->assertTrue($Dispatcher->asset('theme/test_theme/cjs/debug_kit.js', $response)); $this->assertTrue($Dispatcher->asset('test_plugin/ccss/cake.generic.css', $response)); $this->assertTrue($Dispatcher->asset('test_plugin/cjs/debug_kit.js', $response)); $this->assertFalse($Dispatcher->asset('css/ccss/debug_kit.css', $response)); $this->assertFalse($Dispatcher->asset('js/cjs/debug_kit.js', $response)); }