|
34 | 34 | import java.util.HashMap; |
35 | 35 | import java.util.List; |
36 | 36 | import java.util.Map; |
| 37 | +import java.util.concurrent.TimeUnit; |
37 | 38 |
|
38 | 39 | import okhttp3.mockwebserver.Dispatcher; |
39 | 40 | import okhttp3.mockwebserver.MockResponse; |
@@ -145,6 +146,25 @@ public void testHandleWithHttpBody() throws Exception { |
145 | 146 | Assertions.assertEquals(EXIT_CODE_SUCCESS, httpTask.getExitStatusCode()); |
146 | 147 | } |
147 | 148 |
|
| 149 | + @Test |
| 150 | + public void testHandleWithComplexHttpBody() throws Exception { |
| 151 | + String httpBody = "{\"name\":\"tom\",\"scores\":[100,98],\"metadata\":{\"grade\":\"A\"}}"; |
| 152 | + String httpResponse = "{\"status\": \"success\"}"; |
| 153 | + String url = withMockWebServer(DEFAULT_MOCK_PATH, HttpStatus.SC_OK, httpResponse); |
| 154 | + HttpTask httpTask = generateHttpTask(url, HttpRequestMethod.POST, httpBody, |
| 155 | + new ArrayList<>(), null, HttpCheckCondition.STATUS_CODE_DEFAULT, ""); |
| 156 | + |
| 157 | + httpTask.handle(null); |
| 158 | + |
| 159 | + MockWebServer server = getLatestMockWebServer(); |
| 160 | + RecordedRequest recordedRequest = server.takeRequest(1, TimeUnit.SECONDS); |
| 161 | + Assertions.assertNotNull(recordedRequest); |
| 162 | + String actualRequestBody = recordedRequest.getBody().readUtf8(); |
| 163 | + Assertions.assertTrue(actualRequestBody.contains("\"scores\":[100,98]")); |
| 164 | + Assertions.assertTrue(actualRequestBody.contains("\"metadata\":{\"grade\":\"A\"}")); |
| 165 | + Assertions.assertEquals(EXIT_CODE_SUCCESS, httpTask.getExitStatusCode()); |
| 166 | + } |
| 167 | + |
148 | 168 | @Test |
149 | 169 | public void testHandleWithHttpParameterParams() throws Exception { |
150 | 170 | List<HttpProperty> httpParams = new ArrayList<>(); |
@@ -241,11 +261,23 @@ private HttpTask generateHttpTask(String mockPath, HttpRequestMethod httpRequest |
241 | 261 | String condition, int actualResponseCode, |
242 | 262 | String actualResponseBody) throws IOException { |
243 | 263 | String url = withMockWebServer(mockPath, actualResponseCode, actualResponseBody); |
| 264 | + return generateHttpTask(url, httpRequestMethod, httpBody, httpParams, prepareParamsMap, |
| 265 | + httpCheckConditionType, condition); |
| 266 | + } |
| 267 | + |
| 268 | + private HttpTask generateHttpTask(String url, HttpRequestMethod httpRequestMethod, String httpBody, |
| 269 | + List<HttpProperty> httpParams, |
| 270 | + Map<String, String> prepareParamsMap, HttpCheckCondition httpCheckConditionType, |
| 271 | + String condition) throws JsonProcessingException { |
244 | 272 | String paramData = |
245 | 273 | generateHttpParameters(url, httpRequestMethod, httpBody, httpParams, httpCheckConditionType, condition); |
246 | 274 | return generateHttpTaskFromParamData(paramData, prepareParamsMap); |
247 | 275 | } |
248 | 276 |
|
| 277 | + private MockWebServer getLatestMockWebServer() { |
| 278 | + return mockWebServers.get(mockWebServers.size() - 1); |
| 279 | + } |
| 280 | + |
249 | 281 | private HttpTask generateHttpTaskFromParamData(String paramData, Map<String, String> prepareParamsMap) { |
250 | 282 | TaskExecutionContext taskExecutionContext = Mockito.mock(TaskExecutionContext.class); |
251 | 283 | Mockito.when(taskExecutionContext.getTaskParams()).thenReturn(paramData); |
|
0 commit comments