public function testExtendedCan() { $extensions = $this->removeExtensions(Object::get_extensions('SilverStripe\\Security\\Member')); $member = $this->objFromFixture('SilverStripe\\Security\\Member', 'test'); /* Normal behaviour is that you can't view a member unless canView() on an extension returns true */ $this->assertFalse($member->canView()); $this->assertFalse($member->canDelete()); $this->assertFalse($member->canEdit()); /* Apply a extension that allows viewing in any case (most likely the case for member profiles) */ Member::add_extension('MemberTest_ViewingAllowedExtension'); $member2 = $this->objFromFixture('SilverStripe\\Security\\Member', 'staffmember'); $this->assertTrue($member2->canView()); $this->assertFalse($member2->canDelete()); $this->assertFalse($member2->canEdit()); /* Apply a extension that denies viewing of the Member */ Member::remove_extension('MemberTest_ViewingAllowedExtension'); Member::add_extension('MemberTest_ViewingDeniedExtension'); $member3 = $this->objFromFixture('SilverStripe\\Security\\Member', 'managementmember'); $this->assertFalse($member3->canView()); $this->assertFalse($member3->canDelete()); $this->assertFalse($member3->canEdit()); /* Apply a extension that allows viewing and editing but denies deletion */ Member::remove_extension('MemberTest_ViewingDeniedExtension'); Member::add_extension('MemberTest_EditingAllowedDeletingDeniedExtension'); $member4 = $this->objFromFixture('SilverStripe\\Security\\Member', 'accountingmember'); $this->assertTrue($member4->canView()); $this->assertFalse($member4->canDelete()); $this->assertTrue($member4->canEdit()); Member::remove_extension('MemberTest_EditingAllowedDeletingDeniedExtension'); $this->addExtensions($extensions); }
public function testGetExtensions() { $this->assertEquals(Object::get_extensions('ObjectTest_ExtensionTest'), array('oBjEcTTEST_ExtendTest1', "ObjectTest_ExtendTest2")); $this->assertEquals(Object::get_extensions('ObjectTest_ExtensionTest', true), array('oBjEcTTEST_ExtendTest1', "ObjectTest_ExtendTest2('FOO', 'BAR')")); $inst = new ObjectTest_ExtensionTest(); $extensions = $inst->getExtensionInstances(); $this->assertEquals(count($extensions), 2); $this->assertInstanceOf('ObjectTest_ExtendTest1', $extensions['ObjectTest_ExtendTest1']); $this->assertInstanceOf('ObjectTest_ExtendTest2', $extensions['ObjectTest_ExtendTest2']); $this->assertInstanceOf('ObjectTest_ExtendTest1', $inst->getExtensionInstance('ObjectTest_ExtendTest1')); $this->assertInstanceOf('ObjectTest_ExtendTest2', $inst->getExtensionInstance('ObjectTest_ExtendTest2')); }