From 976740955c117d69c95ac61bc181ee3e5985ff9f Mon Sep 17 00:00:00 2001 From: Jafer Khan Date: Sat, 7 Dec 2019 18:08:45 +0500 Subject: [PATCH] Make constructor of 'Verdict' public. Fixes gh-1621 --- .../auth/AuthorizationInterceptor.java | 2 +- .../ca/uhn/fhir/rest/server/VerdictTest.java | 48 +++++++++++++++++++ .../server/interceptor/auth/VerdictTest.java | 2 + 3 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 hapi-fhir-server/src/test/java/ca/uhn/fhir/rest/server/VerdictTest.java diff --git a/hapi-fhir-server/src/main/java/ca/uhn/fhir/rest/server/interceptor/auth/AuthorizationInterceptor.java b/hapi-fhir-server/src/main/java/ca/uhn/fhir/rest/server/interceptor/auth/AuthorizationInterceptor.java index b001ba9dff6..a74dbe83a96 100644 --- a/hapi-fhir-server/src/main/java/ca/uhn/fhir/rest/server/interceptor/auth/AuthorizationInterceptor.java +++ b/hapi-fhir-server/src/main/java/ca/uhn/fhir/rest/server/interceptor/auth/AuthorizationInterceptor.java @@ -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; diff --git a/hapi-fhir-server/src/test/java/ca/uhn/fhir/rest/server/VerdictTest.java b/hapi-fhir-server/src/test/java/ca/uhn/fhir/rest/server/VerdictTest.java new file mode 100644 index 00000000000..1589dd75f82 --- /dev/null +++ b/hapi-fhir-server/src/test/java/ca/uhn/fhir/rest/server/VerdictTest.java @@ -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 theFlags, Pointcut thePointcut) { + return new Verdict(PolicyEnum.ALLOW, this); + } + + @Override + public String getName() { + return "Custom rule"; + } + } +} diff --git a/hapi-fhir-server/src/test/java/ca/uhn/fhir/rest/server/interceptor/auth/VerdictTest.java b/hapi-fhir-server/src/test/java/ca/uhn/fhir/rest/server/interceptor/auth/VerdictTest.java index 8c4cd226737..d7d16fc280e 100644 --- a/hapi-fhir-server/src/test/java/ca/uhn/fhir/rest/server/interceptor/auth/VerdictTest.java +++ b/hapi-fhir-server/src/test/java/ca/uhn/fhir/rest/server/interceptor/auth/VerdictTest.java @@ -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();