Add more tests
This commit is contained in:
parent
b8ef2f6763
commit
a12ce73797
|
@ -48,6 +48,7 @@ import java.util.IdentityHashMap;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
|
@ -738,7 +739,9 @@ public class FhirTerser {
|
||||||
|
|
||||||
//If passed an additional set of searchparameter names, add them for comparison purposes.
|
//If passed an additional set of searchparameter names, add them for comparison purposes.
|
||||||
if (theAdditionalCompartmentParamNames != null) {
|
if (theAdditionalCompartmentParamNames != null) {
|
||||||
List<RuntimeSearchParam> additionalParams = theAdditionalCompartmentParamNames.stream().map(paramName -> sourceDef.getSearchParam(paramName)).collect(Collectors.toList());
|
List<RuntimeSearchParam> additionalParams = theAdditionalCompartmentParamNames.stream().map(sourceDef::getSearchParam)
|
||||||
|
.filter(Objects::nonNull)
|
||||||
|
.collect(Collectors.toList());
|
||||||
if (params == null || params.isEmpty()) {
|
if (params == null || params.isEmpty()) {
|
||||||
params = additionalParams;
|
params = additionalParams;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -30,6 +30,7 @@ import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
@ -382,7 +383,7 @@ class RuleImplOp extends BaseRule /* implements IAuthRule */ {
|
||||||
List<RuntimeSearchParam> params = sourceDef.getSearchParamsForCompartmentName(compartmentOwnerResourceType);
|
List<RuntimeSearchParam> params = sourceDef.getSearchParamsForCompartmentName(compartmentOwnerResourceType);
|
||||||
|
|
||||||
Set<String> additionalParamNames = myAdditionalCompartmentSearchParamMap.getSearchParamNamesForResourceType(sourceDef.getName());
|
Set<String> additionalParamNames = myAdditionalCompartmentSearchParamMap.getSearchParamNamesForResourceType(sourceDef.getName());
|
||||||
List<RuntimeSearchParam> additionalParams = additionalParamNames.stream().map(sourceDef::getSearchParam).collect(Collectors.toList());
|
List<RuntimeSearchParam> additionalParams = additionalParamNames.stream().map(sourceDef::getSearchParam).filter(Objects::nonNull).collect(Collectors.toList());
|
||||||
if (params == null || params.isEmpty()) {
|
if (params == null || params.isEmpty()) {
|
||||||
params = additionalParams;
|
params = additionalParams;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -460,6 +460,47 @@ public class AuthorizationInterceptorR4Test {
|
||||||
assertEquals(403, status.getStatusLine().getStatusCode());
|
assertEquals(403, status.getStatusLine().getStatusCode());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testNonsenseParametersThrowAtRuntime() throws Exception {
|
||||||
|
//Given
|
||||||
|
ourServlet.registerInterceptor(new AuthorizationInterceptor(PolicyEnum.DENY) {
|
||||||
|
@Override
|
||||||
|
public List<IAuthRule> buildRuleList(RequestDetails theRequestDetails) {
|
||||||
|
AdditionalCompartmentSearchParameters additionalCompartmentSearchParameters = new AdditionalCompartmentSearchParameters();
|
||||||
|
additionalCompartmentSearchParameters.addSearchParameters("device:garbage");
|
||||||
|
List<IdType> relatedIds = new ArrayList<>();
|
||||||
|
relatedIds.add(new IdType("Patient/123"));
|
||||||
|
return new RuleBuilder()
|
||||||
|
.allow().read().allResources()
|
||||||
|
.inCompartmentWithAdditionalSearchParams("Patient", relatedIds, additionalCompartmentSearchParameters)
|
||||||
|
.andThen().denyAll()
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
HttpGet httpGet;
|
||||||
|
HttpResponse status;
|
||||||
|
|
||||||
|
Patient patient;
|
||||||
|
patient = new Patient();
|
||||||
|
patient.setId("Patient/123");
|
||||||
|
Device d = new Device();
|
||||||
|
d.getPatient().setResource(patient);
|
||||||
|
|
||||||
|
ourHitMethod = false;
|
||||||
|
ourReturn = Collections.singletonList(d);
|
||||||
|
|
||||||
|
//When
|
||||||
|
httpGet = new HttpGet("http://localhost:" + ourPort + "/Device/124456");
|
||||||
|
status = ourClient.execute(httpGet);
|
||||||
|
extractResponseAndClose(status);
|
||||||
|
|
||||||
|
//then
|
||||||
|
assertFalse(ourHitMethod);
|
||||||
|
assertEquals(403, status.getStatusLine().getStatusCode());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testRuleBuilderAdditionalSearchParamsInvalidValues() {
|
public void testRuleBuilderAdditionalSearchParamsInvalidValues() {
|
||||||
//Too many colons
|
//Too many colons
|
||||||
|
|
Loading…
Reference in New Issue