Skip to content

Commit 5ec6cdd

Browse files
committed
rename OkHttpHttpClient to CustomOkHttpClient and add tests
1 parent a8bf2f5 commit 5ec6cdd

File tree

3 files changed

+168
-3
lines changed

3 files changed

+168
-3
lines changed

src/main/java/com/meilisearch/sdk/http/OkHttpHttpClient.java renamed to src/main/java/com/meilisearch/sdk/http/CustomOkHttpClient.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,17 @@
1313
import java.util.List;
1414
import java.util.Map;
1515

16-
public class OkHttpHttpClient extends AbstractHttpClient {
16+
public class CustomOkHttpClient extends AbstractHttpClient {
1717
private static final MediaType JSON = MediaType.get("application/json; charset=utf-8");
1818
private static final RequestBody EMPTY_REQUEST_BODY = RequestBody.create("".getBytes());
1919
private final OkHttpClient client;
2020

21-
public OkHttpHttpClient(Config config, OkHttpClient client) {
21+
public CustomOkHttpClient(Config config, OkHttpClient client) {
2222
super(config);
2323
this.client = client;
2424
}
2525

26-
public OkHttpHttpClient(Config config) {
26+
public CustomOkHttpClient(Config config) {
2727
super(config);
2828
this.client = new OkHttpClient();
2929
}
Lines changed: 164 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,164 @@
1+
package com.meilisearch.sdk.http;
2+
3+
import com.meilisearch.sdk.Config;
4+
import com.meilisearch.sdk.http.request.BasicHttpRequest;
5+
import com.meilisearch.sdk.http.request.HttpMethod;
6+
import com.meilisearch.sdk.http.response.BasicHttpResponse;
7+
import okhttp3.*;
8+
import okhttp3.internal.connection.RealCall;
9+
import okio.Buffer;
10+
import org.junit.jupiter.api.AfterEach;
11+
import org.junit.jupiter.api.BeforeEach;
12+
import org.junit.jupiter.api.Test;
13+
14+
import java.io.BufferedReader;
15+
import java.io.IOException;
16+
import java.io.InputStreamReader;
17+
import java.util.ArrayDeque;
18+
import java.util.Collections;
19+
import java.util.stream.Collectors;
20+
21+
import static org.hamcrest.MatcherAssert.assertThat;
22+
import static org.hamcrest.Matchers.equalTo;
23+
import static org.hamcrest.Matchers.notNullValue;
24+
import static org.mockito.ArgumentMatchers.any;
25+
import static org.mockito.Mockito.*;
26+
27+
class CustomOkHttpClientTest {
28+
private final Config config = new Config("http://localhost:7700", "masterKey");
29+
private final OkHttpClient client = mock(OkHttpClient.class);
30+
private final CustomOkHttpClient classToTest = new CustomOkHttpClient(config, client);
31+
32+
private final ArrayDeque<Request> requestQueue = new ArrayDeque<>();
33+
private final ArrayDeque<Response> responseQueue = new ArrayDeque<>();
34+
private final MediaType JSON = MediaType.get("application/json; charset=utf-8");
35+
36+
@BeforeEach
37+
void setUp() {
38+
RealCall mockCall = mock(RealCall.class);
39+
when(client.newCall(any())).thenAnswer(invocation -> {
40+
Request request = invocation.getArgument(0);
41+
requestQueue.push(request);
42+
43+
Response ok = new Response.Builder()
44+
.request(request)
45+
.protocol(Protocol.HTTP_1_1)
46+
.message("OK")
47+
.code(200)
48+
.headers(request.headers())
49+
.body(ResponseBody.create(readBody(request.body()), JSON))
50+
.build();
51+
52+
responseQueue.push(ok);
53+
54+
return mockCall;
55+
});
56+
when(mockCall.execute()).then(invocation -> responseQueue.poll());
57+
}
58+
59+
@AfterEach
60+
void tearDown() {
61+
requestQueue.clear();
62+
responseQueue.clear();
63+
reset(client);
64+
}
65+
66+
private String readBody(RequestBody body) {
67+
if (body == null) {
68+
return "";
69+
}
70+
Buffer buffer = new Buffer();
71+
try {
72+
body.writeTo(buffer);
73+
} catch (IOException e) {
74+
e.printStackTrace();
75+
}
76+
return new BufferedReader(new InputStreamReader(buffer.inputStream())).lines().collect(Collectors.joining());
77+
}
78+
79+
@Test
80+
void get() throws Exception {
81+
BasicHttpRequest request = new BasicHttpRequest(HttpMethod.GET, "/test", Collections.emptyMap(), "some body");
82+
BasicHttpResponse response = (BasicHttpResponse) classToTest.get(request);
83+
84+
assertThat(response.getStatusCode(), equalTo(200));
85+
86+
Request expectedRequest = requestQueue.poll();
87+
assertThat(expectedRequest, notNullValue());
88+
assertThat(expectedRequest.method(), equalTo(request.getMethod().name()));
89+
assertThat(expectedRequest.url().toString(), equalTo(this.config.getHostUrl() + request.getPath()));
90+
}
91+
92+
@Test
93+
void post() throws Exception {
94+
BasicHttpRequest request = new BasicHttpRequest(HttpMethod.POST, "/test", Collections.emptyMap(), "some body");
95+
BasicHttpResponse response = (BasicHttpResponse) classToTest.post(request);
96+
97+
assertThat(response.getStatusCode(), equalTo(200));
98+
assertThat(response.getContent(), equalTo(request.getContent()));
99+
100+
Request expectedRequest = requestQueue.poll();
101+
assertThat(expectedRequest, notNullValue());
102+
assertThat(request.getContent(), equalTo(readBody(expectedRequest.body())));
103+
assertThat(expectedRequest.method(), equalTo(request.getMethod().name()));
104+
assertThat(expectedRequest.url().toString(), equalTo(this.config.getHostUrl() + request.getPath()));
105+
106+
}
107+
108+
@Test
109+
void postWithoutBody() throws Exception {
110+
BasicHttpRequest request = new BasicHttpRequest(HttpMethod.POST, "/test", Collections.emptyMap(), null);
111+
BasicHttpResponse response = (BasicHttpResponse) classToTest.post(request);
112+
113+
assertThat(response.getStatusCode(), equalTo(200));
114+
assertThat(response.getContent(), equalTo(""));
115+
116+
Request expectedRequest = requestQueue.poll();
117+
assertThat(expectedRequest, notNullValue());
118+
assertThat(readBody(expectedRequest.body()), equalTo(""));
119+
assertThat(expectedRequest.method(), equalTo(request.getMethod().name()));
120+
assertThat(expectedRequest.url().toString(), equalTo(this.config.getHostUrl() + request.getPath()));
121+
122+
}
123+
124+
@Test
125+
void put() throws Exception {
126+
BasicHttpRequest request = new BasicHttpRequest(HttpMethod.PUT, "/test", Collections.emptyMap(), "some body");
127+
BasicHttpResponse response = (BasicHttpResponse) classToTest.put(request);
128+
129+
assertThat(response.getStatusCode(), equalTo(200));
130+
assertThat(response.getContent(), equalTo(request.getContent()));
131+
132+
Request expectedRequest = requestQueue.poll();
133+
assertThat(expectedRequest, notNullValue());
134+
assertThat(request.getContent(), equalTo(readBody(expectedRequest.body())));
135+
assertThat(expectedRequest.method(), equalTo(request.getMethod().name()));
136+
assertThat(expectedRequest.url().toString(), equalTo(this.config.getHostUrl() + request.getPath()));
137+
}
138+
139+
@Test
140+
void delete() throws Exception {
141+
BasicHttpRequest request = new BasicHttpRequest(HttpMethod.DELETE, "/test", Collections.emptyMap(), "some body");
142+
BasicHttpResponse response = (BasicHttpResponse) classToTest.delete(request);
143+
144+
assertThat(response.getStatusCode(), equalTo(200));
145+
146+
Request expectedRequest = requestQueue.poll();
147+
assertThat(expectedRequest, notNullValue());
148+
assertThat(expectedRequest.method(), equalTo(request.getMethod().name()));
149+
assertThat(expectedRequest.url().toString(), equalTo(this.config.getHostUrl() + request.getPath()));
150+
}
151+
152+
@Test
153+
void deleteWithoutBody() throws Exception {
154+
BasicHttpRequest request = new BasicHttpRequest(HttpMethod.DELETE, "/test", Collections.emptyMap(), null);
155+
BasicHttpResponse response = (BasicHttpResponse) classToTest.delete(request);
156+
157+
assertThat(response.getStatusCode(), equalTo(200));
158+
159+
Request expectedRequest = requestQueue.poll();
160+
assertThat(expectedRequest, notNullValue());
161+
assertThat(expectedRequest.method(), equalTo(request.getMethod().name()));
162+
assertThat(expectedRequest.url().toString(), equalTo(this.config.getHostUrl() + request.getPath()));
163+
}
164+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
mock-maker-inline

0 commit comments

Comments
 (0)