Refactor tests
This commit is contained in:
parent
805fbad6ce
commit
85aef0a853
|
@ -139,14 +139,6 @@ public class FhirResourceDaoDstu3SearchPageExpiryTest extends BaseJpaDstu3Test {
|
|||
|
||||
// Search just got used so it shouldn't be deleted
|
||||
|
||||
myStaleSearchDeletingSvc.pollForStaleSearchesAndDeleteThem();
|
||||
newTxTemplate().execute(new TransactionCallbackWithoutResult() {
|
||||
@Override
|
||||
protected void doInTransactionWithoutResult(TransactionStatus theArg0) {
|
||||
assertNotNull(mySearchEntityDao.findByUuid(searchUuid3));
|
||||
}
|
||||
});
|
||||
|
||||
Thread.sleep(750);
|
||||
|
||||
myStaleSearchDeletingSvc.pollForStaleSearchesAndDeleteThem();
|
||||
|
|
|
@ -18,6 +18,7 @@ import org.junit.After;
|
|||
import org.junit.AfterClass;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.springframework.data.mapping.PreferredConstructor;
|
||||
import org.springframework.orm.jpa.JpaSystemException;
|
||||
|
||||
import java.util.Collections;
|
||||
|
@ -338,7 +339,7 @@ public class FhirResourceDaoDstu3UniqueSearchParamTest extends BaseJpaDstu3Test
|
|||
try {
|
||||
myPatientDao.update(pt2);
|
||||
fail();
|
||||
} catch (JpaSystemException e) {
|
||||
} catch (PreconditionFailedException e) {
|
||||
// good
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package ca.uhn.fhir.jpa.provider;
|
||||
|
||||
import ca.uhn.fhir.jpa.provider.r4.ResourceProviderInterceptorR4Test;
|
||||
import ca.uhn.fhir.model.dstu2.resource.Bundle;
|
||||
import ca.uhn.fhir.model.dstu2.resource.Bundle.Entry;
|
||||
import ca.uhn.fhir.model.dstu2.resource.Patient;
|
||||
|
@ -114,12 +115,7 @@ public class ResourceProviderInterceptorDstu2Test extends BaseResourceProviderDs
|
|||
assertEquals("Patient", ardCaptor.getValue().getResourceType());
|
||||
assertNotNull(ardCaptor.getValue().getResource());
|
||||
|
||||
ardCaptor = ArgumentCaptor.forClass(ActionRequestDetails.class);
|
||||
opTypeCaptor = ArgumentCaptor.forClass(RestOperationTypeEnum.class);
|
||||
verify(myDaoInterceptor, times(1)).incomingRequestPreHandled(opTypeCaptor.capture(), ardCaptor.capture());
|
||||
assertEquals(RestOperationTypeEnum.CREATE, opTypeCaptor.getValue());
|
||||
assertEquals("Patient", ardCaptor.getValue().getResourceType());
|
||||
assertNotNull(ardCaptor.getValue().getResource());
|
||||
ResourceProviderInterceptorR4Test.verifyDaoInterceptor(myDaoInterceptor);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package ca.uhn.fhir.jpa.provider.dstu3;
|
||||
|
||||
import ca.uhn.fhir.jpa.provider.r4.ResourceProviderInterceptorR4Test;
|
||||
import ca.uhn.fhir.model.dstu2.resource.Conformance;
|
||||
import ca.uhn.fhir.parser.IParser;
|
||||
import ca.uhn.fhir.rest.api.Constants;
|
||||
|
@ -117,12 +118,7 @@ public class ResourceProviderInterceptorDstu3Test extends BaseResourceProviderDs
|
|||
assertEquals("Patient", ardCaptor.getValue().getResourceType());
|
||||
assertNotNull(ardCaptor.getValue().getResource());
|
||||
|
||||
ardCaptor = ArgumentCaptor.forClass(ActionRequestDetails.class);
|
||||
opTypeCaptor = ArgumentCaptor.forClass(RestOperationTypeEnum.class);
|
||||
verify(myDaoInterceptor, times(1)).incomingRequestPreHandled(opTypeCaptor.capture(), ardCaptor.capture());
|
||||
assertEquals(RestOperationTypeEnum.CREATE, opTypeCaptor.getValue());
|
||||
assertEquals("Patient", ardCaptor.getValue().getResourceType());
|
||||
assertNotNull(ardCaptor.getValue().getResource());
|
||||
ResourceProviderInterceptorR4Test.verifyDaoInterceptor(myDaoInterceptor);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
@ -1,29 +1,5 @@
|
|||
package ca.uhn.fhir.jpa.provider.r4;
|
||||
|
||||
import static org.hamcrest.Matchers.startsWith;
|
||||
import static org.junit.Assert.*;
|
||||
import static org.mockito.Matchers.any;
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.apache.http.client.methods.CloseableHttpResponse;
|
||||
import org.apache.http.client.methods.HttpPost;
|
||||
import org.apache.http.entity.ContentType;
|
||||
import org.apache.http.entity.StringEntity;
|
||||
import org.hl7.fhir.r4.model.*;
|
||||
import org.hl7.fhir.r4.model.Bundle.*;
|
||||
import org.hl7.fhir.instance.model.api.IBaseResource;
|
||||
import org.hl7.fhir.instance.model.api.IIdType;
|
||||
import org.junit.*;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
|
||||
import ca.uhn.fhir.parser.IParser;
|
||||
import ca.uhn.fhir.rest.api.Constants;
|
||||
import ca.uhn.fhir.rest.api.RestOperationTypeEnum;
|
||||
|
@ -33,6 +9,35 @@ import ca.uhn.fhir.rest.server.interceptor.IServerInterceptor;
|
|||
import ca.uhn.fhir.rest.server.interceptor.IServerInterceptor.ActionRequestDetails;
|
||||
import ca.uhn.fhir.rest.server.interceptor.InterceptorAdapter;
|
||||
import ca.uhn.fhir.util.TestUtil;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.apache.http.client.methods.CloseableHttpResponse;
|
||||
import org.apache.http.client.methods.HttpPost;
|
||||
import org.apache.http.entity.ContentType;
|
||||
import org.apache.http.entity.StringEntity;
|
||||
import org.hl7.fhir.instance.model.api.IBaseResource;
|
||||
import org.hl7.fhir.instance.model.api.IIdType;
|
||||
import org.hl7.fhir.r4.model.Bundle;
|
||||
import org.hl7.fhir.r4.model.Bundle.BundleEntryComponent;
|
||||
import org.hl7.fhir.r4.model.Bundle.BundleType;
|
||||
import org.hl7.fhir.r4.model.Bundle.HTTPVerb;
|
||||
import org.hl7.fhir.r4.model.Organization;
|
||||
import org.hl7.fhir.r4.model.Patient;
|
||||
import org.hl7.fhir.r4.model.Reference;
|
||||
import org.junit.After;
|
||||
import org.junit.AfterClass;
|
||||
import org.junit.Test;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
import static org.hamcrest.Matchers.startsWith;
|
||||
import static org.junit.Assert.*;
|
||||
import static org.mockito.Matchers.any;
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
public class ResourceProviderInterceptorR4Test extends BaseResourceProviderR4Test {
|
||||
|
||||
|
@ -112,66 +117,15 @@ public class ResourceProviderInterceptorR4Test extends BaseResourceProviderR4Tes
|
|||
assertEquals("Patient", ardCaptor.getValue().getResourceType());
|
||||
assertNotNull(ardCaptor.getValue().getResource());
|
||||
|
||||
ardCaptor = ArgumentCaptor.forClass(ActionRequestDetails.class);
|
||||
opTypeCaptor = ArgumentCaptor.forClass(RestOperationTypeEnum.class);
|
||||
verify(myDaoInterceptor, times(1)).incomingRequestPreHandled(opTypeCaptor.capture(), ardCaptor.capture());
|
||||
assertEquals(RestOperationTypeEnum.CREATE, opTypeCaptor.getValue());
|
||||
assertEquals("Patient", ardCaptor.getValue().getResourceType());
|
||||
assertNotNull(ardCaptor.getValue().getResource());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateResourceWithVersionedReference() throws IOException, ServletException {
|
||||
String methodName = "testCreateResourceWithVersionedReference";
|
||||
|
||||
Organization org = new Organization();
|
||||
org.setName("orgName");
|
||||
IIdType orgId = ourClient.create().resource(org).execute().getId().toUnqualified();
|
||||
assertNotNull(orgId.getVersionIdPartAsLong());
|
||||
|
||||
resetServerInterceptor();
|
||||
|
||||
Patient pt = new Patient();
|
||||
pt.addName().setFamily(methodName);
|
||||
pt.setManagingOrganization(new Reference(orgId));
|
||||
|
||||
IParser parser = myFhirCtx.newXmlParser();
|
||||
parser.setDontStripVersionsFromReferencesAtPaths("Patient.managingOrganization");
|
||||
parser.setPrettyPrint(true);
|
||||
String resource = parser.encodeResourceToString(pt);
|
||||
|
||||
ourLog.info(resource);
|
||||
|
||||
verify(myServerInterceptor, times(0)).incomingRequestPreHandled(any(RestOperationTypeEnum.class), any(ActionRequestDetails.class));
|
||||
verify(myDaoInterceptor, times(0)).incomingRequestPreHandled(any(RestOperationTypeEnum.class), any(ActionRequestDetails.class));
|
||||
|
||||
HttpPost post = new HttpPost(ourServerBase + "/Patient");
|
||||
post.setEntity(new StringEntity(resource, ContentType.create(Constants.CT_FHIR_XML, "UTF-8")));
|
||||
CloseableHttpResponse response = ourHttpClient.execute(post);
|
||||
try {
|
||||
String resp = IOUtils.toString(response.getEntity().getContent(), StandardCharsets.UTF_8);
|
||||
ourLog.info("Response was: {}", resp);
|
||||
assertEquals(201, response.getStatusLine().getStatusCode());
|
||||
String newIdString = response.getFirstHeader(Constants.HEADER_LOCATION_LC).getValue();
|
||||
assertThat(newIdString, startsWith(ourServerBase + "/Patient/"));
|
||||
} finally {
|
||||
response.close();
|
||||
}
|
||||
|
||||
ArgumentCaptor<ActionRequestDetails> ardCaptor = ArgumentCaptor.forClass(ActionRequestDetails.class);
|
||||
ArgumentCaptor<RestOperationTypeEnum> opTypeCaptor = ArgumentCaptor.forClass(RestOperationTypeEnum.class);
|
||||
verify(myServerInterceptor, times(1)).incomingRequestPreHandled(opTypeCaptor.capture(), ardCaptor.capture());
|
||||
|
||||
assertEquals(RestOperationTypeEnum.CREATE, opTypeCaptor.getValue());
|
||||
assertEquals("Patient", ardCaptor.getValue().getResourceType());
|
||||
assertNotNull(ardCaptor.getValue().getResource());
|
||||
|
||||
Patient patient;
|
||||
patient = (Patient) ardCaptor.getAllValues().get(0).getResource();
|
||||
assertEquals(orgId.getValue(), patient.getManagingOrganization().getReference());
|
||||
|
||||
ResourceProviderInterceptorR4Test.verifyDaoInterceptor(myDaoInterceptor);
|
||||
}
|
||||
|
||||
/*
|
||||
* This is a weird way of verifying, but because this class
|
||||
* is a child of a superclass that has other test children
|
||||
* it's possible that other tests are hitting the server
|
||||
* at the same time
|
||||
*/
|
||||
@Test
|
||||
public void testCreateResourceInTransaction() throws IOException {
|
||||
String methodName = "testCreateResourceInTransaction";
|
||||
|
@ -238,9 +192,80 @@ public class ResourceProviderInterceptorR4Test extends BaseResourceProviderR4Tes
|
|||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateResourceWithVersionedReference() throws IOException, ServletException {
|
||||
String methodName = "testCreateResourceWithVersionedReference";
|
||||
|
||||
Organization org = new Organization();
|
||||
org.setName("orgName");
|
||||
IIdType orgId = ourClient.create().resource(org).execute().getId().toUnqualified();
|
||||
assertNotNull(orgId.getVersionIdPartAsLong());
|
||||
|
||||
resetServerInterceptor();
|
||||
|
||||
Patient pt = new Patient();
|
||||
pt.addName().setFamily(methodName);
|
||||
pt.setManagingOrganization(new Reference(orgId));
|
||||
|
||||
IParser parser = myFhirCtx.newXmlParser();
|
||||
parser.setDontStripVersionsFromReferencesAtPaths("Patient.managingOrganization");
|
||||
parser.setPrettyPrint(true);
|
||||
String resource = parser.encodeResourceToString(pt);
|
||||
|
||||
ourLog.info(resource);
|
||||
|
||||
verify(myServerInterceptor, times(0)).incomingRequestPreHandled(any(RestOperationTypeEnum.class), any(ActionRequestDetails.class));
|
||||
verify(myDaoInterceptor, times(0)).incomingRequestPreHandled(any(RestOperationTypeEnum.class), any(ActionRequestDetails.class));
|
||||
|
||||
HttpPost post = new HttpPost(ourServerBase + "/Patient");
|
||||
post.setEntity(new StringEntity(resource, ContentType.create(Constants.CT_FHIR_XML, "UTF-8")));
|
||||
CloseableHttpResponse response = ourHttpClient.execute(post);
|
||||
try {
|
||||
String resp = IOUtils.toString(response.getEntity().getContent(), StandardCharsets.UTF_8);
|
||||
ourLog.info("Response was: {}", resp);
|
||||
assertEquals(201, response.getStatusLine().getStatusCode());
|
||||
String newIdString = response.getFirstHeader(Constants.HEADER_LOCATION_LC).getValue();
|
||||
assertThat(newIdString, startsWith(ourServerBase + "/Patient/"));
|
||||
} finally {
|
||||
response.close();
|
||||
}
|
||||
|
||||
ArgumentCaptor<ActionRequestDetails> ardCaptor = ArgumentCaptor.forClass(ActionRequestDetails.class);
|
||||
ArgumentCaptor<RestOperationTypeEnum> opTypeCaptor = ArgumentCaptor.forClass(RestOperationTypeEnum.class);
|
||||
verify(myServerInterceptor, times(1)).incomingRequestPreHandled(opTypeCaptor.capture(), ardCaptor.capture());
|
||||
|
||||
assertEquals(RestOperationTypeEnum.CREATE, opTypeCaptor.getValue());
|
||||
assertEquals("Patient", ardCaptor.getValue().getResourceType());
|
||||
assertNotNull(ardCaptor.getValue().getResource());
|
||||
|
||||
Patient patient;
|
||||
patient = (Patient) ardCaptor.getAllValues().get(0).getResource();
|
||||
assertEquals(orgId.getValue(), patient.getManagingOrganization().getReference());
|
||||
|
||||
}
|
||||
|
||||
@AfterClass
|
||||
public static void afterClassClearContext() {
|
||||
TestUtil.clearAllStaticFieldsForUnitTest();
|
||||
}
|
||||
|
||||
public static void verifyDaoInterceptor(IServerInterceptor theDaoInterceptor) {
|
||||
ArgumentCaptor<ActionRequestDetails> ardCaptor;
|
||||
ArgumentCaptor<RestOperationTypeEnum> opTypeCaptor;
|
||||
ardCaptor = ArgumentCaptor.forClass(ActionRequestDetails.class);
|
||||
opTypeCaptor = ArgumentCaptor.forClass(RestOperationTypeEnum.class);
|
||||
verify(theDaoInterceptor, atLeast(1)).incomingRequestPreHandled(opTypeCaptor.capture(), ardCaptor.capture());
|
||||
boolean good = false;
|
||||
for (int i = 0; i < opTypeCaptor.getAllValues().size(); i++) {
|
||||
if (RestOperationTypeEnum.CREATE.equals(opTypeCaptor.getAllValues().get(i))) {
|
||||
if ("Patient".equals(ardCaptor.getValue().getResourceType())) {
|
||||
if (ardCaptor.getValue().getResource() != null) {
|
||||
good = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
assertTrue(good);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -165,6 +165,41 @@ public class ResourceProviderR4Test extends BaseResourceProviderR4Test {
|
|||
return ids;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateThatCreatesReturnsHttp201() throws IOException {
|
||||
|
||||
Patient p = new Patient();
|
||||
p.setId("A");
|
||||
p.setActive(true);
|
||||
String encoded = myFhirCtx.newJsonParser().encodeResourceToString(p);
|
||||
|
||||
HttpPut put = new HttpPut(ourServerBase + "/Patient/A");
|
||||
put.setEntity(new StringEntity(encoded, "application/fhir+json", "UTF-8"));
|
||||
|
||||
CloseableHttpResponse response = ourHttpClient.execute(put);
|
||||
try {
|
||||
assertEquals(201, response.getStatusLine().getStatusCode());
|
||||
} finally {
|
||||
IOUtils.closeQuietly(response);
|
||||
}
|
||||
|
||||
p = new Patient();
|
||||
p.setId("A");
|
||||
p.setActive(false);
|
||||
encoded = myFhirCtx.newJsonParser().encodeResourceToString(p);
|
||||
|
||||
put = new HttpPut(ourServerBase + "/Patient/A");
|
||||
put.setEntity(new StringEntity(encoded, "application/fhir+json", "UTF-8"));
|
||||
|
||||
response = ourHttpClient.execute(put);
|
||||
try {
|
||||
assertEquals(200, response.getStatusLine().getStatusCode());
|
||||
} finally {
|
||||
IOUtils.closeQuietly(response);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Y
|
||||
@Test
|
||||
public void testBundleCreate() throws Exception {
|
||||
|
|
|
@ -20,23 +20,25 @@ import org.eclipse.jetty.server.Server;
|
|||
import org.eclipse.jetty.servlet.ServletHandler;
|
||||
import org.eclipse.jetty.servlet.ServletHolder;
|
||||
import org.hamcrest.Matchers;
|
||||
import org.hl7.fhir.dstu3.hapi.rest.server.GraphQLProviderDstu3;
|
||||
import org.hl7.fhir.dstu3.hapi.validation.DefaultProfileValidationSupport;
|
||||
import org.hl7.fhir.dstu3.model.*;
|
||||
import org.hl7.fhir.exceptions.FHIRException;
|
||||
import org.hl7.fhir.instance.model.api.IBaseResource;
|
||||
import org.hl7.fhir.dstu3.hapi.rest.server.GraphQLProviderDstu3;
|
||||
import org.hl7.fhir.utilities.graphql.Argument;
|
||||
import org.hl7.fhir.utilities.graphql.IGraphQLStorageServices;
|
||||
import org.hl7.fhir.utilities.graphql.ReferenceResolution;
|
||||
import org.junit.*;
|
||||
import org.junit.AfterClass;
|
||||
import org.junit.Before;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertThat;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
public class GraphQLDstu3ProviderTest {
|
||||
|
||||
|
@ -112,7 +114,7 @@ public class GraphQLDstu3ProviderTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
@org.junit.Ignore
|
||||
public void testGraphSystemInstance() throws Exception {
|
||||
String query = "{Patient(id:123){id,name{given,family}}}";
|
||||
HttpGet httpGet = new HttpGet("http://localhost:" + ourPort + "/$graphql?query=" + UrlUtil.escape(query));
|
||||
|
|
Loading…
Reference in New Issue