17 import(
'lib.pkp.tests.classes.security.authorization.PolicyTestCase');
18 import(
'lib.pkp.classes.security.authorization.AuthorizationDecisionManager');
19 import(
'lib.pkp.classes.security.authorization.AuthorizationPolicy');
22 private $decisionManager;
24 protected function setUp() : void {
34 $mockPolicy = $this->getMockBuilder(AuthorizationPolicy::class)
35 ->setMethods(array(
'applies'))
37 $mockPolicy->expects($this->any())
39 ->will($this->returnValue(
false));
40 $this->decisionManager->addPolicy($mockPolicy);
43 self::assertEquals(AUTHORIZATION_DENY, $this->decisionManager->decide());
46 $this->decisionManager->setDecisionIfNoPolicyApplies(AUTHORIZATION_PERMIT);
47 self::assertEquals(AUTHORIZATION_PERMIT, $this->decisionManager->decide());
59 $permitPolicy = $this->getMockBuilder(AuthorizationPolicy::class)
60 ->setMethods(array(
'effect'))
61 ->setConstructorArgs(array(
'message 3'))
63 $permitPolicy->expects($this->any())
65 ->will($this->returnValue(AUTHORIZATION_PERMIT));
69 $policySet =
new PolicySet(COMBINING_PERMIT_OVERRIDES);
70 $policySet->addPolicy($denyPolicy1);
71 $policySet->addPolicy($denyPolicy2);
72 $policySet->addPolicy($permitPolicy);
75 $this->decisionManager->addPolicy($policySet);
76 self::assertEquals(AUTHORIZATION_PERMIT, $this->decisionManager->decide());
80 self::assertEquals(array(
'message 1',
'message 2'), $this->decisionManager->getAuthorizationMessages());
92 self::assertNull($this->decisionManager->getAuthorizedContextObject(ASSOC_TYPE_USER_GROUP));
95 self::assertEquals(AUTHORIZATION_PERMIT, $this->decisionManager->decide());
96 self::assertInstanceOf(
'UserGroup', $this->decisionManager->getAuthorizedContextObject(ASSOC_TYPE_USER_GROUP));
106 $permitPolicy = $this->getMockBuilder(AuthorizationPolicy::class)
107 ->setMethods(array(
'effect'))
109 $permitPolicy->expects($this->any())
111 ->will($this->returnCallback(array($this,
'mockEffect')));
117 $decisionManager->addPolicy($permitPolicy);
118 $decisionManager->addPolicy($denyPolicy);
119 self::assertEquals(AUTHORIZATION_DENY, $decisionManager->decide());
125 $decisionManager->addPolicy($permitPolicy);
126 $decisionManager->addPolicy($permitPolicy);
127 self::assertEquals(AUTHORIZATION_PERMIT, $decisionManager->decide());
135 $decisionManager->addPolicy($permitPolicy);
137 $policySet->addPolicy($denyPolicy);
138 $policySet->addPolicy($denyPolicy);
139 $decisionManager->addPolicy($policySet);
140 self::assertEquals(AUTHORIZATION_DENY, $decisionManager->decide());
148 $decisionManager->addPolicy($permitPolicy);
149 $policySet =
new PolicySet(COMBINING_PERMIT_OVERRIDES);
150 $policySet->addPolicy($denyPolicy);
151 $policySet->addPolicy($permitPolicy);
152 $decisionManager->addPolicy($policySet);
153 self::assertEquals(AUTHORIZATION_PERMIT, $decisionManager->decide());
161 $policy = $this->getMockBuilder(AuthorizationPolicy::class)
162 ->setMethods(array(
'callOnDeny'))
164 $policy->expects($this->once())
165 ->method(
'callOnDeny')
166 ->will($this->returnCallback(array($this,
'mockCallOnDeny')));
167 $callOnDenyAdvice = array(
172 $policy->setAdvice(AUTHORIZATION_ADVICE_CALL_ON_DENY, $callOnDenyAdvice);
175 $this->decisionManager->addPolicy($policy);
176 self::assertEquals(AUTHORIZATION_DENY, $this->decisionManager->decide());
187 self::assertEquals(
'argument', $argument);