From 2f2bc903b52c70066fed4e61ff740ebaf43fbe29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathias=20R=C3=BChle?= Date: Thu, 23 Nov 2023 00:26:35 +0100 Subject: [PATCH] Respect Path of Flare Base URL --- .../client/flare/FlareWebserviceClientImpl.java | 2 +- .../flare/FlareWebserviceClientImplTest.java | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/feasibility-dsf-process/src/main/java/de/medizininformatik_initiative/feasibility_dsf_process/client/flare/FlareWebserviceClientImpl.java b/feasibility-dsf-process/src/main/java/de/medizininformatik_initiative/feasibility_dsf_process/client/flare/FlareWebserviceClientImpl.java index 5646011..fc01a23 100644 --- a/feasibility-dsf-process/src/main/java/de/medizininformatik_initiative/feasibility_dsf_process/client/flare/FlareWebserviceClientImpl.java +++ b/feasibility-dsf-process/src/main/java/de/medizininformatik_initiative/feasibility_dsf_process/client/flare/FlareWebserviceClientImpl.java @@ -26,7 +26,7 @@ public FlareWebserviceClientImpl(HttpClient httpClient, URI flareBaseUrl) { @Override public int requestFeasibility(byte[] structuredQuery) throws IOException, InterruptedException { - var req = new HttpPost(flareBaseUrl.resolve("/query/execute")); + var req = new HttpPost(flareBaseUrl.resolve((flareBaseUrl.getPath() + "/query/execute").replaceAll("//", "/"))); req.setEntity(new ByteArrayEntity(structuredQuery)); req.setHeader(new BasicHeader(HEADER_CONTENT_TYPE, "application/sq+json")); diff --git a/feasibility-dsf-process/src/test/java/de/medizininformatik_initiative/feasibility_dsf_process/client/flare/FlareWebserviceClientImplTest.java b/feasibility-dsf-process/src/test/java/de/medizininformatik_initiative/feasibility_dsf_process/client/flare/FlareWebserviceClientImplTest.java index bbe32f4..3141958 100644 --- a/feasibility-dsf-process/src/test/java/de/medizininformatik_initiative/feasibility_dsf_process/client/flare/FlareWebserviceClientImplTest.java +++ b/feasibility-dsf-process/src/test/java/de/medizininformatik_initiative/feasibility_dsf_process/client/flare/FlareWebserviceClientImplTest.java @@ -6,6 +6,8 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; import org.mockito.junit.jupiter.MockitoExtension; import java.io.IOException; @@ -23,6 +25,7 @@ public class FlareWebserviceClientImplTest { private org.apache.http.client.HttpClient httpClient; private FlareWebserviceClient flareWebserviceClient; + @Captor ArgumentCaptor postCaptor; @BeforeEach public void setUp() throws URISyntaxException { @@ -60,4 +63,18 @@ public void testRequestFeasibility() throws IOException, InterruptedException { assertEquals(15, feasibility); } + + @Test + public void testName() throws Exception { + String path = "/foo/bar/"; + flareWebserviceClient = new FlareWebserviceClientImpl(httpClient, URI.create("http://foo.bar:1234" + path)); + var structuredQuery = "foo".getBytes(); + + when(httpClient.execute(postCaptor.capture(), any(BasicResponseHandler.class))) + .thenReturn("99"); + + var feasibility = flareWebserviceClient.requestFeasibility(structuredQuery); + + assertEquals(path + "query/execute", postCaptor.getValue().getURI().getPath()); + } }