mirror of https://github.com/dapr/java-sdk.git
Creating unit tests for HttpAdapter + Adding junit 5 dependency + Reformating code (#112)
Co-authored-by: Artur Souza <artursouza.ms@outlook.com>
This commit is contained in:
parent
8bb452f66a
commit
bcf653bc5e
|
@ -86,6 +86,12 @@
|
|||
<version>1.19.0</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.junit.jupiter</groupId>
|
||||
<artifactId>junit-jupiter-engine</artifactId>
|
||||
<version>5.5.2</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
|
|
@ -331,19 +331,19 @@ public class DaprClientHttpAdapter implements DaprClient {
|
|||
|
||||
/**
|
||||
* Builds a StateKeyValue object based on the Response
|
||||
* @param resonse The response of the HTTP Call
|
||||
* @param response The response of the HTTP Call
|
||||
* @param requestedKey The Key Requested.
|
||||
* @param clazz The Class of the Value of the state
|
||||
* @param <T> The Type of the Value of the state
|
||||
* @return A StateKeyValue instance
|
||||
* @throws IOException If there's a issue deserialzing the response.
|
||||
*/
|
||||
private <T> StateKeyValue<T> buildStateKeyValue(DaprHttp.Response resonse, String requestedKey, StateOptions stateOptions, Class<T> clazz) throws IOException {
|
||||
T value = objectSerializer.deserialize(resonse.getBody(), clazz);
|
||||
private <T> StateKeyValue<T> buildStateKeyValue(DaprHttp.Response response, String requestedKey, StateOptions stateOptions, Class<T> clazz) throws IOException {
|
||||
T value = objectSerializer.deserialize(response.getBody(), clazz);
|
||||
String key = requestedKey;
|
||||
String etag = null;
|
||||
if (resonse.getHeaders() != null && resonse.getHeaders().containsKey("Etag")) {
|
||||
etag = objectSerializer.deserialize(resonse.getHeaders().get("Etag"), String.class);
|
||||
if (response.getHeaders() != null && response.getHeaders().containsKey("Etag")) {
|
||||
etag = objectSerializer.deserialize(response.getHeaders().get("Etag"), String.class);
|
||||
}
|
||||
return new StateKeyValue<>(value, key, etag, stateOptions);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,462 @@
|
|||
/*
|
||||
* Copyright (c) Microsoft Corporation.
|
||||
* Licensed under the MIT License.
|
||||
*/
|
||||
package io.dapr.client;
|
||||
|
||||
import io.dapr.client.domain.StateKeyValue;
|
||||
import io.dapr.client.domain.StateOptions;
|
||||
import io.dapr.client.domain.Verb;
|
||||
import io.dapr.utils.ObjectSerializer;
|
||||
import okhttp3.OkHttpClient;
|
||||
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.*;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import static org.mockito.Mockito.mock;
|
||||
|
||||
public class DaprClientHttpAdapterTest {
|
||||
|
||||
private DaprClientHttpAdapter daprClientHttpAdapter;
|
||||
|
||||
private DaprHttp daprHttp;
|
||||
|
||||
private OkHttpClient okHttpClient;
|
||||
|
||||
private MockInterceptor mockInterceptor;
|
||||
|
||||
private ObjectSerializer serializer = new ObjectSerializer();
|
||||
|
||||
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 publishEventInvokation() {
|
||||
mockInterceptor.addRule()
|
||||
.post("http://localhost:3000/v1.0/publish/A")
|
||||
.respond(EXPECTED_RESULT);
|
||||
String event = "{ \"message\": \"This is a test\" }";
|
||||
daprHttp = new DaprHttp(3000, okHttpClient);
|
||||
DaprClientHttpAdapter daprClientHttpAdapter = new DaprClientHttpAdapter(daprHttp);
|
||||
Mono<Void> mono = daprClientHttpAdapter.publishEvent("A", event, null);
|
||||
assertNull(mono.block());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void publishEvent() {
|
||||
mockInterceptor.addRule()
|
||||
.post("http://localhost:3000/v1.0/publish/A")
|
||||
.respond(EXPECTED_RESULT);
|
||||
String event = "{ \"message\": \"This is a test\" }";
|
||||
daprHttp = new DaprHttp(3000, okHttpClient);
|
||||
daprClientHttpAdapter = new DaprClientHttpAdapter(daprHttp);
|
||||
Mono<Void> mono = daprClientHttpAdapter.publishEvent("A", event);
|
||||
assertNull(mono.block());
|
||||
}
|
||||
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
public void publishEventIfTopicIsNull() {
|
||||
mockInterceptor.addRule()
|
||||
.post("http://localhost:3000/v1.0/publish/A")
|
||||
.respond(EXPECTED_RESULT);
|
||||
String event = "{ \"message\": \"This is a test\" }";
|
||||
daprHttp = new DaprHttp(3000, okHttpClient);
|
||||
daprClientHttpAdapter = new DaprClientHttpAdapter(daprHttp);
|
||||
Mono<Void> mono = daprClientHttpAdapter.publishEvent("", event);
|
||||
assertNull(mono.block());
|
||||
}
|
||||
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
public void invokeServiceVerbNull() {
|
||||
mockInterceptor.addRule()
|
||||
.post("http://localhost:3000/v1.0/publish/A")
|
||||
.respond(EXPECTED_RESULT);
|
||||
String event = "{ \"message\": \"This is a test\" }";
|
||||
daprHttp = new DaprHttp(3000, okHttpClient);
|
||||
daprClientHttpAdapter = new DaprClientHttpAdapter(daprHttp);
|
||||
Mono<Void> mono = daprClientHttpAdapter.invokeService(null, "", "", null, null, null);
|
||||
assertNull(mono.block());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void invokeServiceIllegalArgumentException() {
|
||||
mockInterceptor.addRule()
|
||||
.post("http://localhost:3000/v1.0/publish/A")
|
||||
.respond(EXPECTED_RESULT);
|
||||
String event = "{ \"message\": \"This is a test\" }";
|
||||
daprHttp = new DaprHttp(3000, okHttpClient);
|
||||
daprClientHttpAdapter = new DaprClientHttpAdapter(daprHttp);
|
||||
assertThrows(IllegalArgumentException.class, () -> {
|
||||
daprClientHttpAdapter.invokeService(null, "", "", null, null, null).block();
|
||||
});
|
||||
assertThrows(IllegalArgumentException.class, () -> {
|
||||
daprClientHttpAdapter.invokeService(Verb.POST, null, "", null, null, null).block();
|
||||
});
|
||||
assertThrows(IllegalArgumentException.class, () -> {
|
||||
daprClientHttpAdapter.invokeService(Verb.POST, "", "", null, null, null).block();
|
||||
});
|
||||
assertThrows(IllegalArgumentException.class, () -> {
|
||||
daprClientHttpAdapter.invokeService(Verb.POST, "1", null, null, null, null).block();
|
||||
});
|
||||
assertThrows(IllegalArgumentException.class, () -> {
|
||||
daprClientHttpAdapter.invokeService(Verb.POST, "1", "", null, null, null).block();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
public void invokeServiceMethodNull() {
|
||||
mockInterceptor.addRule()
|
||||
.post("http://localhost:3000/v1.0/publish/A")
|
||||
.respond(EXPECTED_RESULT);
|
||||
String event = "{ \"message\": \"This is a test\" }";
|
||||
daprHttp = new DaprHttp(3000, okHttpClient);
|
||||
daprClientHttpAdapter = new DaprClientHttpAdapter(daprHttp);
|
||||
Mono<Void> mono = daprClientHttpAdapter.invokeService(Verb.POST, "1", "", null, null, null);
|
||||
assertNull(mono.block());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void invokeService() {
|
||||
mockInterceptor.addRule()
|
||||
.get("http://localhost:3000/v1.0/invoke/41/method/neworder")
|
||||
.respond(EXPECTED_RESULT);
|
||||
daprHttp = new DaprHttp(3000, okHttpClient);
|
||||
daprClientHttpAdapter = new DaprClientHttpAdapter(daprHttp);
|
||||
Mono<String> mono = daprClientHttpAdapter.invokeService(Verb.GET, "41", "neworder", null, null, String.class);
|
||||
assertEquals(mono.block(), EXPECTED_RESULT);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void simpleInvokeService() {
|
||||
Map<String, String> map = new HashMap<>();
|
||||
mockInterceptor.addRule()
|
||||
.get("http://localhost:3000/v1.0/invoke/41/method/neworder")
|
||||
.respond(EXPECTED_RESULT);
|
||||
daprHttp = new DaprHttp(3000, okHttpClient);
|
||||
daprClientHttpAdapter = new DaprClientHttpAdapter(daprHttp);
|
||||
Mono<String> mono = daprClientHttpAdapter.invokeService(Verb.GET, "41", "neworder", null, String.class);
|
||||
assertEquals(mono.block(), EXPECTED_RESULT);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void invokeServiceWithMaps() {
|
||||
Map<String, String> map = new HashMap<>();
|
||||
mockInterceptor.addRule()
|
||||
.get("http://localhost:3000/v1.0/invoke/41/method/neworder")
|
||||
.respond(EXPECTED_RESULT);
|
||||
daprHttp = new DaprHttp(3000, okHttpClient);
|
||||
daprClientHttpAdapter = new DaprClientHttpAdapter(daprHttp);
|
||||
Mono<byte[]> mono = daprClientHttpAdapter.invokeService(Verb.GET, "41", "neworder", (byte[]) null, map);
|
||||
String monoString = new String(mono.block());
|
||||
assertEquals(monoString, EXPECTED_RESULT);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void invokeServiceWithOutRequest() {
|
||||
Map<String, String> map = new HashMap<>();
|
||||
mockInterceptor.addRule()
|
||||
.get("http://localhost:3000/v1.0/invoke/41/method/neworder")
|
||||
.respond(EXPECTED_RESULT);
|
||||
daprHttp = new DaprHttp(3000, okHttpClient);
|
||||
daprClientHttpAdapter = new DaprClientHttpAdapter(daprHttp);
|
||||
Mono<Void> mono = daprClientHttpAdapter.invokeService(Verb.GET, "41", "neworder", map);
|
||||
assertNull(mono.block());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void invokeServiceWithRequest() {
|
||||
Map<String, String> map = new HashMap<>();
|
||||
mockInterceptor.addRule()
|
||||
.get("http://localhost:3000/v1.0/invoke/41/method/neworder")
|
||||
.respond(EXPECTED_RESULT);
|
||||
daprHttp = new DaprHttp(3000, okHttpClient);
|
||||
daprClientHttpAdapter = new DaprClientHttpAdapter(daprHttp);
|
||||
Mono<Void> mono = daprClientHttpAdapter.invokeService(Verb.GET, "41", "neworder", "", map);
|
||||
assertNull(mono.block());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void invokeBinding() {
|
||||
Map<String, String> map = new HashMap<>();
|
||||
mockInterceptor.addRule()
|
||||
.post("http://localhost:3000/v1.0/bindings/sample-topic")
|
||||
.respond(EXPECTED_RESULT);
|
||||
daprHttp = new DaprHttp(3000, okHttpClient);
|
||||
daprClientHttpAdapter = new DaprClientHttpAdapter(daprHttp);
|
||||
Mono<Void> mono = daprClientHttpAdapter.invokeBinding("sample-topic", "");
|
||||
assertNull(mono.block());
|
||||
}
|
||||
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
public void invokeBindingNullName() {
|
||||
Map<String, String> map = new HashMap<>();
|
||||
mockInterceptor.addRule()
|
||||
.post("http://localhost:3000/v1.0/bindings/sample-topic")
|
||||
.respond(EXPECTED_RESULT);
|
||||
daprHttp = new DaprHttp(3000, okHttpClient);
|
||||
daprClientHttpAdapter = new DaprClientHttpAdapter(daprHttp);
|
||||
Mono<Void> mono = daprClientHttpAdapter.invokeBinding(null, "");
|
||||
assertNull(mono.block());
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void getStates() {
|
||||
StateKeyValue<String> stateKeyValue = new StateKeyValue("value", "key", "etag", null);
|
||||
StateKeyValue<String> stateKeyNull = new StateKeyValue("value", null, "etag", null);
|
||||
StateOptions stateOptions = mock(StateOptions.class);
|
||||
mockInterceptor.addRule()
|
||||
.get("http://localhost:3000/v1.0/state/key")
|
||||
.respond(EXPECTED_RESULT);
|
||||
daprHttp = new DaprHttp(3000, okHttpClient);
|
||||
daprClientHttpAdapter = new DaprClientHttpAdapter(daprHttp);
|
||||
assertThrows(IllegalArgumentException.class, () -> {
|
||||
daprClientHttpAdapter.getState(stateKeyNull, null, String.class).block();
|
||||
});
|
||||
Mono<StateKeyValue<String>> mono = daprClientHttpAdapter.getState(stateKeyValue, stateOptions, String.class);
|
||||
assertEquals(mono.block().getKey(), "key");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getStatesEmptyEtag() {
|
||||
StateKeyValue<String> stateEmptyEtag = new StateKeyValue("value", "key", "", null);
|
||||
mockInterceptor.addRule()
|
||||
.get("http://localhost:3000/v1.0/state/key")
|
||||
.respond(EXPECTED_RESULT);
|
||||
daprHttp = new DaprHttp(3000, okHttpClient);
|
||||
daprClientHttpAdapter = new DaprClientHttpAdapter(daprHttp);
|
||||
Mono<StateKeyValue<String>> monoEmptyEtag = daprClientHttpAdapter.getState(stateEmptyEtag, null, String.class);
|
||||
assertEquals(monoEmptyEtag.block().getKey(), "key");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getStatesNullEtag() {
|
||||
StateKeyValue<String> stateNullEtag = new StateKeyValue("value", "key", null, null);
|
||||
mockInterceptor.addRule()
|
||||
.get("http://localhost:3000/v1.0/state/key")
|
||||
.respond(EXPECTED_RESULT);
|
||||
daprHttp = new DaprHttp(3000, okHttpClient);
|
||||
daprClientHttpAdapter = new DaprClientHttpAdapter(daprHttp);
|
||||
Mono<StateKeyValue<String>> monoNullEtag = daprClientHttpAdapter.getState(stateNullEtag, null, String.class);
|
||||
assertEquals(monoNullEtag.block().getKey(), "key");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void saveStates() {
|
||||
StateKeyValue<String> stateKeyValue = new StateKeyValue("value", "key", "etag", null);
|
||||
List<StateKeyValue<String>> stateKeyValueList = Arrays.asList(stateKeyValue);
|
||||
mockInterceptor.addRule()
|
||||
.post("http://localhost:3000/v1.0/state")
|
||||
.respond(EXPECTED_RESULT);
|
||||
daprHttp = new DaprHttp(3000, okHttpClient);
|
||||
daprClientHttpAdapter = new DaprClientHttpAdapter(daprHttp);
|
||||
Mono<Void> mono = daprClientHttpAdapter.saveStates(stateKeyValueList);
|
||||
assertNull(mono.block());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void saveStatesNull() {
|
||||
StateKeyValue<String> stateKeyValue = new StateKeyValue("value", "key", "", null);
|
||||
List<StateKeyValue<String>> stateKeyValueList = new ArrayList();
|
||||
mockInterceptor.addRule()
|
||||
.post("http://localhost:3000/v1.0/state")
|
||||
.respond(EXPECTED_RESULT);
|
||||
daprHttp = new DaprHttp(3000, okHttpClient);
|
||||
daprClientHttpAdapter = new DaprClientHttpAdapter(daprHttp);
|
||||
Mono<Void> mono = daprClientHttpAdapter.saveStates(null);
|
||||
assertNull(mono.block());
|
||||
Mono<Void> mono1 = daprClientHttpAdapter.saveStates(stateKeyValueList);
|
||||
assertNull(mono1.block());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void saveStatesEtagNull() {
|
||||
StateKeyValue<String> stateKeyValue = new StateKeyValue("value", "key", null, null);
|
||||
List<StateKeyValue<String>> stateKeyValueList = Arrays.asList(stateKeyValue);
|
||||
mockInterceptor.addRule()
|
||||
.post("http://localhost:3000/v1.0/state")
|
||||
.respond(EXPECTED_RESULT);
|
||||
daprHttp = new DaprHttp(3000, okHttpClient);
|
||||
daprClientHttpAdapter = new DaprClientHttpAdapter(daprHttp);
|
||||
Mono<Void> mono = daprClientHttpAdapter.saveStates(stateKeyValueList);
|
||||
assertNull(mono.block());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void saveStatesEtagEmpty() {
|
||||
StateKeyValue<String> stateKeyValue = new StateKeyValue("value", "key", "", null);
|
||||
List<StateKeyValue<String>> stateKeyValueList = Arrays.asList(stateKeyValue);
|
||||
mockInterceptor.addRule()
|
||||
.post("http://localhost:3000/v1.0/state")
|
||||
.respond(EXPECTED_RESULT);
|
||||
daprHttp = new DaprHttp(3000, okHttpClient);
|
||||
daprClientHttpAdapter = new DaprClientHttpAdapter(daprHttp);
|
||||
Mono<Void> mono = daprClientHttpAdapter.saveStates(stateKeyValueList);
|
||||
assertNull(mono.block());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void simpleSaveStates() {
|
||||
mockInterceptor.addRule()
|
||||
.post("http://localhost:3000/v1.0/state")
|
||||
.respond(EXPECTED_RESULT);
|
||||
StateOptions stateOptions = mock(StateOptions.class);
|
||||
daprHttp = new DaprHttp(3000, okHttpClient);
|
||||
daprClientHttpAdapter = new DaprClientHttpAdapter(daprHttp);
|
||||
Mono<Void> mono = daprClientHttpAdapter.saveState("key", "etag", "value", stateOptions);
|
||||
assertNull(mono.block());
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void deleteState() {
|
||||
StateKeyValue<String> stateKeyValue = new StateKeyValue("value", "key", "etag", null);
|
||||
StateOptions stateOptions = mock(StateOptions.class);
|
||||
mockInterceptor.addRule()
|
||||
.delete("http://localhost:3000/v1.0/state/key")
|
||||
.respond(EXPECTED_RESULT);
|
||||
daprHttp = new DaprHttp(3000, okHttpClient);
|
||||
daprClientHttpAdapter = new DaprClientHttpAdapter(daprHttp);
|
||||
Mono<Void> mono = daprClientHttpAdapter.deleteState(stateKeyValue, stateOptions);
|
||||
assertNull(mono.block());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void deleteStateNullEtag() {
|
||||
StateKeyValue<String> stateKeyValue = new StateKeyValue("value", "key", null, null);
|
||||
mockInterceptor.addRule()
|
||||
.delete("http://localhost:3000/v1.0/state/key")
|
||||
.respond(EXPECTED_RESULT);
|
||||
daprHttp = new DaprHttp(3000, okHttpClient);
|
||||
daprClientHttpAdapter = new DaprClientHttpAdapter(daprHttp);
|
||||
Mono<Void> mono = daprClientHttpAdapter.deleteState(stateKeyValue, null);
|
||||
assertNull(mono.block());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void deleteStateEmptyEtag() {
|
||||
StateKeyValue<String> stateKeyValue = new StateKeyValue("value", "key", "", null);
|
||||
mockInterceptor.addRule()
|
||||
.delete("http://localhost:3000/v1.0/state/key")
|
||||
.respond(EXPECTED_RESULT);
|
||||
daprHttp = new DaprHttp(3000, okHttpClient);
|
||||
daprClientHttpAdapter = new DaprClientHttpAdapter(daprHttp);
|
||||
Mono<Void> mono = daprClientHttpAdapter.deleteState(stateKeyValue, null);
|
||||
assertNull(mono.block());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void deleteStateIllegalArgumentException() {
|
||||
StateKeyValue<String> stateKeyValueNull = new StateKeyValue("value", null, "etag", null);
|
||||
StateKeyValue<String> stateKeyValueEmpty = new StateKeyValue("value", "", "etag", null);
|
||||
mockInterceptor.addRule()
|
||||
.delete("http://localhost:3000/v1.0/state/key")
|
||||
.respond(EXPECTED_RESULT);
|
||||
daprHttp = new DaprHttp(3000, okHttpClient);
|
||||
daprClientHttpAdapter = new DaprClientHttpAdapter(daprHttp);
|
||||
assertThrows(IllegalArgumentException.class, () -> {
|
||||
daprClientHttpAdapter.deleteState(null, null).block();
|
||||
});
|
||||
assertThrows(IllegalArgumentException.class, () -> {
|
||||
daprClientHttpAdapter.deleteState(stateKeyValueNull, null).block();
|
||||
});
|
||||
assertThrows(IllegalArgumentException.class, () -> {
|
||||
daprClientHttpAdapter.deleteState(stateKeyValueEmpty, null).block();
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void invokeActorMethod() throws IOException {
|
||||
DaprHttp daprHttpMock = mock(DaprHttp.class);
|
||||
mockInterceptor.addRule()
|
||||
.post("http://localhost:3000/v1.0/actors/DemoActor/1/method/Payment")
|
||||
.respond(EXPECTED_RESULT);
|
||||
DaprHttp daprHttp = new DaprHttp(3000, okHttpClient);
|
||||
daprClientHttpAdapter = new DaprClientHttpAdapter(daprHttp);
|
||||
Mono<String> mono = daprClientHttpAdapter.invokeActorMethod("DemoActor", "1", "Payment", "");
|
||||
assertEquals(mono.block(), EXPECTED_RESULT);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void getActorState() {
|
||||
mockInterceptor.addRule()
|
||||
.get("http://localhost:3000/v1.0/actors/DemoActor/1/state/order")
|
||||
.respond(EXPECTED_RESULT);
|
||||
DaprHttp daprHttp = new DaprHttp(3000, okHttpClient);
|
||||
daprClientHttpAdapter = new DaprClientHttpAdapter(daprHttp);
|
||||
Mono<String> mono = daprClientHttpAdapter.getActorState("DemoActor", "1", "order");
|
||||
assertEquals(mono.block(), EXPECTED_RESULT);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void saveActorStateTransactionally() {
|
||||
mockInterceptor.addRule()
|
||||
.put("http://localhost:3000/v1.0/actors/DemoActor/1/state")
|
||||
.respond(EXPECTED_RESULT);
|
||||
DaprHttp daprHttp = new DaprHttp(3000, okHttpClient);
|
||||
daprClientHttpAdapter = new DaprClientHttpAdapter(daprHttp);
|
||||
Mono<Void> mono = daprClientHttpAdapter.saveActorStateTransactionally("DemoActor", "1", "");
|
||||
assertNull(mono.block());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void registerActorReminder() {
|
||||
mockInterceptor.addRule()
|
||||
.put("http://localhost:3000/v1.0/actors/DemoActor/1/reminders/reminder")
|
||||
.respond(EXPECTED_RESULT);
|
||||
DaprHttp daprHttp = new DaprHttp(3000, okHttpClient);
|
||||
daprClientHttpAdapter = new DaprClientHttpAdapter(daprHttp);
|
||||
Mono<Void> mono = daprClientHttpAdapter.registerActorReminder("DemoActor", "1", "reminder", "");
|
||||
assertNull(mono.block());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void unregisterActorReminder() {
|
||||
mockInterceptor.addRule()
|
||||
.delete("http://localhost:3000/v1.0/actors/DemoActor/1/reminders/reminder")
|
||||
.respond(EXPECTED_RESULT);
|
||||
DaprHttp daprHttp = new DaprHttp(3000, okHttpClient);
|
||||
daprClientHttpAdapter = new DaprClientHttpAdapter(daprHttp);
|
||||
Mono<Void> mono = daprClientHttpAdapter.unregisterActorReminder("DemoActor", "1", "reminder");
|
||||
assertNull(mono.block());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void registerActorTimer() {
|
||||
mockInterceptor.addRule()
|
||||
.put("http://localhost:3000/v1.0/actors/DemoActor/1/timers/timer")
|
||||
.respond(EXPECTED_RESULT);
|
||||
DaprHttp daprHttp = new DaprHttp(3000, okHttpClient);
|
||||
daprClientHttpAdapter = new DaprClientHttpAdapter(daprHttp);
|
||||
Mono<Void> mono = daprClientHttpAdapter.registerActorTimer("DemoActor", "1", "timer", "");
|
||||
assertNull(mono.block());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void unregisterActorTimer() {
|
||||
mockInterceptor.addRule()
|
||||
.delete("http://localhost:3000/v1.0/actors/DemoActor/1/timers/timer")
|
||||
.respond(EXPECTED_RESULT);
|
||||
DaprHttp daprHttp = new DaprHttp(3000, okHttpClient);
|
||||
daprClientHttpAdapter = new DaprClientHttpAdapter(daprHttp);
|
||||
Mono<Void> mono = daprClientHttpAdapter.unregisterActorTimer("DemoActor", "1", "timer");
|
||||
assertNull(mono.block());
|
||||
}
|
||||
|
||||
}
|
|
@ -23,222 +23,180 @@ import static org.junit.Assert.*;
|
|||
|
||||
public class DaprHttpTest {
|
||||
|
||||
private OkHttpClient okHttpClient;
|
||||
private OkHttpClient okHttpClient;
|
||||
|
||||
private MockInterceptor mockInterceptor;
|
||||
private MockInterceptor mockInterceptor;
|
||||
|
||||
private ObjectSerializer serializer = new ObjectSerializer();
|
||||
private ObjectSerializer serializer = new ObjectSerializer();
|
||||
|
||||
private final String EXPECTED_RESULT = "{\"data\":\"ewoJCSJwcm9wZXJ0eUEiOiAidmFsdWVBIiwKCQkicHJvcGVydHlCIjogInZhbHVlQiIKCX0=\"}";
|
||||
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 invokeMethod() throws IOException {
|
||||
|
||||
Map<String, String> headers = new HashMap<>();
|
||||
headers.put("content-type", "text/html");
|
||||
headers.put("header1", "value1");
|
||||
|
||||
mockInterceptor.addRule()
|
||||
.post("http://localhost:3500/v1.0/state")
|
||||
.respond(EXPECTED_RESULT);
|
||||
|
||||
DaprHttp daprHttp = new DaprHttp(3500, okHttpClient);
|
||||
Mono<DaprHttp.Response> mono = daprHttp.invokeAPI("POST", "v1.0/state", null, (byte[])null, headers);
|
||||
|
||||
DaprHttp.Response response = mono.block();
|
||||
String body = serializer.deserialize(response.getBody(), String.class);
|
||||
assertEquals(EXPECTED_RESULT, body);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void invokePostMethod() throws IOException {
|
||||
|
||||
mockInterceptor.addRule()
|
||||
.post("http://localhost:3500/v1.0/state")
|
||||
.respond(EXPECTED_RESULT)
|
||||
.addHeader("Header","Value");
|
||||
|
||||
DaprHttp daprHttp = new DaprHttp(3500, okHttpClient);
|
||||
|
||||
Mono<DaprHttp.Response> mono = daprHttp.invokeAPI("POST","v1.0/state",null,"", null);
|
||||
DaprHttp.Response response = mono.block();
|
||||
String body = serializer.deserialize(response.getBody(), String.class);
|
||||
assertEquals(EXPECTED_RESULT, body);
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void invokeDeleteMethod() throws IOException {
|
||||
|
||||
mockInterceptor.addRule()
|
||||
.delete("http://localhost:3500/v1.0/state")
|
||||
.respond(EXPECTED_RESULT);
|
||||
|
||||
DaprHttp daprHttp = new DaprHttp(3500, okHttpClient);
|
||||
|
||||
Mono<DaprHttp.Response> mono = daprHttp.invokeAPI("DELETE","v1.0/state", null, (String) null,null);
|
||||
DaprHttp.Response response = mono.block();
|
||||
String body = serializer.deserialize(response.getBody(), String.class);
|
||||
assertEquals(EXPECTED_RESULT, body);
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void invokeGetMethod() throws IOException {
|
||||
|
||||
mockInterceptor.addRule()
|
||||
.get("http://localhost:3500/v1.0/get")
|
||||
.respond(EXPECTED_RESULT);
|
||||
|
||||
DaprHttp daprHttp = new DaprHttp(3500, okHttpClient);
|
||||
|
||||
Mono<DaprHttp.Response> mono = daprHttp.invokeAPI("GET","v1.0/get",null, null);
|
||||
DaprHttp.Response response = mono.block();
|
||||
String body = serializer.deserialize(response.getBody(), String.class);
|
||||
assertEquals(EXPECTED_RESULT, body);
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void invokeMethodWithHeaders() throws IOException {
|
||||
|
||||
Map<String, String> headers = new HashMap<>();
|
||||
headers.put("header", "value");
|
||||
headers.put("header1", "value1");
|
||||
|
||||
Map<String, String> urlParameters = new HashMap<>();
|
||||
urlParameters.put("orderId", "41");
|
||||
|
||||
mockInterceptor.addRule()
|
||||
.get("http://localhost:3500/v1.0/state/order?orderId=41")
|
||||
.respond(EXPECTED_RESULT);
|
||||
DaprHttp daprHttp = new DaprHttp(3500, okHttpClient);
|
||||
|
||||
Mono<DaprHttp.Response> mono = daprHttp.invokeAPI("GET","v1.0/state/order", urlParameters, headers);
|
||||
DaprHttp.Response response = mono.block();
|
||||
String body = serializer.deserialize(response.getBody(), String.class);
|
||||
assertEquals(EXPECTED_RESULT, body);
|
||||
|
||||
}
|
||||
|
||||
@Test(expected = RuntimeException.class)
|
||||
public void invokePostMethodRuntime() throws IOException {
|
||||
|
||||
mockInterceptor.addRule()
|
||||
.post("http://localhost:3500/v1.0/state")
|
||||
.respond(500);
|
||||
|
||||
DaprHttp daprHttp = new DaprHttp(3500, okHttpClient);
|
||||
|
||||
Mono<DaprHttp.Response> mono = daprHttp.invokeAPI("POST","v1.0/state",null, null);
|
||||
DaprHttp.Response response = mono.block();
|
||||
String body = serializer.deserialize(response.getBody(), String.class);
|
||||
assertEquals(EXPECTED_RESULT, body);
|
||||
|
||||
}
|
||||
|
||||
@Test(expected = RuntimeException.class)
|
||||
public void invokePostDaprError() throws IOException {
|
||||
|
||||
mockInterceptor.addRule()
|
||||
.post("http://localhost:3500/v1.0/state")
|
||||
.respond(500, ResponseBody.create(MediaType.parse("text"),
|
||||
"{\"errorCode\":null,\"message\":null}"));
|
||||
|
||||
DaprHttp daprHttp = new DaprHttp(3500, okHttpClient);
|
||||
|
||||
Mono<DaprHttp.Response> mono = daprHttp.invokeAPI("POST","v1.0/state",null, null);
|
||||
DaprHttp.Response response = mono.block();
|
||||
String body = serializer.deserialize(response.getBody(), String.class);
|
||||
assertEquals(EXPECTED_RESULT, body);
|
||||
|
||||
}
|
||||
|
||||
@Test(expected = RuntimeException.class)
|
||||
public void invokePostMethodUnknownError() throws IOException {
|
||||
|
||||
mockInterceptor.addRule()
|
||||
.post("http://localhost:3500/v1.0/state")
|
||||
.respond(500, ResponseBody.create(MediaType.parse("application/json"),
|
||||
"{\"errorCode\":\"null\",\"message\":\"null\"}"));
|
||||
|
||||
DaprHttp daprHttp = new DaprHttp(3500,okHttpClient);
|
||||
|
||||
Mono<DaprHttp.Response> mono = daprHttp.invokeAPI("POST","v1.0/state",null, null);
|
||||
DaprHttp.Response response = mono.block();
|
||||
String body = serializer.deserialize(response.getBody(), String.class);
|
||||
assertEquals(EXPECTED_RESULT, body);
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getHeadersAndStatus(){
|
||||
mockInterceptor.addRule()
|
||||
.post("http://localhost:3500/v1.0/state")
|
||||
.respond(500, ResponseBody.create(MediaType.parse("application/json"),
|
||||
"{\"errorCode\":\"null\",\"message\":\"null\"}"));
|
||||
DaprHttp daprHttp = new DaprHttp(3500, okHttpClient);
|
||||
System.out.println(daprHttp);
|
||||
}
|
||||
|
||||
/**
|
||||
* The purpose of this test is to show that it doesn't matter when the client is called, the actual coll to DAPR
|
||||
* will be done when the output Mono response call the Mono.block method.
|
||||
* Like for instanche if you call getState, withouth blocking for the response, and then call delete for the same state
|
||||
* you just retrived but block for the delete response, when later you block for the response of the getState, you will
|
||||
* not found the state.
|
||||
* <p>This test will execute the following flow:</p>
|
||||
* <ol>
|
||||
* <li>Exeucte client getState for Key=key1</li>
|
||||
* <li>Block for result to the the state</li>
|
||||
* <li>Assert the Returned State is the expected to key1</li>
|
||||
* <li>Execute client getState for Key=key2</li>
|
||||
* <li>Execute client deleteState for Key=key2</li>
|
||||
* <li>Block for deleteState call.</li>
|
||||
* <li>Block for getState for Key=key2 and Assert they 2 was not found.</li>
|
||||
* </ol>
|
||||
* @throws Exception
|
||||
*/
|
||||
@Test ()
|
||||
public void testCallbackCalledAtTheExpectedTimeTest() throws IOException {
|
||||
String deletedStateKey = "deletedKey";
|
||||
String existingState = "existingState";
|
||||
String urlDeleteState = Constants.STATE_PATH + "/" + deletedStateKey;
|
||||
String urlExistingState = Constants.STATE_PATH + "/" + existingState;
|
||||
mockInterceptor.addRule()
|
||||
.get("http://localhost:3500/" + urlDeleteState)
|
||||
.respond(200, ResponseBody.create(MediaType.parse("application/json"),
|
||||
deletedStateKey));
|
||||
mockInterceptor.addRule()
|
||||
.delete("http://localhost:3500/" + urlDeleteState)
|
||||
.respond(204);
|
||||
mockInterceptor.addRule()
|
||||
.get("http://localhost:3500/" +urlExistingState)
|
||||
.respond(200, ResponseBody.create(MediaType.parse("application/json"),
|
||||
existingState));
|
||||
DaprHttp daprHttp = new DaprHttp(3500, okHttpClient);
|
||||
Mono<DaprHttp.Response> response = daprHttp.invokeAPI("GET", urlExistingState, null, null);
|
||||
assertEquals(existingState, serializer.deserialize(response.block().getBody(), String.class));
|
||||
Mono<DaprHttp.Response> responseDeleted = daprHttp.invokeAPI("GET", urlDeleteState, null, null);
|
||||
Mono<DaprHttp.Response> responseDeleteKey = daprHttp.invokeAPI("DELETE", urlDeleteState, null, null);
|
||||
assertNull(serializer.deserialize(responseDeleteKey.block().getBody(), String.class));
|
||||
mockInterceptor.reset();
|
||||
mockInterceptor.addRule()
|
||||
.get("http://localhost:3500/" +urlDeleteState)
|
||||
.respond(404, ResponseBody.create(MediaType.parse("application/json"),
|
||||
"{\"errorCode\":\"404\",\"message\":\"State Not Fuund\"}"));
|
||||
try {
|
||||
responseDeleted.block();
|
||||
fail("Expected DaprException");
|
||||
} catch (Exception ex) {
|
||||
assertEquals(DaprException.class, ex.getCause().getCause().getClass());
|
||||
}
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
mockInterceptor = new MockInterceptor(Behavior.UNORDERED);
|
||||
okHttpClient = new OkHttpClient.Builder().addInterceptor(mockInterceptor).build();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void invokeMethod() throws IOException {
|
||||
Map<String, String> headers = new HashMap<>();
|
||||
headers.put("content-type", "text/html");
|
||||
headers.put("header1", "value1");
|
||||
mockInterceptor.addRule()
|
||||
.post("http://localhost:3500/v1.0/state")
|
||||
.respond(EXPECTED_RESULT);
|
||||
DaprHttp daprHttp = new DaprHttp(3500, okHttpClient);
|
||||
Mono<DaprHttp.Response> mono = daprHttp.invokeAPI("POST", "v1.0/state", null, (byte[]) null, headers);
|
||||
DaprHttp.Response response = mono.block();
|
||||
String body = serializer.deserialize(response.getBody(), String.class);
|
||||
assertEquals(EXPECTED_RESULT, body);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void invokePostMethod() throws IOException {
|
||||
mockInterceptor.addRule()
|
||||
.post("http://localhost:3500/v1.0/state")
|
||||
.respond(EXPECTED_RESULT)
|
||||
.addHeader("Header", "Value");
|
||||
DaprHttp daprHttp = new DaprHttp(3500, okHttpClient);
|
||||
Mono<DaprHttp.Response> mono = daprHttp.invokeAPI("POST", "v1.0/state", null, "", null);
|
||||
DaprHttp.Response response = mono.block();
|
||||
String body = serializer.deserialize(response.getBody(), String.class);
|
||||
assertEquals(EXPECTED_RESULT, body);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void invokeDeleteMethod() throws IOException {
|
||||
mockInterceptor.addRule()
|
||||
.delete("http://localhost:3500/v1.0/state")
|
||||
.respond(EXPECTED_RESULT);
|
||||
DaprHttp daprHttp = new DaprHttp(3500, okHttpClient);
|
||||
Mono<DaprHttp.Response> mono = daprHttp.invokeAPI("DELETE", "v1.0/state", null, (String) null, null);
|
||||
DaprHttp.Response response = mono.block();
|
||||
String body = serializer.deserialize(response.getBody(), String.class);
|
||||
assertEquals(EXPECTED_RESULT, body);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void invokeGetMethod() throws IOException {
|
||||
mockInterceptor.addRule()
|
||||
.get("http://localhost:3500/v1.0/get")
|
||||
.respond(EXPECTED_RESULT);
|
||||
DaprHttp daprHttp = new DaprHttp(3500, okHttpClient);
|
||||
Mono<DaprHttp.Response> mono = daprHttp.invokeAPI("GET", "v1.0/get", null, null);
|
||||
DaprHttp.Response response = mono.block();
|
||||
String body = serializer.deserialize(response.getBody(), String.class);
|
||||
assertEquals(EXPECTED_RESULT, body);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void invokeMethodWithHeaders() throws IOException {
|
||||
Map<String, String> headers = new HashMap<>();
|
||||
headers.put("header", "value");
|
||||
headers.put("header1", "value1");
|
||||
Map<String, String> urlParameters = new HashMap<>();
|
||||
urlParameters.put("orderId", "41");
|
||||
mockInterceptor.addRule()
|
||||
.get("http://localhost:3500/v1.0/state/order?orderId=41")
|
||||
.respond(EXPECTED_RESULT);
|
||||
DaprHttp daprHttp = new DaprHttp(3500, okHttpClient);
|
||||
Mono<DaprHttp.Response> mono = daprHttp.invokeAPI("GET", "v1.0/state/order", urlParameters, headers);
|
||||
DaprHttp.Response response = mono.block();
|
||||
String body = serializer.deserialize(response.getBody(), String.class);
|
||||
assertEquals(EXPECTED_RESULT, body);
|
||||
}
|
||||
|
||||
@Test(expected = RuntimeException.class)
|
||||
public void invokePostMethodRuntime() throws IOException {
|
||||
mockInterceptor.addRule()
|
||||
.post("http://localhost:3500/v1.0/state")
|
||||
.respond(500);
|
||||
DaprHttp daprHttp = new DaprHttp(3500, okHttpClient);
|
||||
Mono<DaprHttp.Response> mono = daprHttp.invokeAPI("POST", "v1.0/state", null, null);
|
||||
DaprHttp.Response response = mono.block();
|
||||
String body = serializer.deserialize(response.getBody(), String.class);
|
||||
assertEquals(EXPECTED_RESULT, body);
|
||||
}
|
||||
|
||||
@Test(expected = RuntimeException.class)
|
||||
public void invokePostDaprError() throws IOException {
|
||||
mockInterceptor.addRule()
|
||||
.post("http://localhost:3500/v1.0/state")
|
||||
.respond(500, ResponseBody.create(MediaType.parse("text"),
|
||||
"{\"errorCode\":null,\"message\":null}"));
|
||||
DaprHttp daprHttp = new DaprHttp(3500, okHttpClient);
|
||||
Mono<DaprHttp.Response> mono = daprHttp.invokeAPI("POST", "v1.0/state", null, null);
|
||||
DaprHttp.Response response = mono.block();
|
||||
String body = serializer.deserialize(response.getBody(), String.class);
|
||||
assertEquals(EXPECTED_RESULT, body);
|
||||
}
|
||||
|
||||
@Test(expected = RuntimeException.class)
|
||||
public void invokePostMethodUnknownError() throws IOException {
|
||||
mockInterceptor.addRule()
|
||||
.post("http://localhost:3500/v1.0/state")
|
||||
.respond(500, ResponseBody.create(MediaType.parse("application/json"),
|
||||
"{\"errorCode\":\"null\",\"message\":\"null\"}"));
|
||||
DaprHttp daprHttp = new DaprHttp(3500, okHttpClient);
|
||||
Mono<DaprHttp.Response> mono = daprHttp.invokeAPI("POST", "v1.0/state", null, null);
|
||||
DaprHttp.Response response = mono.block();
|
||||
String body = serializer.deserialize(response.getBody(), String.class);
|
||||
assertEquals(EXPECTED_RESULT, body);
|
||||
}
|
||||
|
||||
/**
|
||||
* The purpose of this test is to show that it doesn't matter when the client is called, the actual coll to DAPR
|
||||
* will be done when the output Mono response call the Mono.block method.
|
||||
* Like for instanche if you call getState, withouth blocking for the response, and then call delete for the same state
|
||||
* you just retrived but block for the delete response, when later you block for the response of the getState, you will
|
||||
* not found the state.
|
||||
* <p>This test will execute the following flow:</p>
|
||||
* <ol>
|
||||
* <li>Exeucte client getState for Key=key1</li>
|
||||
* <li>Block for result to the the state</li>
|
||||
* <li>Assert the Returned State is the expected to key1</li>
|
||||
* <li>Execute client getState for Key=key2</li>
|
||||
* <li>Execute client deleteState for Key=key2</li>
|
||||
* <li>Block for deleteState call.</li>
|
||||
* <li>Block for getState for Key=key2 and Assert they 2 was not found.</li>
|
||||
* </ol>
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
@Test()
|
||||
public void testCallbackCalledAtTheExpectedTimeTest() throws IOException {
|
||||
String deletedStateKey = "deletedKey";
|
||||
String existingState = "existingState";
|
||||
String urlDeleteState = Constants.STATE_PATH + "/" + deletedStateKey;
|
||||
String urlExistingState = Constants.STATE_PATH + "/" + existingState;
|
||||
mockInterceptor.addRule()
|
||||
.get("http://localhost:3500/" + urlDeleteState)
|
||||
.respond(200, ResponseBody.create(MediaType.parse("application/json"),
|
||||
deletedStateKey));
|
||||
mockInterceptor.addRule()
|
||||
.delete("http://localhost:3500/" + urlDeleteState)
|
||||
.respond(204);
|
||||
mockInterceptor.addRule()
|
||||
.get("http://localhost:3500/" + urlExistingState)
|
||||
.respond(200, ResponseBody.create(MediaType.parse("application/json"),
|
||||
existingState));
|
||||
DaprHttp daprHttp = new DaprHttp(3500, okHttpClient);
|
||||
Mono<DaprHttp.Response> response = daprHttp.invokeAPI("GET", urlExistingState, null, null);
|
||||
assertEquals(existingState, serializer.deserialize(response.block().getBody(), String.class));
|
||||
Mono<DaprHttp.Response> responseDeleted = daprHttp.invokeAPI("GET", urlDeleteState, null, null);
|
||||
Mono<DaprHttp.Response> responseDeleteKey = daprHttp.invokeAPI("DELETE", urlDeleteState, null, null);
|
||||
assertNull(serializer.deserialize(responseDeleteKey.block().getBody(), String.class));
|
||||
mockInterceptor.reset();
|
||||
mockInterceptor.addRule()
|
||||
.get("http://localhost:3500/" + urlDeleteState)
|
||||
.respond(404, ResponseBody.create(MediaType.parse("application/json"),
|
||||
"{\"errorCode\":\"404\",\"message\":\"State Not Fuund\"}"));
|
||||
try {
|
||||
responseDeleted.block();
|
||||
fail("Expected DaprException");
|
||||
} catch (Exception ex) {
|
||||
assertEquals(DaprException.class, ex.getCause().getCause().getClass());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue