Merge pull request #1624 from jaferkhan/instantiate-verdict

Make constructor of 'Verdict' public
This commit is contained in:
James Agnew 2019-12-07 13:51:33 -05:00 committed by GitHub
commit 2805089212
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
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 IAuthRule myDecidingRule;
private final PolicyEnum myDecision; private final PolicyEnum myDecision;
Verdict(PolicyEnum theDecision, IAuthRule theDecidingRule) { public Verdict(PolicyEnum theDecision, IAuthRule theDecidingRule) {
Validate.notNull(theDecision); Validate.notNull(theDecision);
myDecision = 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; package ca.uhn.fhir.rest.server.interceptor.auth;
import ca.uhn.fhir.rest.server.interceptor.auth.AuthorizationInterceptor.Verdict; import ca.uhn.fhir.rest.server.interceptor.auth.AuthorizationInterceptor.Verdict;
import org.junit.Test;
public class VerdictTest { public class VerdictTest {
@Test
public void testToString() { public void testToString() {
Verdict v = new AuthorizationInterceptor.Verdict(PolicyEnum.ALLOW, new RuleImplOp("foo")); Verdict v = new AuthorizationInterceptor.Verdict(PolicyEnum.ALLOW, new RuleImplOp("foo"));
v.toString(); v.toString();