@Test public void convertAndSendCustomJmsMessageConverter() throws JMSException { messagingTemplate.setJmsMessageConverter(new SimpleMessageConverter() { @Override public javax.jms.Message toMessage(Object object, Session session) throws JMSException, org.springframework.jms.support.converter.MessageConversionException { throw new org.springframework.jms.support.converter.MessageConversionException("Test exception"); } }); messagingTemplate.convertAndSend("myQueue", "msg to convert"); verify(jmsTemplate).send(eq("myQueue"), messageCreator.capture()); thrown.expect(org.springframework.messaging.converter.MessageConversionException.class); thrown.expectMessage(new StringContains("Test exception")); messageCreator.getValue().createMessage(mock(Session.class)); }
@Test public void missingJiraUrl() throws IOException, ScmSyncException { Properties props = new Properties(); props.setProperty("port","31"); props.setProperty("allowed.hosts", "127.0.0.1,192.168.1.1"); props.setProperty("jira.user", "user"); props.setProperty("jira.password", "password"); writePropertiesFile(props, Server.propertiesFileName); // Set runtime environment System.setProperty(Server.homeDirProperty, testDir.getAbsolutePath()); expectedException.expect(ScmSyncException.class); expectedException.expectMessage(new StringContains("jira.url property missing from")); new Server(); }
@Test public void missingAllowedList() throws Exception { // Configure Partial Properties File Properties props = new Properties(); props.setProperty("port","31"); File propFile = writePropertiesFile(props, Server.propertiesFileName); // Set runtime environment System.setProperty(Server.homeDirProperty, testDir.getAbsolutePath()); // configure expected error expectedException.expect(ScmSyncException.class); expectedException.expectMessage(new StringContains("Cannot locate allowed.hosts property in scmsync properties")); new Server(); }
/** * US02.01.01, UC02.02.01 */ @Test public void testAddFriend() throws Exception { onView(withId(R.id.addFriendFab)).perform(click()); pause(); onView(withClassName(new StringContains("EditText"))). perform(typeText(TEST_OTHER_USER), closeSoftKeyboard()); pause(); onView(withText("Add")). perform(click()); pause(); onData(hasToString(TEST_OTHER_USER)) .inAdapterView(withId(R.id.friendsListListView)) .check(matches(isDisplayed())); pause(); }
/** * UC02.03.01 */ @Test public void testAddAndRemoveFriend() throws InterruptedException { onView(withId(R.id.addFriendFab)).perform(click()); pause(); onView(withClassName(new StringContains("EditText"))) .perform(typeText(TEST_OTHER_USER), closeSoftKeyboard()); pause(); onView(withText("Add")) .perform(click()); pause(); onData(hasToString(TEST_OTHER_USER)) .inAdapterView(withId(R.id.friendsListListView)) .check(matches(isDisplayed())); pause(); onData(hasToString(TEST_OTHER_USER)) .inAdapterView(withId(R.id.friendsListListView)) .perform(longClick()); pause(); onView(withId(R.id.friendsListListView)) .check(matches(not(withAdaptedData(hasToString(TEST_OTHER_USER))))); pause(); }
@Test public void testEncodeDeclaredExtensionWithAddressContent() { IParser parser = new FhirContext().newJsonParser(); MyPatientWithOneDeclaredAddressExtension patient = new MyPatientWithOneDeclaredAddressExtension(); patient.addAddress().setUse(AddressUse.HOME); patient.setFoo(new Address().addLine("line1")); String val = parser.encodeResourceToString(patient); ourLog.info(val); assertThat(val, StringContains.containsString("\"extension\":[{\"url\":\"urn:foo\",\"valueAddress\":{\"line\":[\"line1\"]}}]")); MyPatientWithOneDeclaredAddressExtension actual = parser.parseResource(MyPatientWithOneDeclaredAddressExtension.class, val); assertEquals(AddressUse.HOME, patient.getAddress().get(0).getUse()); Address ref = actual.getFoo(); assertEquals("line1", ref.getLine().get(0).getValue()); }
/** * US02.01.01, UC02.02.01 */ @Test public void testAddFriend_emptyInput() { onView(withId(R.id.addFriendFab)).perform(click()); pause(); onView(withClassName(new StringContains("EditText"))) .perform(clearText(), closeSoftKeyboard()); pause(); onView(withText("Add")) .perform(click()); //assert list does not contain friend onView(withId(R.id.friendsListListView)) .check(matches(not(withAdaptedData(hasToString(PrimaryUserHelper.FRIEND_WITH_AN_INVENTORY))))); pause(); }
@Test public void testEncodeResourceRef() throws DataFormatException { Patient patient = new Patient(); patient.setManagingOrganization(new Reference()); IParser p = new FhirContext().newJsonParser(); String str = p.encodeResourceToString(patient); assertThat(str, IsNot.not(StringContains.containsString("managingOrganization"))); patient.setManagingOrganization(new Reference("Organization/123")); str = p.encodeResourceToString(patient); assertThat(str, StringContains.containsString("\"managingOrganization\":{\"reference\":\"Organization/123\"}")); Organization org = new Organization(); org.addIdentifier().setSystem("foo").setValue("bar"); patient.setManagingOrganization(new Reference(org)); str = p.encodeResourceToString(patient); assertThat(str, StringContains.containsString("\"contained\":[{\"resourceType\":\"Organization\"")); }
@Test public void testDFSWithInvalidCommmand() throws Throwable { FsShell shell = new FsShell(new Configuration()); try (GenericTestUtils.SystemErrCapturer capture = new GenericTestUtils.SystemErrCapturer()) { ToolRunner.run(shell, new String[]{"dfs -mkdirs"}); Assert.assertThat("FSShell dfs command did not print the error " + "message when invalid command is passed", capture.getOutput(), StringContains.containsString( "-mkdirs: Unknown command")); Assert.assertThat("FSShell dfs command did not print help " + "message when invalid command is passed", capture.getOutput(), StringContains.containsString( "Usage: hadoop fs [generic options]")); } }
@Test public void testExceptionNullMessage() throws Exception { final String cmdName = "-cmdExNullMsg"; final Command cmd = Mockito.mock(Command.class); Mockito.when(cmd.run(Mockito.<String>anyVararg())).thenThrow( new IllegalArgumentException()); Mockito.when(cmd.getUsage()).thenReturn(cmdName); final CommandFactory cmdFactory = Mockito.mock(CommandFactory.class); final String[] names = {cmdName}; Mockito.when(cmdFactory.getNames()).thenReturn(names); Mockito.when(cmdFactory.getInstance(cmdName)).thenReturn(cmd); FsShell shell = new FsShell(new Configuration()); shell.commandFactory = cmdFactory; try (GenericTestUtils.SystemErrCapturer capture = new GenericTestUtils.SystemErrCapturer()) { ToolRunner.run(shell, new String[]{cmdName}); Assert.assertThat(capture.getOutput(), StringContains.containsString(cmdName + ": Null exception message")); } }
@Test public void testEncodeBundleCategory() { Bundle b = new Bundle(); BundleEntryComponent e = b.addEntry(); e.setResource(new Patient()); e.getResource().getMeta().addTag().setSystem("scheme").setCode( "term").setDisplay( "label"); String val = ourCtx.newXmlParser().setPrettyPrint(true).encodeResourceToString(b); ourLog.info(val); assertThat(val, StringContains.containsString("<category term=\"term\" label=\"label\" scheme=\"scheme\"/>")); b = ourCtx.newXmlParser().parseResource(Bundle.class, val); assertEquals(1, b.getEntry().size()); assertEquals(1, b.getEntry().get(0).getResource().getMeta().getTag().size()); assertEquals("scheme", b.getEntry().get(0).getResource().getMeta().getTag().get(0).getSystem()); assertEquals("term", b.getEntry().get(0).getResource().getMeta().getTag().get(0).getCode()); assertEquals("label", b.getEntry().get(0).getResource().getMeta().getTag().get(0).getDisplay()); assertNull(b.getEntry().get(0).getResource()); }
@Test public void testEncodeExtensionWithResourceContent() { IParser parser = new FhirContext().newJsonParser(); Patient patient = new Patient(); patient.addAddress().setUse(AddressUse.HOME); patient.addExtension().setUrl("urn:foo").setValue( new Reference("Organization/123")); String val = parser.encodeResourceToString(patient); ourLog.info(val); assertThat(val, StringContains.containsString("\"extension\":[{\"url\":\"urn:foo\",\"valueResource\":{\"reference\":\"Organization/123\"}}]")); Patient actual = parser.parseResource(Patient.class, val); assertEquals(AddressUse.HOME, patient.getAddress().get(0).getUse()); List<Extension> ext = actual.getExtension(); assertEquals(1, ext.size()); Reference ref = (Reference) ext.get(0).getValue(); assertEquals("Organization/123", ref.getReference()); }
/** * See issue #50 */ @Test public void testOutOfBoundsDate() { Patient p = new Patient(); p.setBirthDate(new DateTimeDt("2000-15-31")); String encoded = ourCtx.newXmlParser().setPrettyPrint(true).encodeResourceToString(p); ourLog.info(encoded); assertThat(encoded, StringContains.containsString("2000-15-31")); p = ourCtx.newXmlParser().parseResource(Patient.class, encoded); assertEquals("2000-15-31", p.getBirthDate().getValueAsString()); assertEquals("2001-03-31", new SimpleDateFormat("yyyy-MM-dd").format(p.getBirthDate().getValue())); ValidationResult result = ourCtx.newValidator().validateWithResult(p); String resultString = ourCtx.newXmlParser().setPrettyPrint(true).encodeResourceToString(result.getOperationOutcome()); ourLog.info(resultString); assertEquals(2, result.getOperationOutcome().getIssue().size()); assertThat(resultString, StringContains.containsString("cvc-datatype-valid.1.2.3")); }
@Test public void testEncodeBundleCategory() { Bundle b = new Bundle(); BundleEntry e = b.addEntry(); e.setResource(new Patient()); e.addCategory("scheme", "term", "label"); String val = ourCtx.newXmlParser().setPrettyPrint(true).encodeBundleToString(b); ourLog.info(val); assertThat(val, StringContains.containsString("<category term=\"term\" label=\"label\" scheme=\"scheme\"/>")); b = ourCtx.newXmlParser().parseBundle(val); assertEquals(1, b.getEntries().size()); assertEquals(1, b.getEntries().get(0).getCategories().size()); assertEquals("term", b.getEntries().get(0).getCategories().get(0).getTerm()); assertEquals("label", b.getEntries().get(0).getCategories().get(0).getLabel()); assertEquals("scheme", b.getEntries().get(0).getCategories().get(0).getScheme()); assertNull(b.getEntries().get(0).getResource()); }
/** * See issue #50 */ @Test public void testOutOfBoundsDate() { Patient p = new Patient(); p.setBirthDate(new DateDt("2000-15-31")); String encoded = ourCtx.newXmlParser().setPrettyPrint(true).encodeResourceToString(p); ourLog.info(encoded); assertThat(encoded, StringContains.containsString("2000-15-31")); p = ourCtx.newXmlParser().parseResource(Patient.class, encoded); assertEquals("2000-15-31", p.getBirthDateElement().getValueAsString()); assertEquals("2001-03-31", new SimpleDateFormat("yyyy-MM-dd").format(p.getBirthDate())); ValidationResult result = ourCtx.newValidator().validateWithResult(p); String resultString = ourCtx.newXmlParser().setPrettyPrint(true).encodeResourceToString(result.getOperationOutcome()); ourLog.info(resultString); assertEquals(2, result.getOperationOutcome().getIssue().size()); assertThat(resultString, StringContains.containsString("cvc-pattern-valid: Value '2000-15-31'")); }
@Test public void testEncodeDeclaredExtensionWithAddressContent() { IParser parser = ourCtx.newXmlParser(); MyPatientWithOneDeclaredAddressExtension patient = new MyPatientWithOneDeclaredAddressExtension(); patient.addAddress().setUse(AddressUseEnum.HOME); patient.setFoo(new AddressDt().addLine("line1")); String val = parser.encodeResourceToString(patient); ourLog.info(val); assertThat(val, StringContains.containsString("<extension url=\"urn:foo\"><valueAddress><line value=\"line1\"/></valueAddress></extension>")); MyPatientWithOneDeclaredAddressExtension actual = parser.parseResource(MyPatientWithOneDeclaredAddressExtension.class, val); assertEquals(AddressUseEnum.HOME, patient.getAddressFirstRep().getUse().getValueAsEnum()); AddressDt ref = actual.getFoo(); assertEquals("line1", ref.getLineFirstRep().getValue()); }
@Test public void testEncodeDeclaredExtensionWithResourceContent() { IParser parser = ourCtx.newXmlParser(); MyPatientWithOneDeclaredExtension patient = new MyPatientWithOneDeclaredExtension(); patient.addAddress().setUse(AddressUseEnum.HOME); patient.setFoo(new ResourceReferenceDt("Organization/123")); String val = parser.encodeResourceToString(patient); ourLog.info(val); assertThat(val, StringContains.containsString("<extension url=\"urn:foo\"><valueResource><reference value=\"Organization/123\"/></valueResource></extension>")); MyPatientWithOneDeclaredExtension actual = parser.parseResource(MyPatientWithOneDeclaredExtension.class, val); assertEquals(AddressUseEnum.HOME, patient.getAddressFirstRep().getUse().getValueAsEnum()); ResourceReferenceDt ref = actual.getFoo(); assertEquals("Organization/123", ref.getReference().getValue()); }
@Test public void testEncodeExtensionWithResourceContent() { IParser parser = ourCtx.newXmlParser(); Patient patient = new Patient(); patient.addAddress().setUse(AddressUseEnum.HOME); patient.addUndeclaredExtension(false, "urn:foo", new ResourceReferenceDt("Organization/123")); String val = parser.encodeResourceToString(patient); ourLog.info(val); assertThat(val, StringContains.containsString("<extension url=\"urn:foo\"><valueResource><reference value=\"Organization/123\"/></valueResource></extension>")); Patient actual = parser.parseResource(Patient.class, val); assertEquals(AddressUseEnum.HOME, patient.getAddressFirstRep().getUse().getValueAsEnum()); List<ExtensionDt> ext = actual.getUndeclaredExtensionsByUrl("urn:foo"); assertEquals(1, ext.size()); ResourceReferenceDt ref = (ResourceReferenceDt) ext.get(0).getValue(); assertEquals("Organization/123", ref.getReference().getValue()); }
@Test public void testEncodeResourceRef() throws DataFormatException { Patient patient = new Patient(); patient.setManagingOrganization(new ResourceReferenceDt()); IParser p = ourCtx.newXmlParser(); String str = p.encodeResourceToString(patient); assertThat(str, IsNot.not(StringContains.containsString("managingOrganization"))); ResourceReferenceDt ref = new ResourceReferenceDt(); ref.setReference("Organization/123"); ref.setDisplay("DISPLAY!"); patient.setManagingOrganization(ref); str = p.encodeResourceToString(patient); assertThat(str, StringContains.containsString("<managingOrganization><reference value=\"Organization/123\"/><display value=\"DISPLAY!\"/></managingOrganization>")); Organization org = new Organization(); org.addIdentifier().setSystem("foo").setValue("bar"); patient.setManagingOrganization(new ResourceReferenceDt(org)); str = p.encodeResourceToString(patient); assertThat(str, StringContains.containsString("<contained><Organization")); }
@Test public void testEncodeUndeclaredExtensionWithAddressContent() { IParser parser = ourCtx.newXmlParser(); Patient patient = new Patient(); patient.addAddress().setUse(AddressUseEnum.HOME); patient.addUndeclaredExtension(false, "urn:foo", new AddressDt().addLine("line1")); String val = parser.encodeResourceToString(patient); ourLog.info(val); assertThat(val, StringContains.containsString("<extension url=\"urn:foo\"><valueAddress><line value=\"line1\"/></valueAddress></extension>")); MyPatientWithOneDeclaredAddressExtension actual = parser.parseResource(MyPatientWithOneDeclaredAddressExtension.class, val); assertEquals(AddressUseEnum.HOME, patient.getAddressFirstRep().getUse().getValueAsEnum()); AddressDt ref = actual.getFoo(); assertEquals("line1", ref.getLineFirstRep().getValue()); }
@Test public void testExtensionsWithDatatypes() throws DataFormatException { MyPatient patient = new MyPatient(); patient.setPetName(new StringDt("Fido")); patient.getImportantDates().add(new DateTimeDt("2010-01-02")); patient.getImportantDates().add(new DateTimeDt("2014-01-26T11:11:11")); patient.addName().addFamily("Smith"); IParser p = ourCtx.newXmlParser(); String str = p.encodeResourceToString(patient); ourLog.info(str); assertThat(str, StringContains.containsString("<Patient xmlns=\"http://hl7.org/fhir\">")); assertThat(str, StringContains.containsString("<extension url=\"http://example.com/dontuse#petname\"><valueString value=\"Fido\"/></extension>")); assertThat(str, StringContains.containsString("<modifierExtension url=\"http://example.com/dontuse#importantDates\"><valueDateTime value=\"2010-01-02\"/></modifierExtension>")); assertThat(str, StringContains.containsString("<modifierExtension url=\"http://example.com/dontuse#importantDates\"><valueDateTime value=\"2014-01-26T11:11:11\"/></modifierExtension>")); assertThat(str, StringContains.containsString("<name><family value=\"Smith\"/></name>")); }
@Test public void testEncodeBundleEntryCategory() { Bundle b = new Bundle(); BundleEntry e = b.addEntry(); e.setResource(new Patient()); e.addCategory("scheme", "term", "label"); String val = ourCtx.newJsonParser().setPrettyPrint(false).encodeBundleToString(b); ourLog.info(val); assertThat(val, StringContains.containsString("\"category\":[{\"term\":\"term\",\"label\":\"label\",\"scheme\":\"scheme\"}]")); b = ourCtx.newJsonParser().parseBundle(val); assertEquals(1, b.getEntries().size()); assertEquals(1, b.getEntries().get(0).getCategories().size()); assertEquals("term", b.getEntries().get(0).getCategories().get(0).getTerm()); assertEquals("label", b.getEntries().get(0).getCategories().get(0).getLabel()); assertEquals("scheme", b.getEntries().get(0).getCategories().get(0).getScheme()); assertNull(b.getEntries().get(0).getResource()); }
@Test public void testEncodeContainedResourcesMore() { DiagnosticReport rpt = new DiagnosticReport(); Specimen spm = new Specimen(); rpt.getText().setDiv("AAA"); rpt.addSpecimen().setResource(spm); IParser p = new FhirContext(DiagnosticReport.class).newJsonParser().setPrettyPrint(true); String str = p.encodeResourceToString(rpt); ourLog.info(str); assertThat(str, StringContains.containsString("<div>AAA</div>")); String substring = "\"reference\":\"#"; assertThat(str, StringContains.containsString(substring)); int idx = str.indexOf(substring) + substring.length(); int idx2 = str.indexOf('"', idx + 1); String id = str.substring(idx, idx2); assertThat(str, StringContains.containsString("\"id\":\"" + id + "\"")); assertThat(str, IsNot.not(StringContains.containsString("<?xml version='1.0'?>"))); }
@Test public void testEncodeContainedResources() throws Exception { DiagnosticReport rpt = new DiagnosticReport(); Specimen spm = new Specimen(); spm.addIdentifier().setSystem("urn").setValue( "123"); rpt.getText().setDivAsString("AAA"); rpt.addSpecimen().setResource(spm); IParser p = ourCtx.newXmlParser().setPrettyPrint(true); String str = p.encodeResourceToString(rpt); ourLog.info(str); assertThat(str, StringContains.containsString("<div xmlns=\"http://www.w3.org/1999/xhtml\">AAA</div>")); assertThat(str, StringContains.containsString("reference value=\"#")); int idx = str.indexOf("reference value=\"#") + "reference value=\"#".length(); int idx2 = str.indexOf('"', idx + 1); String id = str.substring(idx, idx2); assertThat(str, StringContains.containsString("<Specimen xmlns=\"http://hl7.org/fhir\" id=\"" + id + "\">")); assertThat(str, IsNot.not(StringContains.containsString("<?xml version='1.0'?>"))); }
@Test public void testEncodeDeclaredExtensionWithResourceContent() { IParser parser = new FhirContext().newJsonParser(); MyPatientWithOneDeclaredExtension patient = new MyPatientWithOneDeclaredExtension(); patient.addAddress().setUse(AddressUseEnum.HOME); patient.setFoo(new ResourceReferenceDt("Organization/123")); String val = parser.encodeResourceToString(patient); ourLog.info(val); assertThat(val, StringContains.containsString("\"extension\":[{\"url\":\"urn:foo\",\"valueResource\":{\"reference\":\"Organization/123\"}}]")); MyPatientWithOneDeclaredExtension actual = parser.parseResource(MyPatientWithOneDeclaredExtension.class, val); assertEquals(AddressUseEnum.HOME, patient.getAddressFirstRep().getUse().getValueAsEnum()); ResourceReferenceDt ref = actual.getFoo(); assertEquals("Organization/123", ref.getReference().getValue()); }
@Test public void testEncodeExtensionWithResourceContent() { IParser parser = new FhirContext().newJsonParser(); Patient patient = new Patient(); patient.addAddress().setUse(AddressUseEnum.HOME); patient.addUndeclaredExtension(false, "urn:foo", new ResourceReferenceDt("Organization/123")); String val = parser.encodeResourceToString(patient); ourLog.info(val); assertThat(val, StringContains.containsString("\"extension\":[{\"url\":\"urn:foo\",\"valueResource\":{\"reference\":\"Organization/123\"}}]")); Patient actual = parser.parseResource(Patient.class, val); assertEquals(AddressUseEnum.HOME, patient.getAddressFirstRep().getUse().getValueAsEnum()); List<ExtensionDt> ext = actual.getUndeclaredExtensionsByUrl("urn:foo"); assertEquals(1, ext.size()); ResourceReferenceDt ref = (ResourceReferenceDt) ext.get(0).getValue(); assertEquals("Organization/123", ref.getReference().getValue()); }
@Test public void testEncodeResourceRef() throws DataFormatException { Patient patient = new Patient(); patient.setManagingOrganization(new ResourceReferenceDt()); IParser p = new FhirContext().newJsonParser(); String str = p.encodeResourceToString(patient); assertThat(str, IsNot.not(StringContains.containsString("managingOrganization"))); patient.setManagingOrganization(new ResourceReferenceDt("Organization/123")); str = p.encodeResourceToString(patient); assertThat(str, StringContains.containsString("\"managingOrganization\":{\"reference\":\"Organization/123\"}")); Organization org = new Organization(); org.addIdentifier().setSystem("foo").setValue("bar"); patient.setManagingOrganization(new ResourceReferenceDt(org)); str = p.encodeResourceToString(patient); assertThat(str, StringContains.containsString("\"contained\":[{\"resourceType\":\"Organization\"")); }
@Test public void testGenerateDiagnosticReport() throws DataFormatException { DiagnosticReport value = new DiagnosticReport(); value.getName().setText("Some Diagnostic Report"); value.addResult().setReference("Observation/1"); value.addResult().setReference("Observation/2"); value.addResult().setReference("Observation/3"); NarrativeDt narrative = new NarrativeDt(); gen.generateNarrative("http://hl7.org/fhir/profiles/DiagnosticReport", value, narrative); String output = narrative.getDiv().getValueAsString(); ourLog.info(output); assertThat(output, StringContains.containsString(value.getName().getText().getValue())); }
@Test public void testCreateBad() throws Exception { Patient patient = new Patient(); patient.addIdentifier("urn:foo", "123"); ArgumentCaptor<HttpUriRequest> capt = ArgumentCaptor.forClass(HttpUriRequest.class); when(httpClient.execute(capt.capture())).thenReturn(httpResponse); when(httpResponse.getStatusLine()).thenReturn(new BasicStatusLine(new ProtocolVersion("HTTP", 1, 1), 400, "foobar")); when(httpResponse.getEntity().getContentType()).thenReturn(new BasicHeader("content-type", Constants.CT_TEXT + "; charset=UTF-8")); when(httpResponse.getEntity().getContent()).thenReturn(new ReaderInputStream(new StringReader("foobar"), Charset.forName("UTF-8"))); try { ctx.newRestfulClient(ITestClient.class, "http://foo").createPatient(patient); fail(); } catch (InvalidRequestException e) { assertThat(e.getMessage(), StringContains.containsString("foobar")); } }
/** * Some servers (older ones?) return the resourcde you created instead of an OperationOutcome. We just need to ignore it. */ @Test public void testCreateWithResourceResponse() throws Exception { Patient patient = new Patient(); patient.addIdentifier("urn:foo", "123"); ArgumentCaptor<HttpUriRequest> capt = ArgumentCaptor.forClass(HttpUriRequest.class); when(httpClient.execute(capt.capture())).thenReturn(httpResponse); when(httpResponse.getStatusLine()).thenReturn(new BasicStatusLine(new ProtocolVersion("HTTP", 1, 1), 201, "OK")); when(httpResponse.getEntity().getContentType()).thenReturn(new BasicHeader("content-type", Constants.CT_FHIR_XML + "; charset=UTF-8")); when(httpResponse.getEntity().getContent()).thenReturn(new ReaderInputStream(new StringReader(ctx.newXmlParser().encodeResourceToString(patient)), Charset.forName("UTF-8"))); when(httpResponse.getAllHeaders()).thenReturn(toHeaderArray("Location", "http://example.com/fhir/Patient/100/_history/200")); ITestClient client = ctx.newRestfulClient(ITestClient.class, "http://foo"); MethodOutcome response = client.createPatient(patient); assertEquals(HttpPost.class, capt.getValue().getClass()); HttpPost post = (HttpPost) capt.getValue(); assertThat(IOUtils.toString(post.getEntity().getContent()), StringContains.containsString("<Patient")); assertEquals("http://example.com/fhir/Patient/100/_history/200", response.getId().getValue()); assertEquals("200", response.getId().getVersionIdPart()); }
@Test public void testUpdate() throws Exception { Patient patient = new Patient(); patient.addIdentifier("urn:foo", "123"); ArgumentCaptor<HttpUriRequest> capt = ArgumentCaptor.forClass(HttpUriRequest.class); when(httpClient.execute(capt.capture())).thenReturn(httpResponse); when(httpResponse.getStatusLine()).thenReturn(new BasicStatusLine(new ProtocolVersion("HTTP", 1, 1), 201, "OK")); when(httpResponse.getEntity().getContentType()).thenReturn(new BasicHeader("content-type", Constants.CT_TEXT + "; charset=UTF-8")); when(httpResponse.getEntity().getContent()).thenReturn(new ReaderInputStream(new StringReader(""), Charset.forName("UTF-8"))); when(httpResponse.getAllHeaders()).thenReturn(toHeaderArray("Location", "http://example.com/fhir/Patient/100/_history/200")); ITestClient client = ctx.newRestfulClient(ITestClient.class, "http://foo"); MethodOutcome response = client.updatePatient(new IdDt("100"), patient); assertEquals(HttpPut.class, capt.getValue().getClass()); HttpPut post = (HttpPut) capt.getValue(); assertThat(post.getURI().toASCIIString(), StringEndsWith.endsWith("/Patient/100")); assertThat(IOUtils.toString(post.getEntity().getContent()), StringContains.containsString("<Patient")); assertEquals("http://example.com/fhir/Patient/100/_history/200", response.getId().getValue()); assertEquals("200", response.getId().getVersionIdPart()); assertEquals(EncodingEnum.XML.getResourceContentType() + Constants.HEADER_SUFFIX_CT_UTF_8, capt.getAllValues().get(0).getFirstHeader(Constants.HEADER_CONTENT_TYPE).getValue()); }
@Test public void testUpdateWithVersion() throws Exception { Patient patient = new Patient(); patient.addIdentifier("urn:foo", "123"); ArgumentCaptor<HttpUriRequest> capt = ArgumentCaptor.forClass(HttpUriRequest.class); when(httpClient.execute(capt.capture())).thenReturn(httpResponse); when(httpResponse.getStatusLine()).thenReturn(new BasicStatusLine(new ProtocolVersion("HTTP", 1, 1), 201, "OK")); when(httpResponse.getEntity().getContentType()).thenReturn(new BasicHeader("content-type", Constants.CT_TEXT + "; charset=UTF-8")); when(httpResponse.getEntity().getContent()).thenReturn(new ReaderInputStream(new StringReader(""), Charset.forName("UTF-8"))); when(httpResponse.getAllHeaders()).thenReturn(toHeaderArray("Location", "http://example.com/fhir/Patient/100/_history/200")); ITestClient client = ctx.newRestfulClient(ITestClient.class, "http://foo"); MethodOutcome response = client.updatePatient(new IdDt("Patient/100/_history/200"), patient); assertEquals(HttpPut.class, capt.getValue().getClass()); HttpPut post = (HttpPut) capt.getValue(); assertThat(post.getURI().toASCIIString(), StringEndsWith.endsWith("/Patient/100")); assertThat(IOUtils.toString(post.getEntity().getContent()), StringContains.containsString("<Patient")); assertThat(post.getFirstHeader("Content-Location").getValue(), StringEndsWith.endsWith("Patient/100/_history/200")); assertEquals("http://example.com/fhir/Patient/100/_history/200", response.getId().getValue()); assertEquals("200", response.getId().getVersionIdPart()); }
@Test public void testValidate() throws Exception { Patient patient = new Patient(); patient.addIdentifier("urn:foo", "123"); ArgumentCaptor<HttpUriRequest> capt = ArgumentCaptor.forClass(HttpUriRequest.class); when(httpClient.execute(capt.capture())).thenReturn(httpResponse); when(httpResponse.getStatusLine()).thenReturn(new BasicStatusLine(new ProtocolVersion("HTTP", 1, 1), 201, "OK")); when(httpResponse.getEntity().getContentType()).thenReturn(new BasicHeader("content-type", Constants.CT_TEXT + "; charset=UTF-8")); when(httpResponse.getEntity().getContent()).thenReturn(new ReaderInputStream(new StringReader(""), Charset.forName("UTF-8"))); when(httpResponse.getAllHeaders()).thenReturn(toHeaderArray("Location", "http://example.com/fhir/Patient/100/_history/200")); ITestClient client = ctx.newRestfulClient(ITestClient.class, "http://foo"); MethodOutcome response = client.validatePatient(patient); assertEquals(HttpPost.class, capt.getValue().getClass()); HttpPost post = (HttpPost) capt.getValue(); assertThat(post.getURI().toASCIIString(), StringEndsWith.endsWith("/Patient/_validate")); assertThat(IOUtils.toString(post.getEntity().getContent()), StringContains.containsString("<Patient")); assertEquals("http://example.com/fhir/Patient/100/_history/200", response.getId().getValue()); assertEquals("200", response.getId().getVersionIdPart()); }
@Test public void testFail500WithPlainMessage() throws Exception { String msg = "Help I'm a bug"; String contentType = Constants.CT_TEXT; ArgumentCaptor<HttpUriRequest> capt = ArgumentCaptor.forClass(HttpUriRequest.class); when(myHttpClient.execute(capt.capture())).thenReturn(myHttpResponse); when(myHttpResponse.getStatusLine()).thenReturn(new BasicStatusLine(new ProtocolVersion("HTTP", 1, 1), 500, "Internal Error")); when(myHttpResponse.getEntity().getContentType()).thenReturn(new BasicHeader("content-type", contentType + "; charset=UTF-8")); when(myHttpResponse.getEntity().getContent()).thenReturn(new ReaderInputStream(new StringReader(msg), Charset.forName("UTF-8"))); IGenericClient client = ourCtx.newRestfulGenericClient("http://example.com/fhir"); try { client.read(Patient.class, new IdDt("Patient/1234")); fail(); } catch (InternalErrorException e) { assertThat(e.getMessage(), StringContains.containsString("HTTP 500 Internal Error")); assertThat(e.getMessage(), StringContains.containsString("Help I'm a bug")); } }
@Test public void testFail500WithOperationOutcomeMessage() throws Exception { OperationOutcome oo = new OperationOutcome(); oo.getIssueFirstRep().getDetails().setValue("Help I'm a bug"); String msg = ourCtx.newXmlParser().encodeResourceToString(oo); String contentType = Constants.CT_FHIR_XML; ArgumentCaptor<HttpUriRequest> capt = ArgumentCaptor.forClass(HttpUriRequest.class); when(myHttpClient.execute(capt.capture())).thenReturn(myHttpResponse); when(myHttpResponse.getStatusLine()).thenReturn(new BasicStatusLine(new ProtocolVersion("HTTP", 1, 1), 500, "Internal Error")); when(myHttpResponse.getEntity().getContentType()).thenReturn(new BasicHeader("content-type", contentType + "; charset=UTF-8")); when(myHttpResponse.getEntity().getContent()).thenReturn(new ReaderInputStream(new StringReader(msg), Charset.forName("UTF-8"))); IGenericClient client = ourCtx.newRestfulGenericClient("http://example.com/fhir"); try { client.read(Patient.class, new IdDt("Patient/1234")); fail(); } catch (InternalErrorException e) { assertThat(e.getMessage(), StringContains.containsString("HTTP 500 Internal Error")); assertThat(e.getMessage(), StringContains.containsString("Help I'm a bug")); } }
@Test public void testFail500WithUnexpectedResource() throws Exception { Patient patient = new Patient(); patient.addIdentifier().setSystem("foo").setValue("bar"); String msg = ourCtx.newXmlParser().encodeResourceToString(patient); String contentType = Constants.CT_FHIR_XML; ArgumentCaptor<HttpUriRequest> capt = ArgumentCaptor.forClass(HttpUriRequest.class); when(myHttpClient.execute(capt.capture())).thenReturn(myHttpResponse); when(myHttpResponse.getStatusLine()).thenReturn(new BasicStatusLine(new ProtocolVersion("HTTP", 1, 1), 500, "Internal Error")); when(myHttpResponse.getEntity().getContentType()).thenReturn(new BasicHeader("content-type", contentType + "; charset=UTF-8")); when(myHttpResponse.getEntity().getContent()).thenReturn(new ReaderInputStream(new StringReader(msg), Charset.forName("UTF-8"))); IGenericClient client = ourCtx.newRestfulGenericClient("http://example.com/fhir"); try { client.read(Patient.class, new IdDt("Patient/1234")); fail(); } catch (InternalErrorException e) { assertEquals("HTTP 500 Internal Error", e.getMessage()); assertThat(e.getResponseBody(), StringContains.containsString("value=\"foo\"")); } }
@Test public void testFail500WithOperationOutcomeMessageJson() throws Exception { OperationOutcome oo = new OperationOutcome(); oo.getIssueFirstRep().getDetails().setValue("Help I'm a bug"); String msg = ourCtx.newJsonParser().encodeResourceToString(oo); String contentType = Constants.CT_FHIR_JSON; ArgumentCaptor<HttpUriRequest> capt = ArgumentCaptor.forClass(HttpUriRequest.class); when(myHttpClient.execute(capt.capture())).thenReturn(myHttpResponse); when(myHttpResponse.getStatusLine()).thenReturn(new BasicStatusLine(new ProtocolVersion("HTTP", 1, 1), 500, "Internal Error")); when(myHttpResponse.getEntity().getContentType()).thenReturn(new BasicHeader("content-type", contentType + "; charset=UTF-8")); when(myHttpResponse.getEntity().getContent()).thenReturn(new ReaderInputStream(new StringReader(msg), Charset.forName("UTF-8"))); IGenericClient client = ourCtx.newRestfulGenericClient("http://example.com/fhir"); try { client.read(Patient.class, new IdDt("Patient/1234")); fail(); } catch (InternalErrorException e) { assertThat(e.getMessage(), StringContains.containsString("HTTP 500 Internal Error")); assertThat(e.getMessage(), StringContains.containsString("Help I'm a bug")); assertNotNull(e.getOperationOutcome()); assertEquals("Help I'm a bug",e.getOperationOutcome().getIssueFirstRep().getDetailsElement().getValue()); } }
@Test public void testFail500WithOperationOutcomeMessageGeneric() throws Exception { OperationOutcome oo = new OperationOutcome(); oo.getIssueFirstRep().getDetails().setValue("Help I'm a bug"); String msg = ourCtx.newJsonParser().encodeResourceToString(oo); String contentType = Constants.CT_FHIR_JSON; ArgumentCaptor<HttpUriRequest> capt = ArgumentCaptor.forClass(HttpUriRequest.class); when(myHttpClient.execute(capt.capture())).thenReturn(myHttpResponse); when(myHttpResponse.getStatusLine()).thenReturn(new BasicStatusLine(new ProtocolVersion("HTTP", 1, 1), 500, "Internal Error")); when(myHttpResponse.getEntity().getContentType()).thenReturn(new BasicHeader("content-type", contentType + "; charset=UTF-8")); when(myHttpResponse.getEntity().getContent()).thenReturn(new ReaderInputStream(new StringReader(msg), Charset.forName("UTF-8"))); IMyClient client = ourCtx.newRestfulClient(IMyClient.class,"http://example.com/fhir"); try { client.read(new IdDt("Patient/1234")); fail(); } catch (InternalErrorException e) { assertThat(e.getMessage(), StringContains.containsString("HTTP 500 Internal Error")); assertThat(e.getMessage(), StringContains.containsString("Help I'm a bug")); assertNotNull(e.getOperationOutcome()); assertEquals("Help I'm a bug",e.getOperationOutcome().getIssueFirstRep().getDetailsElement().getValue()); } }
@SuppressWarnings("unused") @Test public void testSearchWithNonFhirResponse() throws Exception { String msg = getPatientFeedWithOneResult(); ArgumentCaptor<HttpUriRequest> 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_TEXT + "; charset=UTF-8")); when(myHttpResponse.getEntity().getContent()).thenReturn(new ReaderInputStream(new StringReader("Server Issues!"), Charset.forName("UTF-8"))); IGenericClient client = ourCtx.newRestfulGenericClient("http://example.com/fhir"); try { client.search().forResource(Patient.class).execute(); fail(); } catch (NonFhirResponseException e) { assertThat(e.getMessage(), StringContains.containsString("Server Issues!")); } }
@Test public void testEncodeUndeclaredExtensionWithAddressContent() { IParser parser = ourCtx.newXmlParser(); Patient patient = new Patient(); patient.addAddress().setUse(AddressUse.HOME); patient.addExtension().setUrl("urn:foo").setValue(new Address().addLine("line1")); String val = parser.encodeResourceToString(patient); ourLog.info(val); assertThat(val, StringContains.containsString("<extension url=\"urn:foo\"><valueAddress><line value=\"line1\"/></valueAddress></extension>")); MyPatientWithOneDeclaredAddressExtension actual = parser.parseResource(MyPatientWithOneDeclaredAddressExtension.class, val); assertEquals(AddressUse.HOME, patient.getAddress().get(0).getUse()); Address ref = actual.getFoo(); assertEquals("line1", ref.getLine().get(0).getValue()); }