Skip to content

Commit d168611

Browse files
committed
test: add tests
1 parent 781f2f7 commit d168611

36 files changed

+6035
-1
lines changed

ddes-open-sdk/pom.xml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,13 @@
183183
<version>${slf4j.version}</version>
184184
</dependency>
185185

186-
186+
<!-- OkHttp MockWebServer for testing HTTP requests -->
187+
<dependency>
188+
<groupId>com.squareup.okhttp3</groupId>
189+
<artifactId>mockwebserver</artifactId>
190+
<version>${okhttp.version}</version>
191+
<scope>test</scope>
192+
</dependency>
187193

188194
</dependencies>
189195

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
package com.xiaoju.open.sdk.didies.core.request;
2+
3+
import com.xiaoju.open.sdk.didies.core.Config;
4+
import lombok.RequiredArgsConstructor;
5+
import okhttp3.*;
6+
7+
import java.io.IOException;
8+
import java.util.Map;
9+
import java.util.concurrent.TimeUnit;
10+
11+
/**
12+
* OkHttp-based transport implementation for testing with MockWebServer
13+
*/
14+
@RequiredArgsConstructor
15+
public class OkHttpTransport implements IHttpTransport {
16+
17+
private final OkHttpClient httpClient;
18+
19+
public OkHttpTransport() {
20+
this.httpClient = new OkHttpClient.Builder()
21+
.connectTimeout(30, TimeUnit.SECONDS)
22+
.readTimeout(30, TimeUnit.SECONDS)
23+
.writeTimeout(30, TimeUnit.SECONDS)
24+
.build();
25+
}
26+
27+
@Override
28+
public RawResponse get(Request request) {
29+
try {
30+
HttpUrl url = buildUrl(request.getUrl(), request.getParams());
31+
okhttp3.Request.Builder requestBuilder = new okhttp3.Request.Builder()
32+
.url(url)
33+
.get();
34+
35+
addHeaders(requestBuilder, request);
36+
37+
okhttp3.Request okRequest = requestBuilder.build();
38+
okhttp3.Response okResponse = httpClient.newCall(okRequest).execute();
39+
40+
return buildRawResponse(okResponse);
41+
} catch (IOException e) {
42+
throw new RuntimeException("Failed to execute GET request", e);
43+
}
44+
}
45+
46+
@Override
47+
public RawResponse post(RawRequest request) {
48+
try {
49+
HttpUrl url = HttpUrl.parse(request.getUrl());
50+
okhttp3.Request.Builder requestBuilder = new okhttp3.Request.Builder()
51+
.url(url)
52+
.post(RequestBody.create(
53+
MediaType.parse("application/json; charset=utf-8"),
54+
request.getBody() != null ? request.getBody() : ""
55+
));
56+
57+
addHeaders(requestBuilder, request);
58+
59+
okhttp3.Request okRequest = requestBuilder.build();
60+
okhttp3.Response okResponse = httpClient.newCall(okRequest).execute();
61+
62+
return buildRawResponse(okResponse);
63+
} catch (IOException e) {
64+
throw new RuntimeException("Failed to execute POST request", e);
65+
}
66+
}
67+
68+
@Override
69+
public RawResponse post(FormRequest request) {
70+
try {
71+
HttpUrl url = buildUrl(request.getUrl(), request.getParams());
72+
73+
FormBody.Builder formBuilder = new FormBody.Builder();
74+
if (request.getBody() != null) {
75+
for (Map.Entry<String, Object> entry : request.getBody().entrySet()) {
76+
Object value = entry.getValue();
77+
if (value != null) {
78+
formBuilder.add(entry.getKey(), value.toString());
79+
}
80+
}
81+
}
82+
83+
okhttp3.Request.Builder requestBuilder = new okhttp3.Request.Builder()
84+
.url(url)
85+
.post(formBuilder.build());
86+
87+
addHeaders(requestBuilder, request);
88+
89+
okhttp3.Request okRequest = requestBuilder.build();
90+
okhttp3.Response okResponse = httpClient.newCall(okRequest).execute();
91+
92+
return buildRawResponse(okResponse);
93+
} catch (IOException e) {
94+
throw new RuntimeException("Failed to execute POST form request", e);
95+
}
96+
}
97+
98+
private HttpUrl buildUrl(String baseUrl, Map<String, Object> params) {
99+
HttpUrl url = HttpUrl.parse(baseUrl);
100+
HttpUrl.Builder urlBuilder = url.newBuilder();
101+
102+
if (params != null) {
103+
for (Map.Entry<String, Object> entry : params.entrySet()) {
104+
if (entry.getValue() != null) {
105+
urlBuilder.addQueryParameter(entry.getKey(), entry.getValue().toString());
106+
}
107+
}
108+
}
109+
110+
return urlBuilder.build();
111+
}
112+
113+
private void addHeaders(okhttp3.Request.Builder builder, Headers headers) {
114+
if (headers.getHeaders() != null) {
115+
for (Map.Entry<String, java.util.List<String>> entry : headers.getHeaders().entrySet()) {
116+
for (String value : entry.getValue()) {
117+
builder.addHeader(entry.getKey(), value);
118+
}
119+
}
120+
}
121+
}
122+
123+
private RawResponse buildRawResponse(okhttp3.Response response) throws IOException {
124+
RawResponse rawResponse = new RawResponse();
125+
rawResponse.setStatusCode(response.code());
126+
rawResponse.setBody(response.body() != null ? response.body().string() : null);
127+
128+
// Copy headers
129+
for (Map.Entry<String, java.util.List<String>> entry : response.headers().toMultimap().entrySet()) {
130+
rawResponse.getHeaders().put(entry.getKey(), entry.getValue());
131+
}
132+
133+
return rawResponse;
134+
}
135+
}

0 commit comments

Comments
 (0)