From 36a7e9c9805058f38492a340afbda14e7fe5cbc0 Mon Sep 17 00:00:00 2001 From: jamesagnew Date: Wed, 22 Apr 2020 14:56:13 -0400 Subject: [PATCH] Test fixes --- .../UrlTenantSelectionInterceptor.java | 4 +++ .../tasks/HapiFhirJpaMigrationTasks.java | 2 +- .../autoconfigure/FhirAutoConfiguration.java | 9 ++++++ .../rest/client/BaseGenericClientR4Test.java | 16 ++++++++++ .../UrlTenantSelectionInterceptorTest.java | 32 +++++++++++++++++++ 5 files changed, 62 insertions(+), 1 deletion(-) diff --git a/hapi-fhir-client/src/main/java/ca/uhn/fhir/rest/client/interceptor/UrlTenantSelectionInterceptor.java b/hapi-fhir-client/src/main/java/ca/uhn/fhir/rest/client/interceptor/UrlTenantSelectionInterceptor.java index 6f4d2c6941c..26e0bf5c36c 100644 --- a/hapi-fhir-client/src/main/java/ca/uhn/fhir/rest/client/interceptor/UrlTenantSelectionInterceptor.java +++ b/hapi-fhir-client/src/main/java/ca/uhn/fhir/rest/client/interceptor/UrlTenantSelectionInterceptor.java @@ -75,6 +75,10 @@ public class UrlTenantSelectionInterceptor { } String requestUri = theRequest.getUri(); String serverBase = theClient.getServerBase(); + if (serverBase.endsWith("/")) { + serverBase = serverBase.substring(0, serverBase.length() - 1); + } + Validate.isTrue(requestUri.startsWith(serverBase), "Request URI %s does not start with server base %s", requestUri, serverBase); String newUri = serverBase + "/" + tenantId + requestUri.substring(serverBase.length()); diff --git a/hapi-fhir-jpaserver-migrate/src/main/java/ca/uhn/fhir/jpa/migrate/tasks/HapiFhirJpaMigrationTasks.java b/hapi-fhir-jpaserver-migrate/src/main/java/ca/uhn/fhir/jpa/migrate/tasks/HapiFhirJpaMigrationTasks.java index fc723706f11..e553b6e05bc 100644 --- a/hapi-fhir-jpaserver-migrate/src/main/java/ca/uhn/fhir/jpa/migrate/tasks/HapiFhirJpaMigrationTasks.java +++ b/hapi-fhir-jpaserver-migrate/src/main/java/ca/uhn/fhir/jpa/migrate/tasks/HapiFhirJpaMigrationTasks.java @@ -69,7 +69,7 @@ public class HapiFhirJpaMigrationTasks extends BaseMigrationTasks { version.onTable("HFJ_RES_VER").dropColumn("20200218.2", "FORCED_ID_PID"); version.onTable("HFJ_RES_VER").addForeignKey("20200218.3", "FK_RESOURCE_HISTORY_RESOURCE").toColumn("RES_ID").references("HFJ_RESOURCE", "RES_ID"); version.onTable("HFJ_RES_VER").modifyColumn("20200220.1", "RES_ID").nonNullable().failureAllowed().withType(BaseTableColumnTypeTask.ColumnTypeEnum.LONG); - + // Drop unused column version.onTable("HFJ_RESOURCE").dropIndex("20200419.1", "IDX_RES_PROFILE"); version.onTable("HFJ_RESOURCE").dropColumn("20200419.2", "RES_PROFILE"); diff --git a/hapi-fhir-spring-boot/hapi-fhir-spring-boot-autoconfigure/src/main/java/ca/uhn/fhir/spring/boot/autoconfigure/FhirAutoConfiguration.java b/hapi-fhir-spring-boot/hapi-fhir-spring-boot-autoconfigure/src/main/java/ca/uhn/fhir/spring/boot/autoconfigure/FhirAutoConfiguration.java index c84e17cad24..3ee48e6052c 100644 --- a/hapi-fhir-spring-boot/hapi-fhir-spring-boot-autoconfigure/src/main/java/ca/uhn/fhir/spring/boot/autoconfigure/FhirAutoConfiguration.java +++ b/hapi-fhir-spring-boot/hapi-fhir-spring-boot-autoconfigure/src/main/java/ca/uhn/fhir/spring/boot/autoconfigure/FhirAutoConfiguration.java @@ -27,6 +27,7 @@ import ca.uhn.fhir.jpa.config.BaseJavaConfigDstu2; import ca.uhn.fhir.jpa.config.BaseJavaConfigDstu3; import ca.uhn.fhir.jpa.config.BaseJavaConfigR4; import ca.uhn.fhir.jpa.api.config.DaoConfig; +import ca.uhn.fhir.jpa.model.config.PartitionSettings; import ca.uhn.fhir.jpa.model.entity.ModelConfig; import ca.uhn.fhir.jpa.provider.BaseJpaProvider; import ca.uhn.fhir.jpa.provider.BaseJpaSystemProvider; @@ -180,6 +181,14 @@ public class FhirAutoConfiguration { return fhirDaoConfig; } + @Bean + @ConditionalOnMissingBean + @ConfigurationProperties("hapi.fhir.jpa") + public PartitionSettings partitionSettings() { + return new PartitionSettings(); + } + + @Bean @ConditionalOnMissingBean @ConfigurationProperties("hapi.fhir.jpa") diff --git a/hapi-fhir-structures-r4/src/test/java/ca/uhn/fhir/rest/client/BaseGenericClientR4Test.java b/hapi-fhir-structures-r4/src/test/java/ca/uhn/fhir/rest/client/BaseGenericClientR4Test.java index 272de2932b4..a8f941668a5 100644 --- a/hapi-fhir-structures-r4/src/test/java/ca/uhn/fhir/rest/client/BaseGenericClientR4Test.java +++ b/hapi-fhir-structures-r4/src/test/java/ca/uhn/fhir/rest/client/BaseGenericClientR4Test.java @@ -84,6 +84,22 @@ public abstract class BaseGenericClientR4Test { return capt; } + protected ArgumentCaptor prepareClientForCapabilityStatement() throws IOException { + final String msg = "{\"resourceType\":\"CapabilityStatement\", \"fhirVersion\":\"4.0.1\"}"; + + ArgumentCaptor capt = ArgumentCaptor.forClass(HttpUriRequest.class); + when(myHttpClient.execute(capt.capture())).thenReturn(myHttpResponse); + when(myHttpResponse.getStatusLine()).thenReturn(new BasicStatusLine(new ProtocolVersion("HTTP", 1, 1), 200, "OK")); + when(myHttpResponse.getEntity().getContentType()).thenReturn(new BasicHeader("content-type", Constants.CT_FHIR_JSON + "; charset=UTF-8")); + when(myHttpResponse.getEntity().getContent()).then(new Answer() { + @Override + public InputStream answer(InvocationOnMock theInvocation) { + return new ReaderInputStream(new StringReader(msg), StandardCharsets.UTF_8); + } + }); + return capt; + } + protected ArgumentCaptor prepareClientForCreateResponse() throws IOException { final String msg = "{\"resourceType\":\"Patient\",\"id\":\"123\",\"active\":true}"; diff --git a/hapi-fhir-structures-r4/src/test/java/ca/uhn/fhir/rest/client/interceptor/UrlTenantSelectionInterceptorTest.java b/hapi-fhir-structures-r4/src/test/java/ca/uhn/fhir/rest/client/interceptor/UrlTenantSelectionInterceptorTest.java index 53b68f86feb..3f2587651aa 100644 --- a/hapi-fhir-structures-r4/src/test/java/ca/uhn/fhir/rest/client/interceptor/UrlTenantSelectionInterceptorTest.java +++ b/hapi-fhir-structures-r4/src/test/java/ca/uhn/fhir/rest/client/interceptor/UrlTenantSelectionInterceptorTest.java @@ -4,6 +4,7 @@ import ca.uhn.fhir.rest.client.BaseGenericClientR4Test; import ca.uhn.fhir.rest.client.api.IGenericClient; import org.apache.http.client.methods.HttpUriRequest; import org.hl7.fhir.r4.model.Bundle; +import org.hl7.fhir.r4.model.CapabilityStatement; import org.hl7.fhir.r4.model.Patient; import org.junit.Test; import org.mockito.ArgumentCaptor; @@ -28,6 +29,37 @@ public class UrlTenantSelectionInterceptorTest extends BaseGenericClientR4Test { assertEquals("http://example.com/fhir/TENANT-A/Patient/_history", capt.getAllValues().get(0).getURI().toString()); } + @Test + public void testAddTenantToGetAtRoot() throws Exception { + ArgumentCaptor capt = prepareClientForSearchResponse(); + + IGenericClient client = ourCtx.newRestfulGenericClient("http://example.com:8000"); + client.registerInterceptor(new UrlTenantSelectionInterceptor("TENANT-A")); + + client + .history() + .onType(Patient.class) + .returnBundle(Bundle.class) + .execute(); + + assertEquals("http://example.com:8000/TENANT-A/Patient/_history", capt.getAllValues().get(0).getURI().toString()); + } + + @Test + public void testAddTenantToGetMetadataAtRoot() throws Exception { + ArgumentCaptor capt = prepareClientForCapabilityStatement(); + + IGenericClient client = ourCtx.newRestfulGenericClient("http://example.com:8000/"); + client.registerInterceptor(new UrlTenantSelectionInterceptor("TENANT-A")); + + client + .capabilities() + .ofType(CapabilityStatement.class) + .execute(); + + assertEquals("http://example.com:8000/TENANT-A/metadata", capt.getAllValues().get(0).getURI().toString()); + } + @Test public void testAddTenantToPost() throws Exception { ArgumentCaptor capt = prepareClientForCreateResponse();