- <?php
- /**
- * Test caching of content requests.
- *
- * @copyright 2011 Perforce Software. All rights reserved.
- * @license Please see LICENSE.txt in top-level folder of this distribution.
- * @version <release>/<patch>
- */
- class Content_Test_ActionCacheTest extends ModuleControllerTest
- {
- /**
- * Extend parent to pass in bootstrap options enabling the
- * page cache for this test.
- */
- public function setUp()
- {
- parent::setUp('production');
- }
-
- /**
- * Verify a page request is cached on initial request.
- */
- public function testAnonymousCacheMiss()
- {
- $cacheKey = 'action_6666cd76f96956469e7be39d750cc7d9';
-
- $this->assertSame(
- 0,
- count(P4Cms_Cache::getCache('page')->getIds()),
- 'Expected no IDs in page cache intially'
- );
-
- $this->dispatch('/');
- ob_end_flush();
-
- $this->assertModule('content', 'Last module run should be content module.');
- $this->assertController('index', 'Expected controller');
- $this->assertAction('index', 'Expected action');
-
- // check that output looks correct.
- $this->assertQueryContentContains(
- '#content p',
- 'This site does not contain any content.',
- 'Expect the correct title.'
- );
-
- // verify we cached the output
- $this->assertTrue(
- P4Cms_Cache::load($cacheKey, 'page') !== false,
- 'Expected page cache to exist post dispatch'
- );
-
- $this->assertSame(
- 2,
- count(P4Cms_Cache::getCache('page')->getIds()),
- 'Expected 2 entries in page cache post request'
- );
- }
-
- /**
- * Verify a page request is not cached for authenticated user.
- */
- public function testAuthenticatedCacheMiss()
- {
- $this->utility->impersonate('administrator');
- P4Cms_Cache::getCache('page')->setUsername('administrator');
-
- // a cookie must be present for caching to assume we have a
- // session active; add one.
- $_COOKIE['random'] = 'value';
-
- // verify we have the right key by checking pre/post flush
- $this->assertSame(
- 0,
- count(P4Cms_Cache::getCache('page')->getIds()),
- 'Expected no IDs in page cache at start'
- );
-
- $this->dispatch('/');
- ob_end_flush();
-
- $this->assertModule('content', 'Last module run should be content module.');
- $this->assertController('index', 'Expected controller');
- $this->assertAction('index', 'Expected action');
-
- // check that output looks correct.
- $this->assertQueryContentContains(
- '#content p',
- 'This site does not contain any content.',
- 'Expect the correct title.'
- );
-
- // verify no caching occured
- $this->assertSame(
- 0,
- count(P4Cms_Cache::getCache('page')->getIds()),
- 'Expected page cache to be empty post-authenticated dispatch'
- );
- }
-
- /**
- * Verify an image request is cached for anonymous.
- */
- public function testAuthenticatedCacheHit()
- {
- $this->utility->impersonate('administrator');
- P4Cms_Cache::getCache('page')->setUsername('administrator');
-
- // a cookie must be present for caching to assume we have a
- // session active; add one.
- $_COOKIE['random'] = 'value';
-
- // end the current caching as it would die if it hits
- ob_end_flush();
-
- $this->assertSame(
- 0,
- count(P4Cms_Cache::getCache('page')->getIds()),
- 'Expected page cache to be empty'
- );
-
-
- // get an entry with an image setup
- $type = new P4Cms_Content_Type;
- $type->setId('test-type-w-file')
- ->setLabel('Test Type')
- ->setElements(
- array(
- "title" => array(
- "type" => "text",
- "options" => array("label" => "Title", "required" => true)
- ),
- "name" => array(
- "type" => "file",
- "options" => array("label" => "File")
- )
- )
- )
- ->setValue('icon', file_get_contents(TEST_ASSETS_PATH . "/images/content-type-icon.png"))
- ->setFieldMetadata('icon', array("mimeType" => "image/png"))
- ->setValue('group', 'test2')
- ->save();
- $entry = new P4Cms_Content;
- $entry->setId('test867-5309')
- ->setContentType('test-type-w-file')
- ->setValue('title', 'Test Image')
- ->setValue('file', 'test image content')
- ->setFieldMetadata(
- 'file',
- array('filename' => 'image.jpg', 'mimeType' => 'image/jpg')
- )
- ->save();
-
-
- // restart caching, pass doNotDie to allow us to actually test
- $_SERVER['REQUEST_URI'] = '/content/image/id/test867-5309';
- $pageCache = P4Cms_Cache::getCache('page');
- $pageCache->addIgnoredSessionVariable('Zend_Auth')
- ->addIgnoredSessionVariable('Forms[csrfToken]')
- ->start(null, true);
-
- $this->request->setParam('id', 'test867-5309');
- $this->dispatch('/content/image/');
- $this->assertModule('content', 'Expected module.');
- $this->assertController('index', 'Expected controller');
- $this->assertAction('image', 'Expected action');
-
- // ensure content delivered.
- $this->assertSame(
- $this->response->getBody(),
- "test image content"
- );
-
- ob_end_clean();
-
- // verify caching occured
- $this->assertSame(
- 2,
- count(P4Cms_Cache::getCache('page')->getIds()),
- 'Expected page cache to be populated post-authenticated dispatch'
- );
- }
- }
# |
Change |
User |
Description |
Committed |
|
#1
|
16170 |
perforce_software |
Move Chronicle files to follow new path scheme for branching. |
10 years ago
|
|
//guest/perforce_software/chronicle/application/content/tests/ActionCacheTest.php |
#1
|
8972 |
Matt Attaway |
Initial add of the Chronicle source code |
11 years ago
|
|