diff --git a/sdk/src/main/java/io/dapr/client/DaprHttp.java b/sdk/src/main/java/io/dapr/client/DaprHttp.java index 489fd4049..0dc395834 100644 --- a/sdk/src/main/java/io/dapr/client/DaprHttp.java +++ b/sdk/src/main/java/io/dapr/client/DaprHttp.java @@ -85,7 +85,8 @@ public enum HttpMethods { HEAD, CONNECT, OPTIONS, - TRACE + TRACE, + PATCH } public static class Response { diff --git a/sdk/src/test/java/io/dapr/client/DaprHttpTest.java b/sdk/src/test/java/io/dapr/client/DaprHttpTest.java index ad6753479..739957ea8 100644 --- a/sdk/src/test/java/io/dapr/client/DaprHttpTest.java +++ b/sdk/src/test/java/io/dapr/client/DaprHttpTest.java @@ -273,6 +273,36 @@ public void invokeDeleteMethod() throws IOException { assertEquals("http://" + sidecarIp + ":3500/v1.0/state", request.uri().toString()); } + @Test + public void invokePatchMethod() throws IOException { + byte[] content = serializer.serialize(EXPECTED_RESULT); + MockHttpResponse mockHttpResponse = new MockHttpResponse(content, HTTP_OK); + CompletableFuture> mockResponse = CompletableFuture.completedFuture(mockHttpResponse); + ArgumentCaptor requestCaptor = ArgumentCaptor.forClass(HttpRequest.class); + + when(httpClient.sendAsync(any(), any())).thenReturn(mockResponse); + + DaprHttp daprHttp = new DaprHttp(sidecarIp, 3500, daprTokenApi, READ_TIMEOUT, httpClient); + Mono mono = daprHttp.invokeApi( + "PATCH", + "v1.0/state".split("/"), + null, + "", + null, + Context.empty() + ); + DaprHttp.Response response = mono.block(); + String body = serializer.deserialize(response.getBody(), String.class); + + verify(httpClient).sendAsync(requestCaptor.capture(), any()); + + HttpRequest request = requestCaptor.getValue(); + + assertEquals(EXPECTED_RESULT, body); + assertEquals("PATCH", request.method()); + assertEquals("http://" + sidecarIp + ":3500/v1.0/state", request.uri().toString()); + } + @Test public void invokeHeadMethod() { MockHttpResponse mockHttpResponse = new MockHttpResponse(HTTP_OK);