mirror of
https://github.com/hapifhir/hapi-fhir.git
synced 2025-02-21 21:14:25 +00:00
Add test for #751
This commit is contained in:
parent
75bfb6af1b
commit
37c8e6c645
@ -9,6 +9,8 @@ import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import ca.uhn.fhir.rest.server.exceptions.PreconditionFailedException;
|
||||
import ca.uhn.fhir.rest.server.exceptions.ResourceGoneException;
|
||||
import org.apache.http.client.methods.*;
|
||||
import org.apache.http.entity.ContentType;
|
||||
import org.apache.http.entity.StringEntity;
|
||||
@ -81,7 +83,56 @@ public class AuthorizationInterceptorResourceProviderR4Test extends BaseResource
|
||||
patient = myClient.read().resource(Patient.class).withId(id.toUnqualifiedVersionless()).execute();
|
||||
assertEquals(id.getValue(), patient.getId());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* See #751
|
||||
*/
|
||||
@Test
|
||||
public void testDeleteInCompartmentIsBlocked() {
|
||||
|
||||
Patient patient = new Patient();
|
||||
patient.setId("Patient/A");
|
||||
patient.addIdentifier().setSystem("http://uhn.ca/mrns").setValue("100");
|
||||
patient.addName().setFamily("Tester").addGiven("Raghad");
|
||||
IIdType id = myClient.update().resource(patient).execute().getId();
|
||||
|
||||
Observation obs = new Observation();
|
||||
obs.setId("Observation/B");
|
||||
obs.getSubject().setReference("Patient/A");
|
||||
myClient.update().resource(obs).execute();
|
||||
|
||||
obs = new Observation();
|
||||
obs.setId("Observation/C");
|
||||
obs.setStatus(ObservationStatus.FINAL);
|
||||
myClient.update().resource(obs).execute();
|
||||
|
||||
ourRestServer.registerInterceptor(new AuthorizationInterceptor(PolicyEnum.DENY) {
|
||||
@Override
|
||||
public List<IAuthRule> buildRuleList(RequestDetails theRequestDetails) {
|
||||
return new RuleBuilder()
|
||||
.allow().delete().allResources().inCompartment("Patient", new IdType("Patient/A")).andThen()
|
||||
.allow().read().allResources().withAnyId().andThen()
|
||||
.denyAll()
|
||||
.build();
|
||||
}
|
||||
});
|
||||
|
||||
myClient.delete().resourceById(new IdType("Observation/B")).execute();
|
||||
|
||||
try {
|
||||
myClient.read().resource(Observation.class).withId("Observation/B").execute();
|
||||
fail();
|
||||
} catch (ResourceGoneException e) {
|
||||
// good
|
||||
}
|
||||
|
||||
try {
|
||||
myClient.delete().resourceById(new IdType("Observation/C")).execute();
|
||||
fail();
|
||||
} catch (ForbiddenOperationException e) {
|
||||
// good
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* See #503
|
||||
|
@ -29,64 +29,73 @@ package org.hl7.fhir.dstu3.model.codesystems;
|
||||
|
||||
*/
|
||||
|
||||
// Generated on Mon, Jan 16, 2017 12:12-0500 for FHIR v1.9.0
|
||||
// Generated on Sat, Mar 25, 2017 21:03-0400 for FHIR v3.0.0
|
||||
|
||||
|
||||
import org.hl7.fhir.exceptions.FHIRException;
|
||||
|
||||
public enum Devicestatus {
|
||||
public enum DeviceStatus {
|
||||
|
||||
/**
|
||||
* The Device is available for use.
|
||||
* The Device is available for use. Note: This means for *implanted devices* the device is implanted in the patient.
|
||||
*/
|
||||
AVAILABLE,
|
||||
ACTIVE,
|
||||
/**
|
||||
* The Device is no longer available for use (e.g. lost, expired, damaged).
|
||||
* The Device is no longer available for use (e.g. lost, expired, damaged). Note: This means for *implanted devices* the device has been removed from the patient.
|
||||
*/
|
||||
NOTAVAILABLE,
|
||||
INACTIVE,
|
||||
/**
|
||||
* The Device was entered in error and voided.
|
||||
*/
|
||||
ENTEREDINERROR,
|
||||
/**
|
||||
* The status of the device has not been determined.
|
||||
*/
|
||||
UNKNOWN,
|
||||
/**
|
||||
* added to help the parsers
|
||||
*/
|
||||
NULL;
|
||||
public static Devicestatus fromCode(String codeString) throws FHIRException {
|
||||
public static DeviceStatus fromCode(String codeString) throws FHIRException {
|
||||
if (codeString == null || "".equals(codeString))
|
||||
return null;
|
||||
if ("available".equals(codeString))
|
||||
return AVAILABLE;
|
||||
if ("not-available".equals(codeString))
|
||||
return NOTAVAILABLE;
|
||||
if ("active".equals(codeString))
|
||||
return ACTIVE;
|
||||
if ("inactive".equals(codeString))
|
||||
return INACTIVE;
|
||||
if ("entered-in-error".equals(codeString))
|
||||
return ENTEREDINERROR;
|
||||
throw new FHIRException("Unknown Devicestatus code '"+codeString+"'");
|
||||
if ("unknown".equals(codeString))
|
||||
return UNKNOWN;
|
||||
throw new FHIRException("Unknown DeviceStatus code '"+codeString+"'");
|
||||
}
|
||||
public String toCode() {
|
||||
switch (this) {
|
||||
case AVAILABLE: return "available";
|
||||
case NOTAVAILABLE: return "not-available";
|
||||
case ACTIVE: return "active";
|
||||
case INACTIVE: return "inactive";
|
||||
case ENTEREDINERROR: return "entered-in-error";
|
||||
case UNKNOWN: return "unknown";
|
||||
default: return "?";
|
||||
}
|
||||
}
|
||||
public String getSystem() {
|
||||
return "http://hl7.org/fhir/devicestatus";
|
||||
return "http://hl7.org/fhir/device-status";
|
||||
}
|
||||
public String getDefinition() {
|
||||
switch (this) {
|
||||
case AVAILABLE: return "The Device is available for use.";
|
||||
case NOTAVAILABLE: return "The Device is no longer available for use (e.g. lost, expired, damaged).";
|
||||
case ACTIVE: return "The Device is available for use. Note: This means for *implanted devices* the device is implanted in the patient.";
|
||||
case INACTIVE: return "The Device is no longer available for use (e.g. lost, expired, damaged). Note: This means for *implanted devices* the device has been removed from the patient.";
|
||||
case ENTEREDINERROR: return "The Device was entered in error and voided.";
|
||||
case UNKNOWN: return "The status of the device has not been determined.";
|
||||
default: return "?";
|
||||
}
|
||||
}
|
||||
public String getDisplay() {
|
||||
switch (this) {
|
||||
case AVAILABLE: return "Available";
|
||||
case NOTAVAILABLE: return "Not Available";
|
||||
case ACTIVE: return "Active";
|
||||
case INACTIVE: return "Inactive";
|
||||
case ENTEREDINERROR: return "Entered in Error";
|
||||
case UNKNOWN: return "Unknown";
|
||||
default: return "?";
|
||||
}
|
||||
}
|
||||
|
@ -29,36 +29,40 @@ package org.hl7.fhir.dstu3.model.codesystems;
|
||||
|
||||
*/
|
||||
|
||||
// Generated on Mon, Jan 16, 2017 12:12-0500 for FHIR v1.9.0
|
||||
// Generated on Sat, Mar 25, 2017 21:03-0400 for FHIR v3.0.0
|
||||
|
||||
|
||||
import org.hl7.fhir.dstu3.model.EnumFactory;
|
||||
|
||||
public class DevicestatusEnumFactory implements EnumFactory<Devicestatus> {
|
||||
public class DeviceStatusEnumFactory implements EnumFactory<DeviceStatus> {
|
||||
|
||||
public Devicestatus fromCode(String codeString) throws IllegalArgumentException {
|
||||
public DeviceStatus fromCode(String codeString) throws IllegalArgumentException {
|
||||
if (codeString == null || "".equals(codeString))
|
||||
return null;
|
||||
if ("available".equals(codeString))
|
||||
return Devicestatus.AVAILABLE;
|
||||
if ("not-available".equals(codeString))
|
||||
return Devicestatus.NOTAVAILABLE;
|
||||
if ("active".equals(codeString))
|
||||
return DeviceStatus.ACTIVE;
|
||||
if ("inactive".equals(codeString))
|
||||
return DeviceStatus.INACTIVE;
|
||||
if ("entered-in-error".equals(codeString))
|
||||
return Devicestatus.ENTEREDINERROR;
|
||||
throw new IllegalArgumentException("Unknown Devicestatus code '"+codeString+"'");
|
||||
return DeviceStatus.ENTEREDINERROR;
|
||||
if ("unknown".equals(codeString))
|
||||
return DeviceStatus.UNKNOWN;
|
||||
throw new IllegalArgumentException("Unknown DeviceStatus code '"+codeString+"'");
|
||||
}
|
||||
|
||||
public String toCode(Devicestatus code) {
|
||||
if (code == Devicestatus.AVAILABLE)
|
||||
return "available";
|
||||
if (code == Devicestatus.NOTAVAILABLE)
|
||||
return "not-available";
|
||||
if (code == Devicestatus.ENTEREDINERROR)
|
||||
public String toCode(DeviceStatus code) {
|
||||
if (code == DeviceStatus.ACTIVE)
|
||||
return "active";
|
||||
if (code == DeviceStatus.INACTIVE)
|
||||
return "inactive";
|
||||
if (code == DeviceStatus.ENTEREDINERROR)
|
||||
return "entered-in-error";
|
||||
if (code == DeviceStatus.UNKNOWN)
|
||||
return "unknown";
|
||||
return "?";
|
||||
}
|
||||
|
||||
public String toSystem(Devicestatus code) {
|
||||
public String toSystem(DeviceStatus code) {
|
||||
return code.getSystem();
|
||||
}
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user