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