2008-04-06 05:38:27 +02:00
|
|
|
<?php
|
2008-06-15 15:33:53 +02:00
|
|
|
/**
|
|
|
|
* @package cms
|
|
|
|
* @subpackage tests
|
|
|
|
*/
|
2009-01-05 07:17:59 +01:00
|
|
|
class LeftAndMainTest extends FunctionalTest {
|
2008-11-21 02:11:49 +01:00
|
|
|
static $fixture_file = 'cms/tests/CMSMainTest.yml';
|
|
|
|
|
2009-01-05 07:17:59 +01:00
|
|
|
function setUp() {
|
|
|
|
parent::setUp();
|
|
|
|
|
|
|
|
// @todo fix controller stack problems and re-activate
|
|
|
|
//$this->autoFollowRedirection = false;
|
2009-05-06 08:37:45 +02:00
|
|
|
CMSMenu::populate_menu();
|
2009-01-05 07:17:59 +01:00
|
|
|
}
|
|
|
|
|
2008-11-21 02:11:49 +01:00
|
|
|
/**
|
|
|
|
* Check that all subclasses of leftandmain can be accessed
|
|
|
|
*/
|
|
|
|
public function testLeftAndMainSubclasses() {
|
2009-01-05 07:17:59 +01:00
|
|
|
$adminuser = $this->objFromFixture('Member','admin');
|
|
|
|
$this->session()->inst_set('loggedInAs', $adminuser->ID);
|
2008-11-21 02:11:49 +01:00
|
|
|
|
2009-01-05 07:17:59 +01:00
|
|
|
$menuItems = singleton('CMSMain')->MainMenu();
|
2008-11-21 02:11:49 +01:00
|
|
|
foreach($menuItems as $menuItem) {
|
|
|
|
$link = $menuItem->Link;
|
2009-01-05 07:17:59 +01:00
|
|
|
|
|
|
|
// don't test external links
|
2008-11-21 02:11:49 +01:00
|
|
|
if(preg_match('/^https?:\/\//',$link)) continue;
|
|
|
|
|
2009-01-05 07:17:59 +01:00
|
|
|
$response = $this->get($link);
|
|
|
|
|
API CHANGE: Renamed conflicting classes to have an "SS_" namespace, and renamed existing "SS" namespace to "SS_". The affected classes are: HTTPRequest, HTTPResponse, Query, Database, SSBacktrace, SSCli, SSDatetime, SSDatetimeTest, SSLog, SSLogTest, SSLogEmailWriter, SSLogErrorEmailFormatter, SSLogErrorFileFormatter, SSLogFileWriter and SSZendLog.
MINOR: Replaced usage of renamed classes with the new namespaced name.
From: Sam Minnee <sam@silverstripe.com>
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/cms/trunk@90076 467b73ca-7a2a-4603-9d3b-597d59a354a9
2009-10-26 04:06:42 +01:00
|
|
|
$this->assertType('SS_HTTPResponse', $response, "$link should return a response object");
|
2008-11-21 02:11:49 +01:00
|
|
|
$this->assertEquals(200, $response->getStatusCode(), "$link should return 200 status code");
|
|
|
|
// Check that a HTML page has been returned
|
|
|
|
$this->assertRegExp('/<html[^>]*>/i', $response->getBody(), "$link should contain <html> tag");
|
|
|
|
$this->assertRegExp('/<head[^>]*>/i', $response->getBody(), "$link should contain <head> tag");
|
|
|
|
$this->assertRegExp('/<body[^>]*>/i', $response->getBody(), "$link should contain <body> tag");
|
|
|
|
}
|
2009-01-05 07:17:59 +01:00
|
|
|
|
|
|
|
$this->session()->inst_set('loggedInAs', null);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
function testCanView() {
|
|
|
|
$adminuser = $this->objFromFixture('Member', 'admin');
|
|
|
|
$assetsonlyuser = $this->objFromFixture('Member', 'assetsonlyuser');
|
2010-04-12 10:44:29 +02:00
|
|
|
$allcmssectionsuser = $this->objFromFixture('Member', 'allcmssectionsuser');
|
2009-01-05 07:17:59 +01:00
|
|
|
|
|
|
|
// anonymous user
|
|
|
|
$this->session()->inst_set('loggedInAs', null);
|
|
|
|
$menuItems = singleton('LeftAndMain')->MainMenu();
|
|
|
|
$this->assertEquals(
|
|
|
|
$menuItems->column('Code'),
|
|
|
|
array(),
|
|
|
|
'Without valid login, members cant access any menu entries'
|
|
|
|
);
|
|
|
|
|
|
|
|
// restricted cms user
|
|
|
|
$this->session()->inst_set('loggedInAs', $assetsonlyuser->ID);
|
|
|
|
$menuItems = singleton('LeftAndMain')->MainMenu();
|
|
|
|
$this->assertEquals(
|
|
|
|
$menuItems->column('Code'),
|
|
|
|
array('AssetAdmin','Help'),
|
|
|
|
'Groups with limited access can only access the interfaces they have permissions for'
|
|
|
|
);
|
|
|
|
|
2010-04-12 10:44:29 +02:00
|
|
|
// all cms sections user
|
|
|
|
$this->session()->inst_set('loggedInAs', $allcmssectionsuser->ID);
|
|
|
|
$menuItems = singleton('LeftAndMain')->MainMenu();
|
|
|
|
$requiredSections = array('CMSMain','AssetAdmin','CommentAdmin','SecurityAdmin','Help');
|
|
|
|
$this->assertEquals(
|
|
|
|
array_diff($requiredSections, $menuItems->column('Code')),
|
|
|
|
array(),
|
|
|
|
'Group with CMS_ACCESS_LeftAndMain permission can access all sections'
|
|
|
|
);
|
|
|
|
|
2009-01-05 07:17:59 +01:00
|
|
|
// admin
|
|
|
|
$this->session()->inst_set('loggedInAs', $adminuser->ID);
|
|
|
|
$menuItems = singleton('LeftAndMain')->MainMenu();
|
|
|
|
$this->assertContains(
|
|
|
|
'CMSMain',
|
|
|
|
$menuItems->column('Code'),
|
|
|
|
'Administrators can access CMS'
|
|
|
|
);
|
|
|
|
$this->assertContains(
|
|
|
|
'AssetAdmin',
|
|
|
|
$menuItems->column('Code'),
|
|
|
|
'Administrators can access Assets'
|
|
|
|
);
|
|
|
|
|
|
|
|
$this->session()->inst_set('loggedInAs', null);
|
2008-11-21 02:11:49 +01:00
|
|
|
}
|
2008-04-06 05:38:27 +02:00
|
|
|
|
|
|
|
}
|
2008-11-21 02:11:49 +01:00
|
|
|
|