Skip to content

Commit b9c9126

Browse files
committed
- fixes a bug where null content on post request would have a wrong application/octet-stream content type
1 parent f3ca542 commit b9c9126

File tree

2 files changed

+27
-17
lines changed

2 files changed

+27
-17
lines changed

src/main/java/com/microsoft/graph/http/CoreHttpProvider.java

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ public <Result, Body> Request getHttpRequest(final IHttpRequest request,
243243
if(this.connectionConfig == null) {
244244
this.connectionConfig = new DefaultConnectionConfig();
245245
}
246-
246+
247247
// Request level middleware options
248248
RedirectOptions redirectOptions = new RedirectOptions(request.getMaxRedirects() > 0? request.getMaxRedirects() : this.connectionConfig.getMaxRedirects(),
249249
request.getShouldRedirect() != null? request.getShouldRedirect() : this.connectionConfig.getShouldRedirect());
@@ -256,7 +256,7 @@ public <Result, Body> Request getHttpRequest(final IHttpRequest request,
256256
.newBuilder()
257257
.tag(RedirectOptions.class, redirectOptions)
258258
.tag(RetryOptions.class, retryOptions);
259-
259+
260260
String contenttype = null;
261261

262262
logger.logDebug("Request Method " + request.getHttpMethod().toString());
@@ -276,11 +276,7 @@ public <Result, Body> Request getHttpRequest(final IHttpRequest request,
276276
// This ensures that the Content-Length header is properly set
277277
if (request.getHttpMethod() == HttpMethod.POST) {
278278
bytesToWrite = new byte[0];
279-
if(contenttype == null) {
280-
contenttype = Constants.BINARY_CONTENT_TYPE;
281-
}
282-
}
283-
else {
279+
} else {
284280
bytesToWrite = null;
285281
}
286282
} else if (serializable instanceof byte[]) {
@@ -341,7 +337,11 @@ public void writeTo(BufferedSink sink) throws IOException {
341337

342338
@Override
343339
public MediaType contentType() {
344-
return MediaType.parse(mediaContentType);
340+
if(mediaContentType == null || mediaContentType.isEmpty()) {
341+
return null;
342+
} else {
343+
return MediaType.parse(mediaContentType);
344+
}
345345
}
346346
};
347347
}
@@ -401,7 +401,7 @@ public Request authenticateRequest(Request request) {
401401
try {
402402

403403
// Call being executed
404-
404+
405405

406406
if (handler != null) {
407407
handler.configConnection(response);
@@ -425,7 +425,7 @@ public Request authenticateRequest(Request request) {
425425

426426
if (response.code() == HttpResponseCode.HTTP_NOBODY
427427
|| response.code() == HttpResponseCode.HTTP_NOT_MODIFIED) {
428-
logger.logDebug("Handling response with no body");
428+
logger.logDebug("Handling response with no body");
429429
return handleEmptyResponse(responseHeadersHelper.getResponseHeadersAsMapOfStringList(response), resultClass);
430430
}
431431

@@ -442,7 +442,7 @@ public Request authenticateRequest(Request request) {
442442
return (Result) null;
443443

444444
final String contentType = headers.get(Constants.CONTENT_TYPE_HEADER_NAME);
445-
if (contentType != null && resultClass != InputStream.class &&
445+
if (contentType != null && resultClass != InputStream.class &&
446446
contentType.contains(Constants.JSON_CONTENT_TYPE)) {
447447
logger.logDebug("Response json");
448448
return handleJsonResponse(in, responseHeadersHelper.getResponseHeadersAsMapOfStringList(response), resultClass);
@@ -534,12 +534,12 @@ private <Result> Result handleJsonResponse(final InputStream in, Map<String, Lis
534534

535535
/**
536536
* Handles the case where the response body is empty
537-
*
537+
*
538538
* @param responseHeaders the response headers
539539
* @param clazz the type of the response object
540540
* @return the JSON object
541541
*/
542-
private <Result> Result handleEmptyResponse(Map<String, List<String>> responseHeaders, final Class<Result> clazz)
542+
private <Result> Result handleEmptyResponse(Map<String, List<String>> responseHeaders, final Class<Result> clazz)
543543
throws UnsupportedEncodingException{
544544
//Create an empty object to attach the response headers to
545545
InputStream in = new ByteArrayInputStream("{}".getBytes(Constants.JSON_ENCODING));

src/test/java/com/microsoft/graph/functional/UserTests.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import static org.junit.Assert.assertNotEquals;
44
import static org.junit.Assert.assertEquals;
55
import static org.junit.Assert.assertNotNull;
6+
import static org.junit.Assert.assertNull;
67

78
import java.io.File;
89
import java.io.FileInputStream;
@@ -160,7 +161,7 @@ public void meInsightsUsed() {
160161
IUsedInsightCollectionPage usedInsightCollectionPage = graphServiceClient.me().insights().used().buildRequest().get();
161162
assertNotNull(usedInsightCollectionPage);
162163
}
163-
164+
164165
@Test
165166
public void mailFoldertest() {
166167
//GET me/mailFolders
@@ -172,7 +173,7 @@ public void mailFoldertest() {
172173
assertNotNull(messageCollectionPage);
173174
}
174175
}
175-
176+
176177
@Test
177178
public void meMemberof() {
178179
IDirectoryObjectCollectionWithReferencesPage page = graphServiceClient.me().memberOf().buildRequest().get();
@@ -201,7 +202,7 @@ public void run() {
201202
}
202203

203204
@Test
204-
public void emptyPostContentType() {
205+
public void emptyPostContentTypeIsNotReset() {
205206
final String contentTypeValue = "application/json";
206207
final HeaderOption ctype = new HeaderOption("Content-Type", contentTypeValue);
207208
final ArrayList<Option> options = new ArrayList<>();
@@ -211,7 +212,16 @@ public void emptyPostContentType() {
211212
.buildRequest(options)
212213
.withHttpMethod(HttpMethod.POST)
213214
.getHttpRequest();
214-
assertEquals(contentTypeValue, request.body().contentType().toString());
215+
assertEquals(contentTypeValue, request.body().contentType().toString());
216+
}
217+
@Test
218+
public void emptyPostContentTypeIsNotSet() {
219+
final Request request = graphServiceClient.me()
220+
.revokeSignInSessions()
221+
.buildRequest()
222+
.withHttpMethod(HttpMethod.POST)
223+
.getHttpRequest();
224+
assertNull(request.body().contentType());
215225
}
216226
@Test
217227
public void castTest() {

0 commit comments

Comments
 (0)