From 2595d655cbd2f5846c8c138ef0694a229e07a172 Mon Sep 17 00:00:00 2001 From: Damian Mooyman Date: Mon, 23 Mar 2015 14:35:52 +1300 Subject: [PATCH] Fix subsites to use correct permissions See http://www.silverstripe.org/software/download/security-releases/ss-2015-008-sitetree-creation-permission-vulnerability --- tests/SiteTreeSubsitesTest.php | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/tests/SiteTreeSubsitesTest.php b/tests/SiteTreeSubsitesTest.php index cdd120d..b687da5 100644 --- a/tests/SiteTreeSubsitesTest.php +++ b/tests/SiteTreeSubsitesTest.php @@ -8,6 +8,10 @@ class SiteTreeSubsitesTest extends BaseSubsiteTest { 'SiteTreeSubsitesTest_ClassA', 'SiteTreeSubsitesTest_ClassB' ); + + protected $illegalExtensions = array( + 'SiteTree' => array('Translatable') + ); function testPagesInDifferentSubsitesCanShareURLSegment() { $subsiteMain = $this->objFromFixture('Subsite', 'main'); @@ -129,7 +133,7 @@ class SiteTreeSubsitesTest extends BaseSubsiteTest { } function testPageTypesBlacklistInClassDropdown() { - Session::set("loggedInAs", null); + $this->logInWithPermission('CMS_ACCESS_CMSMain'); $s1 = $this->objFromFixture('Subsite','domaintest1'); $s2 = $this->objFromFixture('Subsite','domaintest2'); @@ -164,7 +168,7 @@ class SiteTreeSubsitesTest extends BaseSubsiteTest { } function testPageTypesBlacklistInCMSMain() { - Session::set("loggedInAs", null); + $this->logInWithPermission('CMS_ACCESS_CMSMain'); $cmsmain = new CMSMain(); @@ -175,16 +179,18 @@ class SiteTreeSubsitesTest extends BaseSubsiteTest { $s1->write(); Subsite::changeSubsite($s1); - $classes = $cmsmain->PageTypes()->column('ClassName'); - $this->assertNotContains('ErrorPage', $classes); - $this->assertNotContains('SiteTreeSubsitesTest_ClassA', $classes); - $this->assertContains('SiteTreeSubsitesTest_ClassB', $classes); - - Subsite::changeSubsite($s2); - $classes = $cmsmain->PageTypes()->column("ClassName"); + $hints = Convert::json2array($cmsmain->SiteTreeHints()); + $classes = $hints['Root']['disallowedChildren']; $this->assertContains('ErrorPage', $classes); $this->assertContains('SiteTreeSubsitesTest_ClassA', $classes); - $this->assertContains('SiteTreeSubsitesTest_ClassB', $classes); + $this->assertNotContains('SiteTreeSubsitesTest_ClassB', $classes); + + Subsite::changeSubsite($s2); + $hints = Convert::json2array($cmsmain->SiteTreeHints()); + $classes = $hints['Root']['disallowedChildren']; + $this->assertNotContains('ErrorPage', $classes); + $this->assertNotContains('SiteTreeSubsitesTest_ClassA', $classes); + $this->assertNotContains('SiteTreeSubsitesTest_ClassB', $classes); } }