From 970c48ec371c1c9f9666f5b8e363f45d64a15329 Mon Sep 17 00:00:00 2001 From: jamesagnew Date: Thu, 4 Oct 2018 13:29:09 -0400 Subject: [PATCH] A bit more test cleanup --- .../ca/uhn/fhir/rest/param/TokenParam.java | 4 +- .../dstu3/SystemProviderDstu3Test.java | 663 ------------------ .../tasks/HapiFhirJpaMigrationTasks.java | 4 +- 3 files changed, 4 insertions(+), 667 deletions(-) delete mode 100644 hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/provider/dstu3/SystemProviderDstu3Test.java diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/param/TokenParam.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/param/TokenParam.java index 5f93d2c4cf5..669ebe2a57a 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/param/TokenParam.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/param/TokenParam.java @@ -9,9 +9,9 @@ package ca.uhn.fhir.rest.param; * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. diff --git a/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/provider/dstu3/SystemProviderDstu3Test.java b/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/provider/dstu3/SystemProviderDstu3Test.java deleted file mode 100644 index d0f575e63c6..00000000000 --- a/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/provider/dstu3/SystemProviderDstu3Test.java +++ /dev/null @@ -1,663 +0,0 @@ -package ca.uhn.fhir.jpa.provider.dstu3; - -import static org.hamcrest.Matchers.*; -import static org.junit.Assert.*; - -import java.io.InputStream; -import java.nio.charset.StandardCharsets; -import java.util.concurrent.TimeUnit; - -import org.apache.commons.io.IOUtils; -import org.apache.http.Header; -import org.apache.http.client.methods.*; -import org.apache.http.entity.ContentType; -import org.apache.http.entity.StringEntity; -import org.apache.http.impl.client.CloseableHttpClient; -import org.apache.http.impl.client.HttpClientBuilder; -import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; -import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.servlet.ServletContextHandler; -import org.eclipse.jetty.servlet.ServletHolder; -import org.hl7.fhir.dstu3.hapi.validation.FhirInstanceValidator; -import org.hl7.fhir.dstu3.model.*; -import org.hl7.fhir.dstu3.model.Bundle.BundleType; -import org.hl7.fhir.dstu3.model.Bundle.HTTPVerb; -import org.hl7.fhir.dstu3.model.Enumerations.AdministrativeGender; -import org.hl7.fhir.instance.model.api.IIdType; -import org.junit.*; -import org.springframework.transaction.annotation.Propagation; -import org.springframework.transaction.annotation.Transactional; - -import ca.uhn.fhir.context.FhirContext; -import ca.uhn.fhir.jpa.dao.dstu3.BaseJpaDstu3Test; -import ca.uhn.fhir.jpa.provider.SystemProviderDstu2Test; -import ca.uhn.fhir.jpa.rp.dstu3.*; -import ca.uhn.fhir.jpa.testutil.RandomServerPortProvider; -import ca.uhn.fhir.rest.api.Constants; -import ca.uhn.fhir.rest.api.EncodingEnum; -import ca.uhn.fhir.rest.client.api.IGenericClient; -import ca.uhn.fhir.rest.client.interceptor.SimpleRequestHeaderInterceptor; -import ca.uhn.fhir.rest.server.FifoMemoryPagingProvider; -import ca.uhn.fhir.rest.server.RestfulServer; -import ca.uhn.fhir.rest.server.exceptions.InvalidRequestException; -import ca.uhn.fhir.rest.server.exceptions.ResourceGoneException; -import ca.uhn.fhir.rest.server.interceptor.RequestValidatingInterceptor; -import ca.uhn.fhir.rest.server.interceptor.ResponseHighlighterInterceptor; -import ca.uhn.fhir.util.TestUtil; -import ca.uhn.fhir.validation.ResultSeverityEnum; - -public class SystemProviderDstu3Test extends BaseJpaDstu3Test { - - private static RestfulServer myRestServer; - private static IGenericClient ourClient; - private static FhirContext ourCtx; - private static CloseableHttpClient ourHttpClient; - private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(SystemProviderDstu3Test.class); - private static Server ourServer; - private static String ourServerBase; - private SimpleRequestHeaderInterceptor mySimpleHeaderInterceptor; - - @Test - public void testTransactionWithInlineConditionalUrl() throws Exception { - myDaoConfig.setAllowInlineMatchUrlReferences(true); - - Patient p = new Patient(); - p.addName().setFamily("van de Heuvelcx85ioqWJbI").addGiven("Pietercx85ioqWJbI"); - myPatientDao.create(p, mySrd); - - Organization o = new Organization(); - o.addIdentifier().setSystem("urn:oid:2.16.840.1.113883.2.4.6.1").setValue("07-8975469"); - myOrganizationDao.create(o, mySrd); - - //@formatter:off - String input = "\n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - ""; - //@formatter:off - - HttpPost req = new HttpPost(ourServerBase); - req.setEntity(new StringEntity(input, ContentType.parse(Constants.CT_FHIR_XML + "; charset=utf-8"))); - - CloseableHttpResponse resp = ourHttpClient.execute(req); - try { - String encoded = IOUtils.toString(resp.getEntity().getContent(), StandardCharsets.UTF_8); - ourLog.info(encoded); - - assertThat(encoded, containsString("transaction-response")); - } finally { - IOUtils.closeQuietly(resp.getEntity().getContent()); - } - - } - - - @Test - public void testTransactionDeleteWithDuplicateDeletes() throws Exception { - myDaoConfig.setAllowInlineMatchUrlReferences(true); - - Patient p = new Patient(); - p.addName().setFamily("van de Heuvelcx85ioqWJbI").addGiven("Pietercx85ioqWJbI"); - IIdType id = myPatientDao.create(p, mySrd).getId().toUnqualifiedVersionless(); - - ourClient.read().resource(Patient.class).withId(id); - - Bundle inputBundle = new Bundle(); - inputBundle.setType(BundleType.TRANSACTION); - inputBundle.addEntry().getRequest().setMethod(HTTPVerb.DELETE).setUrl(id.getValue()); - inputBundle.addEntry().getRequest().setMethod(HTTPVerb.DELETE).setUrl(id.getValue()); - inputBundle.addEntry().getRequest().setMethod(HTTPVerb.DELETE).setUrl("Patient?name=Pietercx85ioqWJbI"); - String input = myFhirCtx.newXmlParser().encodeResourceToString(inputBundle); - - HttpPost req = new HttpPost(ourServerBase + "?_pretty=true"); - req.setEntity(new StringEntity(input, ContentType.parse(Constants.CT_FHIR_XML + "; charset=utf-8"))); - - CloseableHttpResponse resp = ourHttpClient.execute(req); - try { - String encoded = IOUtils.toString(resp.getEntity().getContent(), StandardCharsets.UTF_8); - ourLog.info(encoded); - - assertThat(encoded, containsString("transaction-response")); - - Bundle response = myFhirCtx.newXmlParser().parseResource(Bundle.class, encoded); - assertEquals(3, response.getEntry().size()); - - } finally { - IOUtils.closeQuietly(resp.getEntity().getContent()); - } - - try { - ourClient.read().resource(Patient.class).withId(id).execute(); - fail(); - } catch (ResourceGoneException e) { - // good - } - - } - - - @Before - public void beforeStartServer() throws Exception { - if (myRestServer == null) { - PatientResourceProvider patientRp = new PatientResourceProvider(); - patientRp.setDao(myPatientDao); - - QuestionnaireResourceProviderDstu3 questionnaireRp = new QuestionnaireResourceProviderDstu3(); - questionnaireRp.setDao(myQuestionnaireDao); - - ObservationResourceProvider observationRp = new ObservationResourceProvider(); - observationRp.setDao(myObservationDao); - - OrganizationResourceProvider organizationRp = new OrganizationResourceProvider(); - organizationRp.setDao(myOrganizationDao); - - RestfulServer restServer = new RestfulServer(ourCtx); - restServer.setResourceProviders(patientRp, questionnaireRp, observationRp, organizationRp); - - restServer.setPlainProviders(mySystemProvider); - - int myPort = RandomServerPortProvider.findFreePort(); - ourServer = new Server(myPort); - - ServletContextHandler proxyHandler = new ServletContextHandler(); - proxyHandler.setContextPath("/"); - - ourServerBase = "http://localhost:" + myPort + "/fhir/context"; - - ServletHolder servletHolder = new ServletHolder(); - servletHolder.setServlet(restServer); - proxyHandler.addServlet(servletHolder, "/fhir/context/*"); - - ourCtx = FhirContext.forDstu3(); - restServer.setFhirContext(ourCtx); - - ourServer.setHandler(proxyHandler); - ourServer.start(); - - PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(5000, TimeUnit.MILLISECONDS); - HttpClientBuilder builder = HttpClientBuilder.create(); - builder.setConnectionManager(connectionManager); - ourHttpClient = builder.build(); - - ourCtx.getRestfulClientFactory().setSocketTimeout(600 * 1000); - ourClient = ourCtx.newRestfulGenericClient(ourServerBase); - ourClient.setLogRequestAndResponse(true); - myRestServer = restServer; - } - - myRestServer.setDefaultResponseEncoding(EncodingEnum.XML); - myRestServer.setPagingProvider(myPagingProvider); - } - - @Before - public void before() { - mySimpleHeaderInterceptor = new SimpleRequestHeaderInterceptor(); - ourClient.registerInterceptor(mySimpleHeaderInterceptor); - } - - @SuppressWarnings("deprecation") - @After - public void after() { - myRestServer.setUseBrowserFriendlyContentTypes(true); - ourClient.unregisterInterceptor(mySimpleHeaderInterceptor); - } - - @SuppressWarnings("deprecation") - @Test - public void testResponseUsesCorrectContentType() throws Exception { - myRestServer.setUseBrowserFriendlyContentTypes(true); - myRestServer.setDefaultResponseEncoding(EncodingEnum.JSON); - - HttpGet get = new HttpGet(ourServerBase); -// get.addHeader("Accept", "application/xml, text/html"); - CloseableHttpResponse http = ourHttpClient.execute(get); - assertThat(http.getFirstHeader("Content-Type").getValue(), containsString("application/fhir+json")); - } - - - /** - * FOrmat has changed, source is no longer valid - */ - @Test - @Ignore - public void testValidateUsingIncomingResources() throws Exception { - FhirInstanceValidator val = new FhirInstanceValidator(myValidationSupport); - RequestValidatingInterceptor interceptor = new RequestValidatingInterceptor(); - interceptor.addValidatorModule(val); - interceptor.setFailOnSeverity(ResultSeverityEnum.ERROR); - interceptor.setAddResponseHeaderOnSeverity(ResultSeverityEnum.INFORMATION); - myRestServer.registerInterceptor(interceptor); - try { - - InputStream bundleRes = SystemProviderDstu2Test.class.getResourceAsStream("/questionnaire-sdc-profile-example-ussg-fht.xml"); - String bundleStr = IOUtils.toString(bundleRes, StandardCharsets.UTF_8); - - HttpPost req = new HttpPost(ourServerBase); - req.setEntity(new StringEntity(bundleStr, ContentType.parse(Constants.CT_FHIR_XML + "; charset=utf-8"))); - - CloseableHttpResponse resp = ourHttpClient.execute(req); - try { - String encoded = IOUtils.toString(resp.getEntity().getContent(), StandardCharsets.UTF_8); - ourLog.info(encoded); - - //@formatter:off - assertThat(encoded, containsString("Questionnaire/54127-6/_history/")); - //@formatter:on - - for (Header next : resp.getHeaders(RequestValidatingInterceptor.DEFAULT_RESPONSE_HEADER_NAME)) { - ourLog.info(next.toString()); - } - } finally { - IOUtils.closeQuietly(resp.getEntity().getContent()); - } - } finally { - myRestServer.unregisterInterceptor(interceptor); - } - } - - @Test - public void testEverythingReturnsCorrectFormatInPagingLink() throws Exception { - myRestServer.setDefaultResponseEncoding(EncodingEnum.JSON); - myRestServer.setPagingProvider(new FifoMemoryPagingProvider(1).setDefaultPageSize(10)); - ResponseHighlighterInterceptor interceptor = new ResponseHighlighterInterceptor(); - myRestServer.registerInterceptor(interceptor); - - for (int i = 0; i < 11; i++) { - Patient p = new Patient(); - p.addName().setFamily("Name" + i); - ourClient.create().resource(p).execute(); - } - - HttpGet get = new HttpGet(ourServerBase + "/Patient/$everything"); - get.addHeader("Accept", "application/xml, text/html"); - CloseableHttpResponse http = ourHttpClient.execute(get); - - try { - String response = IOUtils.toString(http.getEntity().getContent(), StandardCharsets.UTF_8); - ourLog.info(response); - assertThat(response, containsString("_format=json")); - assertEquals(200, http.getStatusLine().getStatusCode()); - } finally { - http.close(); - } - - myRestServer.unregisterInterceptor(interceptor); - } - - @Test - public void testEverythingReturnsCorrectBundleType() throws Exception { - myRestServer.setDefaultResponseEncoding(EncodingEnum.JSON); - myRestServer.setPagingProvider(new FifoMemoryPagingProvider(1).setDefaultPageSize(10)); - ResponseHighlighterInterceptor interceptor = new ResponseHighlighterInterceptor(); - myRestServer.registerInterceptor(interceptor); - - for (int i = 0; i < 11; i++) { - Patient p = new Patient(); - p.addName().setFamily("Name" + i); - ourClient.create().resource(p).execute(); - } - - HttpGet get = new HttpGet(ourServerBase + "/Patient/$everything"); - get.addHeader("Accept", "application/xml+fhir"); - CloseableHttpResponse http = ourHttpClient.execute(get); - try { - String response = IOUtils.toString(http.getEntity().getContent(), StandardCharsets.UTF_8); - ourLog.info(response); - assertThat(response, not(containsString("_format"))); - assertEquals(200, http.getStatusLine().getStatusCode()); - - Bundle responseBundle = ourCtx.newXmlParser().parseResource(Bundle.class, response); - assertEquals(BundleType.SEARCHSET, responseBundle.getTypeElement().getValue()); - - } finally { - http.close(); - } - - myRestServer.unregisterInterceptor(interceptor); - } - - @Test - public void testEverythingType() throws Exception { - HttpGet get = new HttpGet(ourServerBase + "/Patient/$everything"); - CloseableHttpResponse http = ourHttpClient.execute(get); - try { - assertEquals(200, http.getStatusLine().getStatusCode()); - } finally { - http.close(); - } - } - - @Test - public void testMarkResourcesForReindexing() throws Exception { - HttpGet get = new HttpGet(ourServerBase + "/$mark-all-resources-for-reindexing"); - CloseableHttpResponse http = ourHttpClient.execute(get); - try { - String output = IOUtils.toString(http.getEntity().getContent(), StandardCharsets.UTF_8); - ourLog.info(output); - assertEquals(200, http.getStatusLine().getStatusCode()); - } finally { - IOUtils.closeQuietly(http);; - } - } - - @Transactional(propagation = Propagation.NEVER) - @Test - public void testSuggestKeywords() throws Exception { - - Patient patient = new Patient(); - patient.addName().setFamily("testSuggest"); - IIdType ptId = myPatientDao.create(patient, mySrd).getId().toUnqualifiedVersionless(); - - Observation obs = new Observation(); - obs.getCode().setText("ZXCVBNM ASDFGHJKL QWERTYUIOPASDFGHJKL"); - obs.getSubject().setReferenceElement(ptId); - IIdType obsId = myObservationDao.create(obs, mySrd).getId().toUnqualifiedVersionless(); - - obs = new Observation(); - obs.setId(obsId); - obs.getSubject().setReferenceElement(ptId); - obs.getCode().setText("ZXCVBNM ASDFGHJKL QWERTYUIOPASDFGHJKL"); - myObservationDao.update(obs, mySrd); - - HttpGet get = new HttpGet(ourServerBase + "/$suggest-keywords?context=Patient/" + ptId.getIdPart() + "/$everything&searchParam=_content&text=zxc&_pretty=true&_format=xml"); - CloseableHttpResponse http = ourHttpClient.execute(get); - try { - assertEquals(200, http.getStatusLine().getStatusCode()); - String output = IOUtils.toString(http.getEntity().getContent(), StandardCharsets.UTF_8); - ourLog.info(output); - - Parameters parameters = ourCtx.newXmlParser().parseResource(Parameters.class, output); - assertEquals(2, parameters.getParameter().size()); - assertEquals("keyword", parameters.getParameter().get(0).getPart().get(0).getName()); - assertEquals(("ZXCVBNM"), ((StringType) parameters.getParameter().get(0).getPart().get(0).getValue()).getValueAsString()); - assertEquals("score", parameters.getParameter().get(0).getPart().get(1).getName()); - assertEquals(("1.0"), ((DecimalType) parameters.getParameter().get(0).getPart().get(1).getValue()).getValueAsString()); - - } finally { - http.close(); - } - } - - @Test - public void testSuggestKeywordsInvalid() throws Exception { - Patient patient = new Patient(); - patient.addName().setFamily("testSuggest"); - IIdType ptId = myPatientDao.create(patient, mySrd).getId().toUnqualifiedVersionless(); - - Observation obs = new Observation(); - obs.getSubject().setReferenceElement(ptId); - obs.getCode().setText("ZXCVBNM ASDFGHJKL QWERTYUIOPASDFGHJKL"); - myObservationDao.create(obs, mySrd); - - HttpGet get = new HttpGet(ourServerBase + "/$suggest-keywords"); - CloseableHttpResponse http = ourHttpClient.execute(get); - try { - assertEquals(400, http.getStatusLine().getStatusCode()); - String output = IOUtils.toString(http.getEntity().getContent(), StandardCharsets.UTF_8); - ourLog.info(output); - assertThat(output, containsString("Parameter 'context' must be provided")); - } finally { - http.close(); - } - - get = new HttpGet(ourServerBase + "/$suggest-keywords?context=Patient/" + ptId.getIdPart() + "/$everything"); - http = ourHttpClient.execute(get); - try { - assertEquals(400, http.getStatusLine().getStatusCode()); - String output = IOUtils.toString(http.getEntity().getContent(), StandardCharsets.UTF_8); - ourLog.info(output); - assertThat(output, containsString("Parameter 'searchParam' must be provided")); - } finally { - http.close(); - } - - get = new HttpGet(ourServerBase + "/$suggest-keywords?context=Patient/" + ptId.getIdPart() + "/$everything&searchParam=aa"); - http = ourHttpClient.execute(get); - try { - assertEquals(400, http.getStatusLine().getStatusCode()); - String output = IOUtils.toString(http.getEntity().getContent(), StandardCharsets.UTF_8); - ourLog.info(output); - assertThat(output, containsString("Parameter 'text' must be provided")); - } finally { - http.close(); - } - - } - - @Test - public void testGetOperationDefinition() { - OperationDefinition op = ourClient.read(OperationDefinition.class, "-s-get-resource-counts"); - assertEquals("get-resource-counts", op.getCode()); - } - - @Test - public void testTransactionFromBundle() throws Exception { - InputStream bundleRes = SystemProviderDstu3Test.class.getResourceAsStream("/transaction_link_patient_eve.xml"); - String bundle = IOUtils.toString(bundleRes, StandardCharsets.UTF_8); - String response = ourClient.transaction().withBundle(bundle).prettyPrint().execute(); - ourLog.info(response); - } - - @Test - public void testTransactionWithIncompleteBundle() throws Exception { - Patient patient = new Patient(); - patient.setGender(AdministrativeGender.MALE); - - Bundle bundle = new Bundle(); - bundle.setType(BundleType.TRANSACTION); - bundle.addEntry().setResource(patient); - - try { - ourClient.transaction().withBundle(bundle).prettyPrint().execute(); - fail(); - } catch (InvalidRequestException e) { - assertThat(e.toString(), containsString("missing or invalid HTTP Verb")); - } - } - - @Test - public void testTransactionFromBundle2() throws Exception { - - InputStream bundleRes = SystemProviderDstu3Test.class.getResourceAsStream("/transaction_link_patient_eve_temp.xml"); - String bundle = IOUtils.toString(bundleRes, StandardCharsets.UTF_8); - String response = ourClient.transaction().withBundle(bundle).prettyPrint().execute(); - ourLog.info(response); - - Bundle resp = ourCtx.newXmlParser().parseResource(Bundle.class, response); - IdType id1_1 = new IdType(resp.getEntry().get(0).getResponse().getLocation()); - assertEquals("Provenance", id1_1.getResourceType()); - IdType id1_2 = new IdType(resp.getEntry().get(1).getResponse().getLocation()); - IdType id1_3 = new IdType(resp.getEntry().get(2).getResponse().getLocation()); - IdType id1_4 = new IdType(resp.getEntry().get(3).getResponse().getLocation()); - - /* - * Same bundle! - */ - - bundleRes = SystemProviderDstu3Test.class.getResourceAsStream("/transaction_link_patient_eve_temp.xml"); - bundle = IOUtils.toString(bundleRes, StandardCharsets.UTF_8); - response = ourClient.transaction().withBundle(bundle).prettyPrint().execute(); - ourLog.info(response); - - resp = ourCtx.newXmlParser().parseResource(Bundle.class, response); - IdType id2_1 = new IdType(resp.getEntry().get(0).getResponse().getLocation()); - IdType id2_2 = new IdType(resp.getEntry().get(1).getResponse().getLocation()); - IdType id2_3 = new IdType(resp.getEntry().get(2).getResponse().getLocation()); - IdType id2_4 = new IdType(resp.getEntry().get(3).getResponse().getLocation()); - - assertNotEquals(id1_1.toVersionless(), id2_1.toVersionless()); - assertEquals("Provenance", id2_1.getResourceType()); - assertEquals(id1_2.toVersionless(), id2_2.toVersionless()); - assertEquals(id1_3.toVersionless(), id2_3.toVersionless()); - assertEquals(id1_4.toVersionless(), id2_4.toVersionless()); - } - - /** - * This is Gramahe's test transaction - it requires some set up in order to work - */ - @Test - @Ignore - public void testTransactionFromBundle3() throws Exception { - - InputStream bundleRes = SystemProviderDstu3Test.class.getResourceAsStream("/grahame-transaction.xml"); - String bundle = IOUtils.toString(bundleRes, StandardCharsets.UTF_8); - String response = ourClient.transaction().withBundle(bundle).prettyPrint().execute(); - ourLog.info(response); - } - - @Test - public void testTransactionFromBundle4() throws Exception { - InputStream bundleRes = SystemProviderDstu3Test.class.getResourceAsStream("/simone_bundle.xml"); - String bundle = IOUtils.toString(bundleRes, StandardCharsets.UTF_8); - String response = ourClient.transaction().withBundle(bundle).prettyPrint().execute(); - ourLog.info(response); - Bundle bundleResp = ourCtx.newXmlParser().parseResource(Bundle.class, response); - IdType id = new IdType(bundleResp.getEntry().get(0).getResponse().getLocation()); - assertEquals("Patient", id.getResourceType()); - assertTrue(id.hasIdPart()); - assertTrue(id.isIdPartValidLong()); - assertTrue(id.hasVersionIdPart()); - assertTrue(id.isVersionIdPartValidLong()); - } - - @Test - public void testTransactionFromBundle5() throws Exception { - InputStream bundleRes = SystemProviderDstu3Test.class.getResourceAsStream("/simone_bundle2.xml"); - String bundle = IOUtils.toString(bundleRes, StandardCharsets.UTF_8); - try { - ourClient.transaction().withBundle(bundle).prettyPrint().execute(); - fail(); - } catch (InvalidRequestException e) { - OperationOutcome oo = (OperationOutcome) e.getOperationOutcome(); - assertEquals("Invalid placeholder ID found: uri:uuid:bb0cd4bc-1839-4606-8c46-ba3069e69b1d - Must be of the form 'urn:uuid:[uuid]' or 'urn:oid:[oid]'", oo.getIssue().get(0).getDiagnostics()); - assertEquals("processing", oo.getIssue().get(0).getCode().toCode()); - } - } - - @Test - public void testTransactionFromBundle6() throws Exception { - InputStream bundleRes = SystemProviderDstu3Test.class.getResourceAsStream("/simone_bundle3.xml"); - String bundle = IOUtils.toString(bundleRes, StandardCharsets.UTF_8); - ourClient.transaction().withBundle(bundle).prettyPrint().execute(); - // try { - // fail(); - // } catch (InvalidRequestException e) { - // OperationOutcome oo = (OperationOutcome) e.getOperationOutcome(); - // assertEquals("Invalid placeholder ID found: uri:uuid:bb0cd4bc-1839-4606-8c46-ba3069e69b1d - Must be of the form 'urn:uuid:[uuid]' or 'urn:oid:[oid]'", oo.getIssue().get(0).getDiagnostics()); - // assertEquals("processing", oo.getIssue().get(0).getCode()); - // } - } - - @Test - public void testTransactionSearch() throws Exception { - for (int i = 0; i < 20; i++) { - Patient p = new Patient(); - p.addName().setFamily("PATIENT_" + i); - myPatientDao.create(p, mySrd); - } - - Bundle req = new Bundle(); - req.setType(BundleType.TRANSACTION); - req.addEntry().getRequest().setMethod(HTTPVerb.GET).setUrl("Patient?"); - Bundle resp = ourClient.transaction().withBundle(req).execute(); - ourLog.info(ourCtx.newXmlParser().setPrettyPrint(true).encodeResourceToString(resp)); - - assertEquals(1, resp.getEntry().size()); - Bundle respSub = (Bundle) resp.getEntry().get(0).getResource(); - assertEquals("self", respSub.getLink().get(0).getRelation()); - assertEquals(ourServerBase + "/Patient", respSub.getLink().get(0).getUrl()); - assertEquals("next", respSub.getLink().get(1).getRelation()); - assertThat(respSub.getLink().get(1).getUrl(), containsString("/fhir/context?_getpages")); - assertThat(respSub.getEntry().get(0).getFullUrl(), startsWith(ourServerBase + "/Patient/")); - assertEquals(Patient.class, respSub.getEntry().get(0).getResource().getClass()); - } - - @Test - public void testTransactionCount() throws Exception { - for (int i = 0; i < 20; i++) { - Patient p = new Patient(); - p.addName().setFamily("PATIENT_" + i); - myPatientDao.create(p, mySrd); - } - - Bundle req = new Bundle(); - req.setType(BundleType.TRANSACTION); - req.addEntry().getRequest().setMethod(HTTPVerb.GET).setUrl("Patient?_summary=count"); - Bundle resp = ourClient.transaction().withBundle(req).execute(); - ourLog.info(ourCtx.newXmlParser().setPrettyPrint(true).encodeResourceToString(resp)); - - assertEquals(1, resp.getEntry().size()); - Bundle respSub = (Bundle) resp.getEntry().get(0).getResource(); - assertEquals(20, respSub.getTotal()); - assertEquals(0, respSub.getEntry().size()); - } - - @Test - public void testTransactionCreateWithPreferHeader() throws Exception { - - Patient p = new Patient(); - p.setActive(true); - - Bundle req; - Bundle resp; - - // No prefer header - req = new Bundle(); - req.setType(BundleType.TRANSACTION); - req.addEntry().setResource(p).getRequest().setMethod(HTTPVerb.POST).setUrl("Patient"); - resp = ourClient.transaction().withBundle(req).execute(); - assertEquals(null, resp.getEntry().get(0).getResource()); - assertEquals("201 Created", resp.getEntry().get(0).getResponse().getStatus()); - - // Prefer return=minimal - mySimpleHeaderInterceptor.setHeaderName(Constants.HEADER_PREFER); - mySimpleHeaderInterceptor.setHeaderValue(Constants.HEADER_PREFER_RETURN + "=" + Constants.HEADER_PREFER_RETURN_MINIMAL); - req = new Bundle(); - req.setType(BundleType.TRANSACTION); - req.addEntry().setResource(p).getRequest().setMethod(HTTPVerb.POST).setUrl("Patient"); - resp = ourClient.transaction().withBundle(req).execute(); - assertEquals(null, resp.getEntry().get(0).getResource()); - assertEquals("201 Created", resp.getEntry().get(0).getResponse().getStatus()); - - // Prefer return=representation - mySimpleHeaderInterceptor.setHeaderName(Constants.HEADER_PREFER); - mySimpleHeaderInterceptor.setHeaderValue(Constants.HEADER_PREFER_RETURN + "=" + Constants.HEADER_PREFER_RETURN_REPRESENTATION); - req = new Bundle(); - req.setType(BundleType.TRANSACTION); - req.addEntry().setResource(p).getRequest().setMethod(HTTPVerb.POST).setUrl("Patient"); - resp = ourClient.transaction().withBundle(req).execute(); - assertEquals(Patient.class, resp.getEntry().get(0).getResource().getClass()); - assertEquals("201 Created", resp.getEntry().get(0).getResponse().getStatus()); - } - - @AfterClass - public static void afterClassClearContext() throws Exception { - ourServer.stop(); - TestUtil.clearAllStaticFieldsForUnitTest(); - } - -} 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 85193d45102..ff0ced2dfdc 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 @@ -9,9 +9,9 @@ package ca.uhn.fhir.jpa.migrate.tasks; * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.