/** * @covers AuthorizationPolicy */ public function testAuthorizationPolicy() { $policy = new AuthorizationPolicy('some message'); // Test advice. self::assertTrue($policy->hasAdvice(AUTHORIZATION_ADVICE_DENY_MESSAGE)); self::assertFalse($policy->hasAdvice(AUTHORIZATION_ADVICE_CALL_ON_DENY)); self::assertEquals('some message', $policy->getAdvice(AUTHORIZATION_ADVICE_DENY_MESSAGE)); self::assertNull($policy->getAdvice(AUTHORIZATION_ADVICE_CALL_ON_DENY)); // Test authorized context objects. self::assertFalse($policy->hasAuthorizedContextObject(ASSOC_TYPE_USER_GROUP)); $someContextObject = new DataObject(); $someContextObject->setData('test1', 'test1'); $policy->addAuthorizedContextObject(ASSOC_TYPE_USER_GROUP, $someContextObject); self::assertTrue($policy->hasAuthorizedContextObject(ASSOC_TYPE_USER_GROUP)); self::assertEquals($someContextObject, $policy->getAuthorizedContextObject(ASSOC_TYPE_USER_GROUP)); self::assertEquals(array(ASSOC_TYPE_USER_GROUP => $someContextObject), $policy->getAuthorizedContext()); // Test authorized context. $someOtherContextObject = new DataObject(); $someOtherContextObject->setData('test2', 'test2'); $authorizedContext = array(ASSOC_TYPE_USER_GROUP => $someOtherContextObject); $policy->setAuthorizedContext($authorizedContext); self::assertEquals($authorizedContext, $policy->getAuthorizedContext()); // Test default policies. self::assertTrue($policy->applies()); self::assertEquals(AUTHORIZATION_DENY, $policy->effect()); }
/** * @covers DataObject::setData * @covers DataObject::getData * @covers DataObject::getAllData */ public function testSetGetData() { // Set data with and without locale $this->dataObject->setData('testVar1', 'testVal1'); $this->dataObject->setData('testVar2', 'testVal2_US', 'en_US'); $this->dataObject->setData('testVar2', 'testVal2_DE', 'de_DE'); $expectedResult = array('testVar1' => 'testVal1', 'testVar2' => array('en_US' => 'testVal2_US', 'de_DE' => 'testVal2_DE')); self::assertEquals($expectedResult, $this->dataObject->getAllData()); self::assertEquals('testVal1', $this->dataObject->getData('testVar1')); // test for http://bugs.php.net/bug.php?id=29848 self::assertNull($this->dataObject->getData('testVar1', 'en_US')); self::assertEquals('testVal2_US', $this->dataObject->getData('testVar2', 'en_US')); // Unset a few values $this->dataObject->setData('testVar1', null); $this->dataObject->setData('testVar2', null, 'en_US'); $expectedResult = array('testVar2' => array('de_DE' => 'testVal2_DE')); self::assertEquals($expectedResult, $this->dataObject->getAllData()); // Make sure that un-setting a non-existent value doesn't hurt $this->dataObject->setData('testVar1', null); $this->dataObject->setData('testVar2', null, 'en_US'); self::assertEquals($expectedResult, $this->dataObject->getAllData()); // Make sure that getting a non-existent value doesn't hurt self::assertNull($this->dataObject->getData('testVar1')); self::assertNull($this->dataObject->getData('testVar1', 'en_US')); self::assertNull($this->dataObject->getData('testVar2', 'en_US')); // Make sure that unsetting the last translation will also kill the variable $this->dataObject->setData('testVar2', null, 'de_DE'); self::assertEquals(array(), $this->dataObject->getAllData()); // Test by-ref behaviour $testVal1 = 'testVal1'; $testVal2 = 'testVal2'; $this->dataObject->setData('testVar1', $testVal1); $this->dataObject->setData('testVar2', $testVal2, 'en_US'); $testVal1 = $testVal2 = 'something else'; $expectedResult = array('testVar1' => 'testVal1', 'testVar2' => array('en_US' => 'testVal2')); $result =& $this->dataObject->getAllData(); self::assertEquals($expectedResult, $result); // Should be returned by-ref: $testVal1 =& $this->dataObject->getData('testVar1'); $testVal2 =& $this->dataObject->getData('testVar2', 'en_US'); $testVal1 = $testVal2 = 'something else'; $expectedResult = array('testVar1' => 'something else', 'testVar2' => array('en_US' => 'something else')); $result =& $this->dataObject->getAllData(); self::assertEquals($expectedResult, $result); }
public function test_unsetData() { /* unset root */ $obj = new DataObject('data'); $this->assertEquals('data', $obj->getData()); $obj->unsetData(); $this->assertNull($obj->getData()); /* unset key in root array */ $obj->setKey('dataKey'); $obj->setOther('dataOther'); $this->assertEquals('dataKey', $obj->getKey()); $obj->unsetKey(); $this->assertNull($obj->getKey()); $this->assertEquals('dataOther', $obj->getOther()); /* unset by path */ $obj->setData('Other/Node', 'dataNode'); $this->assertEquals('dataNode', $obj->getData('/Other/Node')); $obj->unsetData('/Other/Node'); /* wrong path */ $obj->unsetData('/Other/WrongNode'); }