diff --git a/sdk/pom.xml b/sdk/pom.xml index e036c01d0d..43259eae50 100644 --- a/sdk/pom.xml +++ b/sdk/pom.xml @@ -15,6 +15,16 @@ 0.2.0 dapr-sdk SDK for Dapr + + + + false + + central + libs-release + https://repo.spring.io/libs-release + + @@ -52,7 +62,14 @@ mockito-core test + + com.github.gmazzo + okhttp-mock + 1.3.2 + test + + true diff --git a/sdk/src/test/java/io/dapr/client/DaprHttpTest.java b/sdk/src/test/java/io/dapr/client/DaprHttpTest.java new file mode 100644 index 0000000000..000fc01336 --- /dev/null +++ b/sdk/src/test/java/io/dapr/client/DaprHttpTest.java @@ -0,0 +1,115 @@ +/* + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT License. + */ +package io.dapr.client; + +import okhttp3.*; +import okhttp3.mock.Behavior; +import okhttp3.mock.MockInterceptor; +import org.junit.Before; +import org.junit.Test; +import reactor.core.publisher.Mono; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +import static org.junit.Assert.assertEquals; + + +public class DaprHttpTest { + + private OkHttpClient okHttpClient; + + private MockInterceptor mockInterceptor; + + private final String EXPECTED_RESULT = "{\"data\":\"ewoJCSJwcm9wZXJ0eUEiOiAidmFsdWVBIiwKCQkicHJvcGVydHlCIjogInZhbHVlQiIKCX0=\"}"; + + @Before + public void setUp() throws Exception { + mockInterceptor = new MockInterceptor(Behavior.UNORDERED); + okHttpClient = new OkHttpClient.Builder().addInterceptor(mockInterceptor).build(); + } + + @Test + public void invokePostMethod() throws IOException { + + mockInterceptor.addRule() + .post("http://localhost:3500/v1.0/state") + .respond(EXPECTED_RESULT); + + DaprHttp daprHttp = new DaprHttp("http://localhost",3500,okHttpClient); + + Mono mono = daprHttp.invokeAPI("POST","v1.0/state",null); + assertEquals(EXPECTED_RESULT,mono.block()); + + } + + @Test + public void invokeDeleteMethod() throws IOException { + + mockInterceptor.addRule() + .delete("http://localhost:3500/v1.0/state") + .respond(EXPECTED_RESULT); + + DaprHttp daprHttp = new DaprHttp("http://localhost",3500,okHttpClient); + + Mono mono = daprHttp.invokeAPI("DELETE","v1.0/state",null); + assertEquals(EXPECTED_RESULT,mono.block()); + + } + + @Test + public void invokeGetMethod() throws IOException { + + mockInterceptor.addRule() + .get("http://localhost:3500/v1.0/get") + .respond(EXPECTED_RESULT); + + DaprHttp daprHttp = new DaprHttp("http://localhost",3500,okHttpClient); + + Mono mono = daprHttp.invokeAPI("GET","v1.0/get",null); + + assertEquals(EXPECTED_RESULT,mono.block()); + + } + + @Test + public void invokeMethodWithHeaders() { + + Map headers = new HashMap<>(); + headers.put("header","value"); + headers.put("header1","value1"); + + mockInterceptor.addRule() + .get("http://localhost:3500/v1.0/get") + .respond(EXPECTED_RESULT); + DaprHttp daprHttp = new DaprHttp("http://localhost",3500,okHttpClient); + + Mono mono = daprHttp.invokeAPI("GET","v1.0/get",headers); + + assertEquals(EXPECTED_RESULT,mono.block()); + + } + + @Test(expected = RuntimeException.class) + public void invokeMethodRuntimeException(){ + + Map headers = new HashMap<>(); + headers.put("header","value"); + headers.put("header1","value1"); + + mockInterceptor.addRule() + .get("http://localhost:3500/v1.0/get") + .respond(500, ResponseBody.create(MediaType.parse("application/json"), + "{\"errorCode\":\"500\",\"message\":\"Error\"}")); + + DaprHttp daprHttp = new DaprHttp("http://localhost",3500,okHttpClient); + + Mono mono = daprHttp.invokeAPI("GET","v1.0/get",headers); + + assertEquals(EXPECTED_RESULT,mono.block()); + } + +} \ No newline at end of file