99import com .microsoft .kiota .RequestInformation ;
1010import com .microsoft .kiota .authentication .AnonymousAuthenticationProvider ;
1111
12+ import com .microsoft .kiota .authentication .AuthenticationProvider ;
13+ import com .microsoft .kiota .http .OkHttpRequestAdapter ;
1214import com .microsoft .kiota .http .middleware .UrlReplaceHandler ;
1315import okhttp3 .*;
1416import org .junit .jupiter .api .Assertions ;
2527
2628import static com .microsoft .graph .core .CoreConstants .ReplacementConstants .USERS_ENDPOINT_WITH_REPLACE_TOKEN ;
2729import static org .junit .jupiter .api .Assertions .*;
30+ import static org .mockito .Mockito .mock ;
2831
2932class BatchRequestContentTest {
3033 static final String requestUrl = "https://graph.microsoft.com/v1.0" +USERS_ENDPOINT_WITH_REPLACE_TOKEN ;
@@ -234,6 +237,61 @@ void BatchRequestContent_GetBatchRequestContentFromStepDoesNotModifyDateTimes()
234237 assertEquals (expectedJson , requestContentString );
235238 }
236239 @ Test
240+ void BatchRequestContent_DoNotAddAuthorizationHeader () throws Exception {
241+ OkHttpRequestAdapter adapter = new OkHttpRequestAdapter (mock (AuthenticationProvider .class ));
242+
243+ String expectedJson = "{\n " +
244+ " \" requests\" : [\n " +
245+ " {\n " +
246+ " \" id\" : \" 1\" ,\n " +
247+ " \" url\" : \" /me\" ,\n " +
248+ " \" method\" : \" GET\" ,\n " +
249+ " \" headers\" : {\n " +
250+ " \" accept\" : \" application/json\" \n " +
251+ " }\n " +
252+ " },\n " +
253+ " {\n " +
254+ " \" id\" : \" 2\" ,\n " +
255+ " \" url\" : \" /me\" ,\n " +
256+ " \" method\" : \" GET\" \n " +
257+ " }\n " +
258+ " ]\n " +
259+ "}" ;
260+ //The following string is the same size as a token
261+ String longBearerString = "bbcbbbcbccbbabbacbccccbccabbcacacaaabccbccbbbbaabbabcccccbcbcacbbccbcbcaaacaacccacccbabacccabbccbccacccabcbbbbbacaacccabaaacaabcbacbaabcacabcbaaaccaccbbaaaabbbabbcaabbacccccaabbcabbbbbbbaaababaaabbbbcbbbcacbaaccaccabbcbabbabacbcccacbaccacaacaaacbacbaaaacbcbbacbcaaaaabcababbbcaabaaaabaaccbaccaababcbccbbacbaaabcbcbcbaaabcccabcacbbcbbabcccaccbacaaccaaaabcaacaccababbcbcabbccbaaaaaacccbcbccbaaccabbacbaaaacaccabcbbbcaabccccbbabbccaaaccbbbabbabcbcabcbccabbaabaacaaabbacaaccbcabaaaabcaabbabccabbcabcabbbaaaacccbcbcbbaacbbbbbcbbabcbabcbbcbbbaacccaababaccbaabcccccabbcabcababacbcaacbbaabaaacaabbacabcbcabcaabcccccacbaaacccbcabacbcbbbcccaaabacccaabcbcaababaabbacacabcbccacbbcacbbcaaccbbbcccbaaaacbcacabbcaaaacbcaacaccccbbaaabcccaacbabbbcbbccbacabccabaabacbbbbbcbaaaaaccabcbccabcccbcccabababbbbcbbcbbcbcabaabaabccbabcbbbabaaacaaaabcbcabaccaaaaacbaaabcbaccbaccbabacbcabbcbcbbaabbbbccaacccaabacacbabbcacabcbaccbcacbccaabcbbacbacbacbbaaccaaaaccacbcababccccccbbcbacacaaabaaaccbaabaacccbaaabcbcaabaaaaabcabacbabcbbccccbacbaabccaaabcccbbacbbacacaccabbcaacbbbbcbcbbcaabaacbbbcbbcbaaacccbacbaabacacbbabcaaaacaabacbaacaaaabbcacbacbcccacbcabcccacacaaccbbbcaacabcccaaacbabaaccbcbaacacbacaababcabcbccabcabcccaacabacabccaacbbcabbcaacbccaababacccaccabacbbbaabaccbcabcaabbcccacccbcbcabbccabbabaaaccacccbcbacabcaabcaccbbcbaaacbaabbbbcbccbbcccaababababaabacccbbbcabbaaacbcaaabccbbbccabbbcccbcacacaaabbabcacbacaacbbbcbbbbbccabbbabcabbcbacccaaabaaacbaabbacabbabcbcbcacbbaabbabcbcaacbabbcccbabaaccabbacbcaaacabbbbcaacbccbbbbacbcabbbaabcacaaabaabbaaccabbcabcabbacaaaacacabbabccacbbabbbbcabbaaccabcccaabbaaaacaabcbacabbaacaccbbbbaaaaacbcbacbbaaaabbabcaacaaacbbaabcccbbcbaacabbbbcaccaaaabcacbcbaaabbbcabcabcbbbbacbaccaacbccaacbbcaccaaaaacbabbbcbcbacbacbaccaacbcbcbbcaaaabaaabaabccaaaabbcabaaabcbcccbbcbaacacbbacacbabbcbaccabacbabcbcaabbbaabccccccaaccbcbccccbbbbcabaaacbbbaacbbaccaabcbcaacaacaacacaababcccbacbbccccbcacbcbcaacaaaacccccccaccaababaacbaabbcbbbccaacbabbcbcaaabbccacbbaabbbbcbbccbcccbbcacabaaacbacacbcaaabcbccacacccbbaacbacbbcbabbcbbbbcaccbaaccbcbcaabcababcbbbcccbcbaababcacbacbbbacacacabbccabbbaaaaacaccbbccbccbabaababcbbccabcaaacaccacabbaabacacabaccabacbacabbccbabaccbabcccbbcbbbaaabbccabbcbbbacacbbbabbcbbacbcabacaccabbbcbabbcbcacbcbbabbbbcabcbbabbbcaaccbaaaaccbababbbaabcbbbaacabbbbcabcabbcabbacabbccccaabaaaaabbcbabacbacbabcabcccabbbccbbcccaacacaabbcbabcbabaaaababbbacabaacbabbabcbbbcbccbacbcbccbbbccccbacaccbaccaaabbaacbbaaabbbcaccbabbcccbbbbccacbbaaacabbbbaabbabcccabcbcbbccccbacccabbbaaabcacccaabbabaccccbbbcccccaacbbbccbcabbbcccababbbcacccccccabccbbcaabccbbbaaccabbcaabcacabbcbbabcccaccccaaacbbbccaaabcbacabbbacbaccaabcbabababbcbcacaabcaabcbcbbcaaacaacabaaababbbacaccababaccbacacacacacbcccbabcbabcabccbaabcccababcbacbccccccacacbbacccccbaccbacaacbacacbcccccaaaacbaaaaccbacbbcacccbbbaabaaaccaccbcabcccccacaaaabcbabbacbbbcaaababcbacccbabcbaaabbcbaaacaabbcaaccaaccbacbaaaaaaabbaacaaabacbbcaacaacabbcabaccaaacbaccccbcccbcbcaaacbacaacccaccaacabacaaaabbbbbbbcacacbabccacacabbbababbbbcbabaaacaaacbacbcabbccacaacccbbbcbbacaccbbbaaabababbcbaacbcabcabaaccbcaaacbbbaacacccbbcaabcbacabbccbcbbbabbbaabacacaccaabbcbbaccbaaabcabbababaccca" ;
262+ RequestInformation requestInfo = new RequestInformation ();
263+ requestInfo .urlTemplate = "{+baseurl}/users/{user%2Did}{?%24expand,%24select}" ;
264+ HashMap <String , Object > pathParameters = new HashMap <>();
265+ pathParameters .put ("baseurl" , "https://graph.microsoft.com/v1.0" );
266+ pathParameters .put ("user%2Did" , "TokenToReplace" );
267+ requestInfo .pathParameters = pathParameters ;
268+ requestInfo .httpMethod = HttpMethod .GET ;
269+ // Only one header should be present in the headers object of the Json Body
270+ requestInfo .headers .add ("accept" , "application/json" );
271+ requestInfo .headers .add ("authorization" , longBearerString );
272+ RequestInformation requestInfo2 = new RequestInformation ();
273+ requestInfo2 .urlTemplate = "{+baseurl}/users/{user%2Did}{?%24expand,%24select}" ;
274+ HashMap <String , Object > pathParameters2 = new HashMap <>();
275+ pathParameters2 .put ("baseurl" , "https://graph.microsoft.com/v1.0" );
276+ pathParameters2 .put ("user%2Did" , "TokenToReplace" );
277+ requestInfo2 .pathParameters = pathParameters2 ;
278+ requestInfo2 .httpMethod = HttpMethod .GET ;
279+ // No headers object should be present in the Json body
280+ requestInfo2 .headers .add ("AuthoriZation" , longBearerString ); // Test with strange casing
281+
282+ BatchRequestContent batchRequestContent = new BatchRequestContent (client );
283+ batchRequestContent .addBatchRequestStep (new BatchRequestStep ("1" ,adapter .convertToNativeRequest (requestInfo )));
284+ batchRequestContent .addBatchRequestStep (new BatchRequestStep ("2" ,adapter .convertToNativeRequest (requestInfo2 )));
285+
286+ InputStream stream = batchRequestContent .getBatchRequestContent ();
287+ String requestContentString = readInputStream (stream );
288+ requestContentString = requestContentString .replace ("\n " , "" ).replaceAll ("\\ s" , "" );
289+ expectedJson = expectedJson .replace ("\n " , "" ).replaceAll ("\\ s" , "" );
290+
291+ assertNotNull (requestContentString );
292+ assertEquals (expectedJson , requestContentString );
293+ }
294+ @ Test
237295 void BatchRequestContent_AddBatchRequestStepWithHttpRequestMessage () {
238296 BatchRequestContent batchRequestContent = new BatchRequestContent (client );
239297 assertTrue (batchRequestContent .getBatchRequestSteps ().isEmpty ());
@@ -248,6 +306,7 @@ void BatchRequestContent_AddBatchRequestStepWithHttpRequestMessage() {
248306 Assertions .assertEquals (batchRequestContent .getBatchRequestSteps ().get (requestId ).getRequest ().url ().uri ().toString (), request .url ().uri ().toString ());
249307 Assertions .assertEquals (batchRequestContent .getBatchRequestSteps ().get (requestId ).getRequest ().method (), request .method ());
250308 }
309+
251310 @ Test
252311 void BatchRequestContent_AddBatchRequestStepWithHttpRequestMessageToBatchRequestContentWithMaxSteps () {
253312 BatchRequestContent batchRequestContent = new BatchRequestContent (client );
0 commit comments