|
20 | 20 | import com.microsoft.graph.serializer.DefaultSerializer; |
21 | 21 | import com.microsoft.graph.serializer.ISerializer; |
22 | 22 |
|
| 23 | +import okio.Buffer; |
23 | 24 | import org.junit.jupiter.api.Test; |
24 | 25 |
|
25 | 26 | import java.io.ByteArrayInputStream; |
|
39 | 40 | import okhttp3.Request; |
40 | 41 | import okhttp3.Response; |
41 | 42 | import okhttp3.ResponseBody; |
| 43 | +import okhttp3.RequestBody; |
| 44 | +import org.mockito.Mockito; |
42 | 45 |
|
43 | 46 | import static org.junit.jupiter.api.Assertions.assertEquals; |
44 | 47 | import static org.junit.jupiter.api.Assertions.assertFalse; |
|
49 | 52 | import static org.mockito.ArgumentMatchers.any; |
50 | 53 | import static org.mockito.ArgumentMatchers.anyString; |
51 | 54 | import static org.mockito.Mockito.mock; |
| 55 | +import static org.mockito.Mockito.never; |
| 56 | +import static org.mockito.Mockito.verify; |
52 | 57 | import static org.mockito.Mockito.when; |
53 | 58 |
|
54 | 59 | public class CoreHttpProviderTests { |
@@ -288,4 +293,36 @@ public void getHttpRequestSetsRetryOrRedirectOptionsOnNonDefaultValues() throws |
288 | 293 |
|
289 | 294 | assertNotNull(retryOptions); |
290 | 295 | } |
| 296 | + |
| 297 | + @Test |
| 298 | + public void getHttpRequestWithTextPlainBodyDoesNotSerializeAsJson() throws IOException { |
| 299 | + final IHttpRequest absRequest = mock(IHttpRequest.class); |
| 300 | + when(absRequest.getRequestUrl()).thenReturn(new URL("https://graph.microsoft.com/v1.0/me")); |
| 301 | + when(absRequest.getHttpMethod()).thenReturn(HttpMethod.POST); |
| 302 | + final ISerializer serializer = mock(ISerializer.class); |
| 303 | + final ILogger logger = mock(ILogger.class); |
| 304 | + |
| 305 | + mProvider = new CoreHttpProvider(serializer, |
| 306 | + logger, |
| 307 | + new OkHttpClient.Builder().build()); |
| 308 | + |
| 309 | + // GIVEN: A "text/plain" request body |
| 310 | + final HeaderOption option = new HeaderOption("Content-Type", "text/plain"); |
| 311 | + when(absRequest.getHeaders()).thenReturn(Arrays.asList(option)); |
| 312 | + final String expectedBody = "Plain String Body"; |
| 313 | + |
| 314 | + //WHEN: getHttpRequest is called |
| 315 | + final Request request = mProvider.getHttpRequest(absRequest, String.class, expectedBody); |
| 316 | + |
| 317 | + // THEN: The serializer must not be called |
| 318 | + verify(serializer, never()).serializeObject(Mockito.any()); |
| 319 | + |
| 320 | + // AND: We expect the request body to contain the plain String, not serialized as Json |
| 321 | + final Buffer buffer = new Buffer(); |
| 322 | + final RequestBody requestBody = request.body(); |
| 323 | + assertNotNull(requestBody); |
| 324 | + requestBody.writeTo(buffer); |
| 325 | + final String actualRequestBody = buffer.readUtf8(); |
| 326 | + assertEquals(expectedBody, actualRequestBody); |
| 327 | + } |
291 | 328 | } |
0 commit comments