Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

MINOR Removed reliance of sapphire/admin unit tests on SiteTree and C…

…MSMain
  • Loading branch information...
commit 95dcc74c1098a5274e26f66ced98e201287d57a8 1 parent 9d742f0
Ingo Schommer chillu authored
32 admin/tests/CMSMenuTest.php
View
@@ -13,13 +13,13 @@ public function testBasicMenuHandling() {
$this->assertTrue((empty($menuItems)), 'Menu can be cleared');
// Add a controller to the menu and check it is as expected
- CMSMenu::add_controller('CMSMain');
+ CMSMenu::add_controller('CMSMenuTest_LeftAndMainController');
$menuItems = CMSMenu::get_menu_items();
- $menuItem = $menuItems['CMSMain'];
+ $menuItem = $menuItems['CMSMenuTest_LeftAndMainController'];
$this->assertType('CMSMenuItem', $menuItem, 'Controller menu item is of class CMSMenuItem');
- $this->assertEquals($menuItem->url, singleton('CMSMain')->Link(), 'Controller menu item has the correct link');
- $this->assertEquals($menuItem->controller, 'CMSMain', 'Controller menu item has the correct controller class');
- $this->assertEquals($menuItem->priority, singleton('CMSMain')->stat('menu_priority'), 'Controller menu item has the correct priority');
+ $this->assertEquals($menuItem->url, singleton('CMSMenuTest_LeftAndMainController')->Link(), 'Controller menu item has the correct link');
+ $this->assertEquals($menuItem->controller, 'CMSMenuTest_LeftAndMainController', 'Controller menu item has the correct controller class');
+ $this->assertEquals($menuItem->priority, singleton('CMSMenuTest_LeftAndMainController')->stat('menu_priority'), 'Controller menu item has the correct priority');
CMSMenu::clear_menu();
// Add a link to the menu
@@ -38,10 +38,10 @@ public function testBasicMenuHandling() {
public function testCmsClassDetection() {
// Get CMS classes and check that:
- // 1.) CMSMain is included
+ // 1.) SecurityAdmin is included
// 2.) LeftAndMain & ModelAdmin are excluded
$cmsClasses = CMSMenu::get_cms_classes();
- $this->assertContains('CMSMain', $cmsClasses, 'CMSMain included in valid CMS Classes');
+ $this->assertContains('SecurityAdmin', $cmsClasses, 'SecurityAdmin included in valid CMS Classes');
$this->assertNotContains('LeftAndMain', $cmsClasses, 'LeftAndMain not included in valid CMS Classes');
$this->assertNotContains('ModelAdmin', $cmsClasses, 'LeftAndMain not included in valid CMS Classes');
@@ -49,16 +49,16 @@ public function testCmsClassDetection() {
public function testAdvancedMenuHandling() {
- // Populate from CMS Classes, check for existance of CMSMain
+ // Populate from CMS Classes, check for existance of SecurityAdmin
CMSMenu::clear_menu();
CMSMenu::populate_menu();
- $menuItem = CMSMenu::get_menu_item('CMSMain');
- $this->assertType('CMSMenuItem', $menuItem, 'CMSMain menu item exists');
- $this->assertEquals($menuItem->url, singleton('CMSMain')->Link(), 'Menu item has the correct link');
- $this->assertEquals($menuItem->controller, 'CMSMain', 'Menu item has the correct controller class');
+ $menuItem = CMSMenu::get_menu_item('SecurityAdmin');
+ $this->assertType('CMSMenuItem', $menuItem, 'SecurityAdmin menu item exists');
+ $this->assertEquals($menuItem->url, singleton('SecurityAdmin')->Link(), 'Menu item has the correct link');
+ $this->assertEquals($menuItem->controller, 'SecurityAdmin', 'Menu item has the correct controller class');
$this->assertEquals(
$menuItem->priority,
- singleton('CMSMain')->stat('menu_priority'),
+ singleton('SecurityAdmin')->stat('menu_priority'),
'Menu item has the correct priority'
);
@@ -76,4 +76,10 @@ public function testAdvancedMenuHandling() {
}
}
+}
+
+class CMSMenuTest_LeftAndMainController extends LeftAndMain implements TestOnly {
+ static $url_segment = 'CMSMenuTest_LeftAndMainController';
+ static $menu_title = 'CMSMenuTest_LeftAndMainController';
+ static $menu_priority = 50;
}
83 admin/tests/LeftAndMainTest.php
View
@@ -4,7 +4,10 @@
* @subpackage tests
*/
class LeftAndMainTest extends FunctionalTest {
- static $fixture_file = 'cms/tests/CMSMainTest.yml';
+
+ static $fixture_file = 'sapphire/admin/tests/LeftAndMainTest.yml';
+
+ protected $extraDataObjects = array('LeftAndMainTest_Object');
function setUp() {
parent::setUp();
@@ -14,10 +17,14 @@ function setUp() {
CMSMenu::populate_menu();
}
+ /**
+ * Note: This test would typically rely on SiteTree and CMSMain, but is mocked by
+ * LeftAndMain_Controller and LeftAndMain_Object here to remove this dependency.
+ */
public function testSaveTreeNodeSorting() {
$this->loginWithPermission('ADMIN');
-
- $rootPages = DataObject::get('SiteTree', '"ParentID" = 0'); // implicitly sorted
+
+ $rootPages = DataObject::get('LeftAndMainTest_Object', '"ParentID" = 0'); // implicitly sorted
$siblingIDs = $rootPages->column('ID');
$page1 = $rootPages->offsetGet(0);
$page2 = $rootPages->offsetGet(1);
@@ -32,11 +39,11 @@ public function testSaveTreeNodeSorting() {
'ParentID' => 0
);
- $response = $this->post('admin/savetreenode', $data);
+ $response = $this->post('LeftAndMainTest_Controller/savetreenode', $data);
$this->assertEquals(200, $response->getStatusCode());
- $page1 = DataObject::get_by_id('SiteTree', $page1->ID, false);
- $page2 = DataObject::get_by_id('SiteTree', $page2->ID, false);
- $page3 = DataObject::get_by_id('SiteTree', $page3->ID, false);
+ $page1 = DataObject::get_by_id('LeftAndMainTest_Object', $page1->ID, false);
+ $page2 = DataObject::get_by_id('LeftAndMainTest_Object', $page2->ID, false);
+ $page3 = DataObject::get_by_id('LeftAndMainTest_Object', $page3->ID, false);
$this->assertEquals(2, $page1->Sort, 'Page1 is sorted after Page2');
$this->assertEquals(1, $page2->Sort, 'Page2 is sorted before Page1');
@@ -46,11 +53,11 @@ public function testSaveTreeNodeSorting() {
public function testSaveTreeNodeParentID() {
$this->loginWithPermission('ADMIN');
- $page1 = $this->objFromFixture('Page', 'page1');
- $page2 = $this->objFromFixture('Page', 'page2');
- $page3 = $this->objFromFixture('Page', 'page3');
- $page31 = $this->objFromFixture('Page', 'page31');
- $page32 = $this->objFromFixture('Page', 'page32');
+ $page1 = $this->objFromFixture('LeftAndMainTest_Object', 'page1');
+ $page2 = $this->objFromFixture('LeftAndMainTest_Object', 'page2');
+ $page3 = $this->objFromFixture('LeftAndMainTest_Object', 'page3');
+ $page31 = $this->objFromFixture('LeftAndMainTest_Object', 'page31');
+ $page32 = $this->objFromFixture('LeftAndMainTest_Object', 'page32');
// Move page2 into page3, between page3.1 and page 3.2
$siblingIDs = array(
@@ -63,11 +70,11 @@ public function testSaveTreeNodeParentID() {
'ID' => $page2->ID,
'ParentID' => $page3->ID
);
- $response = $this->post('admin/savetreenode', $data);
+ $response = $this->post('LeftAndMainTest_Controller/savetreenode', $data);
$this->assertEquals(200, $response->getStatusCode());
- $page2 = DataObject::get_by_id('SiteTree', $page2->ID, false);
- $page31 = DataObject::get_by_id('SiteTree', $page31->ID, false);
- $page32 = DataObject::get_by_id('SiteTree', $page32->ID, false);
+ $page2 = DataObject::get_by_id('LeftAndMainTest_Object', $page2->ID, false);
+ $page31 = DataObject::get_by_id('LeftAndMainTest_Object', $page31->ID, false);
+ $page32 = DataObject::get_by_id('LeftAndMainTest_Object', $page32->ID, false);
$this->assertEquals($page3->ID, $page2->ParentID, 'Moved page gets new parent');
$this->assertEquals(1, $page31->Sort, 'Children pages before insertaion are unaffected');
@@ -101,7 +108,7 @@ public function testLeftAndMainSubclasses() {
$adminuser = $this->objFromFixture('Member','admin');
$this->session()->inst_set('loggedInAs', $adminuser->ID);
- $menuItems = singleton('CMSMain')->MainMenu();
+ $menuItems = singleton('LeftAndMain')->MainMenu();
foreach($menuItems as $menuItem) {
$link = $menuItem->Link;
@@ -124,7 +131,7 @@ public function testLeftAndMainSubclasses() {
function testCanView() {
$adminuser = $this->objFromFixture('Member', 'admin');
- $assetsonlyuser = $this->objFromFixture('Member', 'assetsonlyuser');
+ $securityonlyuser = $this->objFromFixture('Member', 'securityonlyuser');
$allcmssectionsuser = $this->objFromFixture('Member', 'allcmssectionsuser');
// anonymous user
@@ -137,21 +144,21 @@ function testCanView() {
);
// restricted cms user
- $this->session()->inst_set('loggedInAs', $assetsonlyuser->ID);
+ $this->session()->inst_set('loggedInAs', $securityonlyuser->ID);
$menuItems = singleton('LeftAndMain')->MainMenu();
$this->assertEquals(
$menuItems->column('Code'),
- array('AssetAdmin','Help'),
+ array('SecurityAdmin','Help'),
'Groups with limited access can only access the interfaces they have permissions for'
);
// all cms sections user
$this->session()->inst_set('loggedInAs', $allcmssectionsuser->ID);
$menuItems = singleton('LeftAndMain')->MainMenu();
- $requiredSections = array('CMSMain','AssetAdmin','SecurityAdmin','Help');
- $this->assertEquals(
- array_diff($requiredSections, $menuItems->column('Code')),
- array(),
+ $this->assertContains('SecurityAdmin', $menuItems->column('Code'),
+ 'Group with CMS_ACCESS_LeftAndMain permission can access all sections'
+ );
+ $this->assertContains('Help', $menuItems->column('Code'),
'Group with CMS_ACCESS_LeftAndMain permission can access all sections'
);
@@ -159,14 +166,9 @@ function testCanView() {
$this->session()->inst_set('loggedInAs', $adminuser->ID);
$menuItems = singleton('LeftAndMain')->MainMenu();
$this->assertContains(
- 'CMSMain',
+ 'SecurityAdmin',
$menuItems->column('Code'),
- 'Administrators can access CMS'
- );
- $this->assertContains(
- 'AssetAdmin',
- $menuItems->column('Code'),
- 'Administrators can access Assets'
+ 'Administrators can access Security Admin'
);
$this->session()->inst_set('loggedInAs', null);
@@ -174,3 +176,22 @@ function testCanView() {
}
+class LeftAndMainTest_Controller extends LeftAndMain implements TestOnly {
+ protected $template = 'BlankPage';
+
+ static $tree_class = 'LeftAndMainTest_Object';
+}
+
+class LeftAndMainTest_Object extends DataObject implements TestOnly {
+
+ static $db = array(
+ 'Title' => 'Varchar',
+ 'URLSegment' => 'Varchar',
+ 'Sort' => 'Int',
+ );
+
+ static $extensions = array(
+ 'Hierarchy'
+ );
+
+}
37 admin/tests/LeftAndMainTest.yml
View
@@ -1,4 +1,4 @@
-Page:
+LeftAndMainTest_Object:
page1:
Title: Page 1
page2:
@@ -7,10 +7,10 @@ Page:
Title: Page 3
page31:
Title: Page 3.1
- Parent: =>Page.page3
+ Parent: =>LeftAndMainTest_Object.page3
page32:
Title: Page 3.2
- Parent: =>Page.page3
+ Parent: =>LeftAndMainTest_Object.page3
page4:
Title: Page 4
page5:
@@ -65,8 +65,8 @@ Group:
Title: Administrators
empty:
Title: Empty Group
- assetsonly:
- Title: assetsonly
+ securityonly:
+ Title: securityonly
allcmssections:
Title: allcmssections
rooteditusers:
@@ -76,9 +76,9 @@ Member:
Email: admin@example.com
Password: ZXXlkwecxz2390232233
Groups: =>Group.admin
- assetsonlyuser:
- Email: assetsonlyuser@test.com
- Groups: =>Group.assetsonly
+ securityonlyuser:
+ Email: securityonlyuser@test.com
+ Groups: =>Group.securityonly
allcmssectionsuser:
Email: allcmssectionsuser@test.com
Groups: =>Group.allcmssections
@@ -89,25 +89,12 @@ Permission:
admin:
Code: ADMIN
GroupID: =>Group.admin
- assetsonly:
- Code: CMS_ACCESS_AssetAdmin
- GroupID: =>Group.assetsonly
+ securityonly:
+ Code: CMS_ACCESS_SecurityAdmin
+ GroupID: =>Group.securityonly
allcmssections:
Code: CMS_ACCESS_LeftAndMain
GroupID: =>Group.allcmssections
allcmssections2:
Code: CMS_ACCESS_LeftAndMain
- GroupID: =>Group.rooteditusers
-SiteConfig:
- siteconfig1:
- EditorGroups: =>Group.rooteditusers
- CanCreateTopLevelType: 'OnlyTheseUsers'
-SiteConfig_CreateTopLevelGroups:
- createtoplevelgroups1:
- SiteConfigID: =>SiteConfig.siteconfig1
- GroupID: =>Group.rooteditusers
-RedirectorPage:
- page5:
- Title: Page 5
- RedirectionType: External
- ExternalURL: http://www.google.com
+ GroupID: =>Group.rooteditusers
5 admin/tests/SecurityAdminTest.php
View
@@ -4,8 +4,11 @@
* @subpackage tests
*/
class SecurityAdminTest extends FunctionalTest {
+
static $fixture_file = 'sapphire/admin/tests/LeftAndMainTest.yml';
+ protected $extraDataObjects = array('LeftAndMainTest_Object');
+
function testGroupExport() {
$this->session()->inst_set('loggedInAs', $this->idFromFixture('Member', 'admin'));
@@ -70,7 +73,7 @@ function testPermissionFieldRespectsHiddenPermissions() {
$response = $this->get('admin/security/show/' . $group->ID);
$this->assertContains(
- 'CMS_ACCESS_CMSMain',
+ 'CMS_ACCESS_SecurityAdmin',
$response->getBody()
);
$this->assertNotContains(
11 tests/ClassInfoTest.php
View
@@ -56,17 +56,20 @@ public function testBaseDataClass() {
* @covers ClassInfo::ancestry()
*/
public function testAncestry() {
- $ancestry = ClassInfo::ancestry('SiteTree');
+ $ancestry = ClassInfo::ancestry('ClassInfoTest_ChildClass');
$expect = ArrayLib::valuekey(array(
'Object',
'ViewableData',
'DataObject',
- 'SiteTree'
+ 'ClassInfoTest_BaseClass',
+ 'ClassInfoTest_ChildClass',
));
$this->assertEquals($expect, $ancestry);
- $ancestry = ClassInfo::ancestry('SiteTree', true);
- $this->assertEquals(array('SiteTree' => 'SiteTree'), $ancestry);
+ $ancestry = ClassInfo::ancestry('ClassInfoTest_ChildClass', true);
+ $this->assertEquals(array('ClassInfoTest_BaseClass' => 'ClassInfoTest_BaseClass'), $ancestry,
+ '$tablesOnly option excludes memory-only inheritance classes'
+ );
$this->setExpectedException('Exception');
ClassInfo::ancestry(42);
16 tests/forms/TableFieldTest.php
View
@@ -39,8 +39,8 @@ function testAdd() {
$tableField->setValue(array(
'new' => array(
'Code' => array(
- 'CMS_ACCESS_CMSMain',
- 'CMS_ACCESS_AssetAdmin',
+ 'CustomPerm1',
+ 'CustomPerm2',
),
'Arg' => array(
'1',
@@ -53,8 +53,8 @@ function testAdd() {
// Let's check that the 2 permissions entries have been saved
$permissions = $group->Permissions()->toDropdownMap('Arg', 'Code');
$this->assertEquals(array(
- 1 => 'CMS_ACCESS_CMSMain',
- 2 => 'CMS_ACCESS_AssetAdmin',
+ 1 => 'CustomPerm1',
+ 2 => 'CustomPerm2',
), $permissions);
@@ -65,7 +65,7 @@ function testAdd() {
}
$value['new'] = array(
'Code' => array(
- 'CMS_ACCESS_NewsletterAdmin',
+ 'CustomPerm3',
),
'Arg' => array(
'3',
@@ -77,9 +77,9 @@ function testAdd() {
// Let's check that the 2 existing permissions entries, and the 1 new one, have been saved
$permissions = $group->Permissions()->toDropdownMap('Arg', 'Code');
$this->assertEquals(array(
- 1 => 'CMS_ACCESS_CMSMain',
- 2 => 'CMS_ACCESS_AssetAdmin',
- 3 => 'CMS_ACCESS_NewsletterAdmin',
+ 1 => 'CustomPerm1',
+ 2 => 'CustomPerm2',
+ 3 => 'CustomPerm3',
), $permissions);
}
6 tests/security/PermissionTest.php
View
@@ -20,14 +20,14 @@ function testDirectlyAppliedPermissions() {
function testPermissionAreInheritedFromOneRole() {
$member = $this->objFromFixture('Member', 'author');
- $this->assertTrue(Permission::checkMember($member, "CMS_ACCESS_CMSMain"));
+ $this->assertTrue(Permission::checkMember($member, "CMS_ACCESS_MyAdmin"));
$this->assertTrue(Permission::checkMember($member, "CMS_ACCESS_AssetAdmin"));
$this->assertFalse(Permission::checkMember($member, "CMS_ACCESS_SecurityAdmin"));
}
function testPermissionAreInheritedFromMultipleRoles() {
$member = $this->objFromFixture('Member', 'access');
- $this->assertTrue(Permission::checkMember($member, "CMS_ACCESS_CMSMain"));
+ $this->assertTrue(Permission::checkMember($member, "CMS_ACCESS_MyAdmin"));
$this->assertTrue(Permission::checkMember($member, "CMS_ACCESS_AssetAdmin"));
$this->assertTrue(Permission::checkMember($member, "CMS_ACCESS_SecurityAdmin"));
$this->assertTrue(Permission::checkMember($member, "EDIT_PERMISSIONS"));
@@ -41,7 +41,7 @@ function testRolesAndPermissionsFromParentGroupsAreInherited() {
$this->assertTrue(Permission::checkMember($member, "SITETREE_EDIT_ALL"));
// Check that roles from parent groups are there
- $this->assertTrue(Permission::checkMember($member, "CMS_ACCESS_CMSMain"));
+ $this->assertTrue(Permission::checkMember($member, "CMS_ACCESS_MyAdmin"));
$this->assertTrue(Permission::checkMember($member, "CMS_ACCESS_AssetAdmin"));
// Check that permissions from parent groups are there
2  tests/security/PermissionTest.yml
View
@@ -7,7 +7,7 @@ PermissionRole:
PermissionRoleCode:
author1:
Role: =>PermissionRole.author
- Code: CMS_ACCESS_CMSMain
+ Code: CMS_ACCESS_MyAdmin
author2:
Role: =>PermissionRole.author
Code: CMS_ACCESS_AssetAdmin
Please sign in to comment.
Something went wrong with that request. Please try again.