/lib/vendor/symfony/test/functional/cacheTest.php
https://github.com/makerlabs/Symfohub · PHP · 513 lines · 370 code · 95 blank · 48 comment · 4 complexity · f352a62cb9a3a6da081b7c44cf75aa7f MD5 · raw file
- <?php
- /*
- * This file is part of the symfony package.
- * (c) 2004-2006 Fabien Potencier <fabien.potencier@symfony-project.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- $app = 'cache';
- if (!include(dirname(__FILE__).'/../bootstrap/functional.php'))
- {
- return;
- }
- class myTestBrowser extends sfTestBrowser
- {
- function checkResponseContent($content, $message)
- {
- $this->test()->ok($this->getResponse()->getContent() == $content, $message);
- return $this;
- }
- function getMultiAction($parameter = null)
- {
- return $this->
- get('/cache/multi'.(null !== $parameter ? '/param/'.$parameter : ''))->
- with('request')->begin()->
- isParameter('module', 'cache')->
- isParameter('action', 'multi')->
- end()->
- with('response')->begin()->
- isStatusCode(200)->
- // partials
- checkElement('#partial .partial')->
- // contextual partials
- checkElement('#contextualPartial .contextualPartial')->
- checkElement('#contextualCacheablePartial .contextualCacheablePartial__'.$parameter)->
- checkElement('#contextualCacheablePartialVarParam .contextualCacheablePartial_varParam_'.$parameter)->
- // components
- checkElement('#component .component__componentParam_'.$parameter)->
- checkElement('#componentVarParam .component_varParam_componentParam_'.$parameter)->
- // contextual components
- checkElement('#contextualComponent .contextualComponent__componentParam_'.$parameter)->
- checkElement('#contextualComponentVarParam .contextualComponent_varParam_componentParam_'.$parameter)->
- checkElement('#contextualCacheableComponent .contextualCacheableComponent__componentParam_'.$parameter)->
- checkElement('#contextualCacheableComponentVarParam .contextualCacheableComponent_varParam_componentParam_'.$parameter)->
- end()->
- with('view_cache')->begin()->
- isCached(false)->
- // partial cache
- isUriCached('@sf_cache_partial?module=cache&action=_partial&sf_cache_key='.md5(serialize(array())), false)->
- isUriCached('@sf_cache_partial?module=cache&action=_partial&sf_cache_key='.md5(serialize(array('varParam' => 'varParam'))), false)->
- isUriCached('@sf_cache_partial?module=cache&action=_cacheablePartial&sf_cache_key='.md5(serialize(array())), true)->
- isUriCached('@sf_cache_partial?module=cache&action=_cacheablePartial&sf_cache_key='.md5(serialize(array('varParam' => 'varParam'))), true)->
- isUriCached('@sf_cache_partial?module=cache&action=_cacheablePartial&sf_cache_key='.md5(serialize(array('varParam' => 'another'))), false)->
- // contextual partial cache
- isUriCached('@sf_cache_partial?module=cache&action=_contextualPartial&sf_cache_key='.md5(serialize(array())), false)->
- isUriCached('@sf_cache_partial?module=cache&action=_contextualPartial&sf_cache_key='.md5(serialize(array('varParam' => 'varParam'))), false)->
- isUriCached('@sf_cache_partial?module=cache&action=_contextualCacheablePartial&sf_cache_key='.md5(serialize(array())), true)->
- isUriCached('@sf_cache_partial?module=cache&action=_contextualCacheablePartial&sf_cache_key='.md5(serialize(array('varParam' => 'varParam'))), true)->
- isUriCached('@sf_cache_partial?module=cache&action=_contextualCacheablePartial&sf_cache_key='.md5(serialize(array('varParam' => 'another'))), false)->
- // component cache
- isUriCached('@sf_cache_partial?module=cache&action=_component&sf_cache_key='.md5(serialize(array())), false)->
- isUriCached('@sf_cache_partial?module=cache&action=_component&sf_cache_key='.md5(serialize(array('varParam' => 'varParam'))), false)->
- isUriCached('@sf_cache_partial?module=cache&action=_cacheableComponent&sf_cache_key='.md5(serialize(array())), true)->
- isUriCached('@sf_cache_partial?module=cache&action=_cacheableComponent&sf_cache_key='.md5(serialize(array('varParam' => 'varParam'))), true)->
- isUriCached('@sf_cache_partial?module=cache&action=_cacheableComponent&sf_cache_key='.md5(serialize(array('varParam' => 'another'))), false)->
- // contextual component cache
- isUriCached('@sf_cache_partial?module=cache&action=_contextualComponent&sf_cache_key='.md5(serialize(array())), false)->
- isUriCached('@sf_cache_partial?module=cache&action=_contextualComponent&sf_cache_key='.md5(serialize(array('varParam' => 'varParam'))), false)->
- isUriCached('@sf_cache_partial?module=cache&action=_contextualCacheableComponent&sf_cache_key='.md5(serialize(array())), true)->
- isUriCached('@sf_cache_partial?module=cache&action=_contextualCacheableComponent&sf_cache_key='.md5(serialize(array('varParam' => 'varParam'))), true)->
- isUriCached('@sf_cache_partial?module=cache&action=_contextualCacheableComponent&sf_cache_key='.md5(serialize(array('varParam' => 'another'))), false)->
- end()
- ;
- }
- public function launch()
- {
- $b = $this;
- // default page is in cache (without layout)
- $b->
- get('/')->
- with('request')->begin()->
- isParameter('module', 'default')->
- isParameter('action', 'index')->
- end()->
- with('response')->begin()->
- isStatusCode(200)->
- checkElement('body', '/congratulations/i')->
- end()->
- with('view_cache')->isCached(true)
- ;
- $b->
- get('/nocache')->
- with('request')->begin()->
- isParameter('module', 'nocache')->
- isParameter('action', 'index')->
- end()->
- with('response')->begin()->
- isStatusCode(200)->
- checkElement('body', '/nocache/i')->
- end()->
- with('view_cache')->isCached(false)
- ;
- $b->
- get('/cache/page')->
- with('request')->begin()->
- isParameter('module', 'cache')->
- isParameter('action', 'page')->
- end()->
- with('response')->begin()->
- isStatusCode(200)->
- checkElement('body', '/page in cache/')->
- end()->
- with('view_cache')->isCached(true, true)
- ;
- $b->
- get('/cache/forward')->
- with('request')->begin()->
- isParameter('module', 'cache')->
- isParameter('action', 'forward')->
- end()->
- with('response')->begin()->
- isStatusCode(200)->
- checkElement('body', '/page in cache/')->
- end()->
- with('view_cache')->isCached(true)
- ;
- // remove all cache
- sfToolkit::clearDirectory(sfConfig::get('sf_app_cache_dir'));
- $b->
- getMultiAction()->
- getMultiAction('requestParam')->
- // component already in cache and not contextual, so request parameter is not there
- with('response')->begin()->
- checkElement('#cacheableComponent .cacheableComponent__componentParam_')->
- checkElement('#cacheableComponentVarParam .cacheableComponent_varParam_componentParam_')->
- checkElement('#cacheablePartial .cacheablePartial__')->
- checkElement('#cacheablePartialVarParam .cacheablePartial_varParam_')->
- end()
- ;
- // remove all cache
- sfToolkit::clearDirectory(sfConfig::get('sf_app_cache_dir'));
- $b->
- getMultiAction('requestParam')->
- with('response')->begin()->
- checkElement('#cacheableComponent .cacheableComponent__componentParam_requestParam')->
- checkElement('#cacheableComponentVarParam .cacheableComponent_varParam_componentParam_requestParam')->
- checkElement('#cacheablePartial .cacheablePartial__requestParam')->
- checkElement('#cacheablePartialVarParam .cacheablePartial_varParam_requestParam')->
- end()->
- getMultiAction()->
- with('response')->begin()->
- checkElement('#cacheableComponent .cacheableComponent__componentParam_requestParam')->
- checkElement('#cacheableComponentVarParam .cacheableComponent_varParam_componentParam_requestParam')->
- checkElement('#cacheablePartial .cacheablePartial__requestParam')->
- checkElement('#cacheablePartialVarParam .cacheablePartial_varParam_requestParam')->
- end()->
- getMultiAction('anotherRequestParam')->
- with('response')->begin()->
- checkElement('#cacheableComponent .cacheableComponent__componentParam_requestParam')->
- checkElement('#cacheableComponentVarParam .cacheableComponent_varParam_componentParam_requestParam')->
- checkElement('#cacheablePartial .cacheablePartial__requestParam')->
- checkElement('#cacheablePartialVarParam .cacheablePartial_varParam_requestParam')->
- end()
- ;
- // check contextual cache with another action
- $b->
- get('/cache/multiBis')->
- with('request')->begin()->
- isParameter('module', 'cache')->
- isParameter('action', 'multiBis')->
- end()->
- with('response')->begin()->
- isStatusCode(200)->
- // partials
- checkElement('#cacheablePartial .cacheablePartial__requestParam')->
- // contextual partials
- checkElement('#contextualCacheablePartial .contextualCacheablePartial__')->
- // components
- checkElement('#cacheableComponent .cacheableComponent__componentParam_requestParam')->
- // contextual components
- checkElement('#contextualCacheableComponent .contextualCacheableComponent__componentParam_')->
- end()->
- with('view_cache')->begin()->
- isCached(false)->
- // partial cache
- isUriCached('@sf_cache_partial?module=cache&action=_cacheablePartial&sf_cache_key='.md5(serialize(array())), true)->
- // contextual partial cache
- isUriCached('@sf_cache_partial?module=cache&action=_contextualCacheableComponent&sf_cache_key='.md5(serialize(array())), true)->
- // component cache
- isUriCached('@sf_cache_partial?module=cache&action=_cacheableComponent&sf_cache_key='.md5(serialize(array())), true)->
- // contextual component cache
- isUriCached('@sf_cache_partial?module=cache&action=_contextualCacheableComponent&sf_cache_key='.md5(serialize(array())), true)->
- end()
- ;
- // remove all cache
- sfToolkit::clearDirectory(sfConfig::get('sf_app_cache_dir'));
- // check user supplied cache key for partials and components
- $b->
- get('/cache/specificCacheKey')->
- with('request')->begin()->
- isParameter('module', 'cache')->
- isParameter('action', 'specificCacheKey')->
- end()->
- with('response')->isStatusCode(200)->
- with('view_cache')->begin(200)->
- isCached(false)->
- // partial cache
- isUriCached('@sf_cache_partial?module=cache&action=_cacheablePartial&sf_cache_key=cacheablePartial', true)->
- // contextual partial cache
- isUriCached('@sf_cache_partial?module=cache&action=_contextualCacheableComponent&sf_cache_key=contextualCacheableComponent', true)->
- // component cache
- isUriCached('@sf_cache_partial?module=cache&action=_cacheableComponent&sf_cache_key=cacheableComponent', true)->
- // contextual component cache
- isUriCached('@sf_cache_partial?module=cache&action=_contextualCacheableComponent&sf_cache_key=contextualCacheableComponent', true)->
- end()
- ;
- // check cache content for actions
- // remove all cache
- sfToolkit::clearDirectory(sfConfig::get('sf_app_cache_dir'));
- $b->
- get('/cache/action')->
- with('request')->begin()->
- isParameter('module', 'cache')->
- isParameter('action', 'action')->
- end()->
- with('response')->isStatusCode(200)->
- with('view_cache')->isCached(true)
- ;
- $b->test()->is(sfConfig::get('ACTION_EXECUTED', false), true, 'action is executed when not in cache');
- sfConfig::set('ACTION_EXECUTED', false);
- $response = $b->getResponse();
- $content1 = $response->getContent();
- $contentType1 = $response->getContentType();
- $headers1 = $response->getHttpHeaders();
- $b->
- get('/cache/action')->
- with('request')->begin()->
- isParameter('module', 'cache')->
- isParameter('action', 'action')->
- end()->
- with('response')->isStatusCode(200)->
- with('view_cache')->isCached(true)
- ;
- $b->test()->is(sfConfig::get('ACTION_EXECUTED', false), false, 'action is not executed when in cache');
- $response = $b->getResponse();
- $content2 = $response->getContent();
- $contentType2 = $response->getContentType();
- $headers2 = $response->getHttpHeaders();
- $b->test()->is($content1, $content2, 'response content is the same');
- $b->test()->is($contentType1, $contentType2, 'response content type is the same');
- $b->test()->is($headers1, $headers2, 'response http headers are the same');
- }
- }
- $b = new myTestBrowser();
- // non HTML cache
- $image = file_get_contents(dirname(__FILE__).'/fixtures/apps/cache/modules/cache/data/ok48.png');
- sfConfig::set('sf_web_debug', true);
- $b->
- get('/cache/imageWithLayoutCacheWithLayout')->
- with('view_cache')->isCached(true, true)->
- checkResponseContent($image, 'image (with layout/page cache) in cache is not decorated when web_debug is on')->
- get('/cache/imageWithLayoutCacheWithLayout')->
- with('view_cache')->isCached(true, true)->
- checkResponseContent($image, 'image (with layout/page cache) in cache is not decorated when web_debug is on')->
- get('/cache/imageWithLayoutCacheNoLayout')->
- with('view_cache')->isCached(true)->
- checkResponseContent($image, 'image (with layout/action cache) in cache is not decorated when web_debug is on')->
- get('/cache/imageWithLayoutCacheNoLayout')->
- with('view_cache')->isCached(true)->
- checkResponseContent($image, 'image (with layout/action cache) in cache is not decorated when web_debug is on')->
- get('/cache/imageNoLayoutCacheWithLayout')->
- with('view_cache')->isCached(true, true)->
- checkResponseContent($image, 'image (no layout/page cache) in cache is not decorated when web_debug is on')->
- get('/cache/imageNoLayoutCacheWithLayout')->
- with('view_cache')->isCached(true, true)->
- checkResponseContent($image, 'image (no layout/page cache) in cache is not decorated when web_debug is on')->
- get('/cache/imageNoLayoutCacheNoLayout')->
- with('view_cache')->isCached(true)->
- checkResponseContent($image, 'image (no layout/action cache) in cache is not decorated when web_debug is on')->
- get('/cache/imageNoLayoutCacheNoLayout')->
- with('view_cache')->isCached(true)->
- checkResponseContent($image, 'image (no layout/action cache) in cache is not decorated when web_debug is on')
- ;
- sfConfig::set('sf_web_debug', false);
- // check stylesheets, javascripts inclusions
- sfToolkit::clearDirectory(sfConfig::get('sf_app_cache_dir'));
- $b->
- get('/cache/multiBis')->
- with('request')->begin()->
- isParameter('module', 'cache')->
- isParameter('action', 'multiBis')->
- end()->
- with('response')->begin()->
- isStatusCode(200)->
- // the first time (no cache)
- checkElement('link[href*="/main_css"]')->
- checkElement('script[src*="/main_js"]')->
- checkElement('link[href*="/partial_css"]')->
- checkElement('script[src*="/partial_js"]')->
- checkElement('link[href*="/another_partial_css"]')->
- checkElement('script[src*="/another_partial_js"]')->
- checkElement('link[href*="/component_css"]')->
- checkElement('script[src*="/component_js"]')->
- checkElement('#partial_slot_content', 'Partial')->
- checkElement('#another_partial_slot_content', 'Another Partial')->
- checkElement('#component_slot_content', 'Component')->
- end()->
- get('/cache/multiBis')->
- with('response')->begin()->
- // when in cache
- checkElement('link[href*="/main_css"]')->
- checkElement('script[src*="/main_js"]')->
- checkElement('link[href*="/partial_css"]')->
- checkElement('script[src*="/partial_js"]')->
- checkElement('link[href*="/another_partial_css"]')->
- checkElement('script[src*="/another_partial_js"]')->
- checkElement('link[href*="/component_css"]')->
- checkElement('script[src*="/component_js"]')->
- checkElement('#partial_slot_content', 'Partial')->
- checkElement('#another_partial_slot_content', 'Another Partial')->
- checkElement('#component_slot_content', 'Component')->
- end()
- ;
- $b->
- get('/cache/partial')->
- with('request')->begin()->
- isParameter('module', 'cache')->
- isParameter('action', 'partial')->
- end()->
- with('response')->begin()->
- isStatusCode(200)->
- // only partial specific css and js are included
- checkElement('link[href*="/main_css"]', false)->
- checkElement('script[src*="/main_js"]', false)->
- checkElement('link[href*="/partial_css"]')->
- checkElement('script[src*="/partial_js"]')->
- checkElement('link[href*="/another_partial_css"]')->
- checkElement('script[src*="/another_partial_js"]')->
- checkElement('link[href*="/component_css"]', false)->
- checkElement('script[src*="/component_js"]', false)->
- checkElement('#partial_slot_content', 'Partial')->
- checkElement('#another_partial_slot_content', 'Another Partial')->
- checkElement('#component_slot_content', '')->
- end()->
- get('/cache/anotherPartial')->
- with('request')->begin()->
- isParameter('module', 'cache')->
- isParameter('action', 'anotherPartial')->
- end()->
- with('response')->begin()->
- isStatusCode(200)->
- // only partial specific css and js are included
- checkElement('link[href*="/main_css"]', false)->
- checkElement('script[src*="/main_js"]', false)->
- checkElement('link[href*="/partial_css"]', false)->
- checkElement('script[src*="/partial_js"]', false)->
- checkElement('link[href*="/another_partial_css"]')->
- checkElement('script[src*="/another_partial_js"]')->
- checkElement('link[href*="/component_css"]', false)->
- checkElement('script[src*="/component_js"]', false)->
- checkElement('#partial_slot_content', '')->
- checkElement('#another_partial_slot_content', 'Another Partial')->
- checkElement('#component_slot_content', '')->
- end()->
- get('/cache/component')->
- with('request')->begin()->
- isParameter('module', 'cache')->
- isParameter('action', 'component')->
- end()->
- with('response')->begin()->
- isStatusCode(200)->
- // only partial specific css and js are included
- checkElement('link[href*="/main_css"]', false)->
- checkElement('script[src*="/main_js"]', false)->
- checkElement('link[href*="/partial_css"]', false)->
- checkElement('script[src*="/partial_js"]', false)->
- checkElement('link[href*="/another_partial_css"]', false)->
- checkElement('script[src*="/another_partial_js"]', false)->
- checkElement('link[href*="/component_css"]')->
- checkElement('script[src*="/component_js"]')->
- checkElement('#partial_slot_content', '')->
- checkElement('#another_partial_slot_content', '')->
- checkElement('#component_slot_content', 'Component')->
- end()
- ;
- $b->get('/')
- ->with('view_cache')->isUriCached('cache/list', false)
- ->get('/cache/list')
- ->with('view_cache')->isUriCached('cache/list', true)
- // include GET parameters
- ->with('view_cache')->isUriCached('cache/list?page=10', false)
- ->get('/cache/list?page=10')
- ->with('response')->checkElement('#page', '10')
- ->with('view_cache')->isUriCached('cache/list?page=10', true)
- // include different GET parameters
- ->with('view_cache')->isUriCached('cache/list?page=20', false)
- ->get('/cache/list?page=20')
- ->with('response')->checkElement('#page', '20')
- ->with('view_cache')->isUriCached('cache/list?page=20', true)
- ;
- // check for 304 response
- sfConfig::set('LAST_MODIFIED', strtotime('2010-01-01'));
- $b->get('/cache/lastModifiedResponse')
- ->with('response')->isStatusCode(200)
- ;
- $b->setHttpHeader('If-Modified-Since', sfWebResponse::getDate(sfConfig::get('LAST_MODIFIED')))
- ->get('/cache/lastModifiedResponse')
- ->with('response')->isStatusCode(304)
- ;
- // test with sfFileCache class (default)
- $b->launch();
- // test with sfSQLiteCache class
- if (extension_loaded('SQLite') || extension_loaded('pdo_SQLite'))
- {
- sfConfig::set('sf_factory_view_cache', 'sfSQLiteCache');
- sfConfig::set('sf_factory_view_cache_parameters', array('database' => sfConfig::get('sf_template_cache_dir').DIRECTORY_SEPARATOR.'cache.db'));
- $b->launch();
- }