function testPageMemberRetrievalFunctions() { $sc = SiteConfig::current_site_config(); $sc->CanPublishType = 'OnlyTheseUsers'; $sc->PublisherGroups()->removeAll(); $sc->PublisherGroups()->add($this->objFromFixture('Group', 'customauthorsgroup')); $sc->write(); $sc->CanApproveType = 'OnlyTheseUsers'; $sc->ApproverGroups()->removeAll(); $sc->ApproverGroups()->add($this->objFromFixture('Group', 'customauthorsgroup')); $sc->write(); $page = new Page(); // Test inherit $page->CanPublishType = 'Inherit'; $compare1 = $page->PublisherMembers()->column('Email'); $compare2 = array('*****@*****.**', '*****@*****.**'); sort($compare1); sort($compare2); $this->assertEquals($compare1, $compare2); $page->CanApproveType = 'Inherit'; $compare1 = $page->ApproverMembers()->column('Email'); $compare2 = array('*****@*****.**', '*****@*****.**'); sort($compare1); sort($compare2); $this->assertEquals($compare1, $compare2); // Test specific groups $page->CanPublishType = 'OnlyTheseUsers'; $pEmails = $page->PublisherMembers()->column('Email'); $this->assertTrue(in_array(strtolower($pEmails[0]), array('*****@*****.**', '*****@*****.**')), 'With CanPublishType set to OnlyTheseUsers, but no groups set up, should return admins'); $page->PublisherGroups()->add($this->objFromFixture('Group', 'custompublishergroup')); $this->assertEquals($page->PublisherMembers()->column('Email'), array('*****@*****.**')); $page->CanApproveType = 'OnlyTheseUsers'; $aEmails = $page->ApproverMembers()->column('Email'); $this->assertTrue(in_array(strtolower($aEmails[0]), array('*****@*****.**', '*****@*****.**')), 'With CanApproveType set to OnlyTheseUsers, but no groups set up, should return admins'); $page->ApproverGroups()->add($this->objFromFixture('Group', 'custompublishergroup')); $this->assertEquals($page->ApproverMembers()->column('Email'), array('*****@*****.**')); $page->CanPublishType = 'Inherit'; $page->CanApproveType = 'Inherit'; $page->write(); // Test passthru methods $this->assertTrue($page->canPublish($this->objFromFixture('Member', 'customauthor'))); $this->assertTrue($page->canApprove($this->objFromFixture('Member', 'customauthor'))); $this->assertTrue($page->canRequestEdit($this->objFromFixture('Member', 'customauthor'))); // Test 'all' users $page->CanPublishType = 'LoggedInUsers'; $page->CanApproveType = 'LoggedInUsers'; $this->assertEquals(4, $page->PublisherMembers()->Count(), 'PublisherMembers returns the 4 users that have CMS access'); $this->assertEquals(4, $page->ApproverMembers()->Count(), 'ApproverMembers returns the 4 users that have CMS access'); }