Make constructor of 'Verdict' public. Fixes gh-1621

This commit is contained in:
Jafer Khan 2019-12-07 18:08:45 +05:00
parent 5e69fcdc5f
commit 976740955c
3 changed files with 51 additions and 1 deletions

View File

@ -423,7 +423,7 @@ public class AuthorizationInterceptor implements IRuleApplier {
private final IAuthRule myDecidingRule;
private final PolicyEnum myDecision;
Verdict(PolicyEnum theDecision, IAuthRule theDecidingRule) {
public Verdict(PolicyEnum theDecision, IAuthRule theDecidingRule) {
Validate.notNull(theDecision);
myDecision = theDecision;

View File

@ -0,0 +1,48 @@
package ca.uhn.fhir.rest.server;
import ca.uhn.fhir.interceptor.api.Pointcut;
import ca.uhn.fhir.rest.api.RestOperationTypeEnum;
import ca.uhn.fhir.rest.api.server.RequestDetails;
import ca.uhn.fhir.rest.server.interceptor.auth.AuthorizationFlagsEnum;
import ca.uhn.fhir.rest.server.interceptor.auth.AuthorizationInterceptor.Verdict;
import ca.uhn.fhir.rest.server.interceptor.auth.IAuthRule;
import ca.uhn.fhir.rest.server.interceptor.auth.IRuleApplier;
import ca.uhn.fhir.rest.server.interceptor.auth.PolicyEnum;
import org.hl7.fhir.instance.model.api.IBaseResource;
import org.hl7.fhir.instance.model.api.IIdType;
import org.junit.Test;
import java.util.Set;
/**
* Tests for {@link Verdict}
*
* @author Jafer Khan Shamshad
*/
public class VerdictTest {
/**
* Implementers should be able to instantiate {@link Verdict} outside the package where it has been defined.
*/
@Test
public void testInstantiationFromAnotherPackage() {
Verdict verdict = new Verdict(PolicyEnum.ALLOW, new CustomRule());
}
/**
* Existing implementations of {@link IAuthRule} are inaccessible from this package.
* This test class is a sample implementation of {@link IAuthRule}.
*/
public static class CustomRule implements IAuthRule {
@Override
public Verdict applyRule(RestOperationTypeEnum theOperation, RequestDetails theRequestDetails, IBaseResource theInputResource, IIdType theInputResourceId, IBaseResource theOutputResource, IRuleApplier theRuleApplier, Set<AuthorizationFlagsEnum> theFlags, Pointcut thePointcut) {
return new Verdict(PolicyEnum.ALLOW, this);
}
@Override
public String getName() {
return "Custom rule";
}
}
}

View File

@ -1,9 +1,11 @@
package ca.uhn.fhir.rest.server.interceptor.auth;
import ca.uhn.fhir.rest.server.interceptor.auth.AuthorizationInterceptor.Verdict;
import org.junit.Test;
public class VerdictTest {
@Test
public void testToString() {
Verdict v = new AuthorizationInterceptor.Verdict(PolicyEnum.ALLOW, new RuleImplOp("foo"));
v.toString();