package ca.uhn.fhir.rest.server;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.fail;
import javax.servlet.ServletException;
import org.hamcrest.core.StringContains;
import org.hl7.fhir.instance.model.Patient;
import org.hl7.fhir.instance.model.StringType;
import org.hl7.fhir.instance.model.api.IBaseResource;
import org.junit.Test;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.rest.annotation.Operation;
import ca.uhn.fhir.rest.annotation.OperationParam;
public class ServerInvalidDefinitionHl7OrgDstu2Test {
private static FhirContext ourCtx = FhirContext.forDstu2Hl7Org();
private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory
.getLogger(ServerInvalidDefinitionHl7OrgDstu2Test.class);
@Test
public void testOperationReturningOldBundleProvider() {
RestfulServer srv = new RestfulServer(ourCtx);
srv.setFhirContext(ourCtx);
srv.setResourceProviders(new OperationReturningOldBundleProvider());
try {
srv.init();
fail();
} catch (ServletException e) {
ourLog.info(e.getCause().toString());
assertThat(e.getCause().toString(), StringContains.containsString("ConfigurationException"));
assertThat(e.getCause().toString(), StringContains.containsString("Can not return a DSTU1 bundle"));
}
}
public static class OperationReturningOldBundleProvider implements IResourceProvider {
@Override
public Class<? extends IBaseResource> getResourceType() {
return Patient.class;
}
@Operation(name = "$OP_TYPE_RET_OLD_BUNDLE")
public ca.uhn.fhir.model.api.Bundle opTypeRetOldBundle(@OperationParam(name = "PARAM1") StringType theParam1,
@OperationParam(name = "PARAM2") Patient theParam2) {
return null;
}
}
}