@@ -220,16 +220,17 @@ public void Convert_WithContentTypeAndCustomHeader_OnlyCustomHeadersIsAddedToHtt
220
220
}
221
221
222
222
[ Fact ]
223
- public void Convert_WithContentLengthHeader_ContentLengthHeaderIsNotAdded ( )
223
+ public void Convert_WithContentLengthHeader_ContentLengthHeaderIsNotAddedToHttpRequestMessage ( )
224
224
{
225
225
var request = new ProviderServiceRequest
226
226
{
227
227
Method = HttpVerb . Post ,
228
228
Path = "/events" ,
229
229
Headers = new Dictionary < string , string >
230
230
{
231
- { "Content-Length" , "100" }
232
- }
231
+ { "Content-Length" , "12" }
232
+ } ,
233
+ Body = "Some content"
233
234
} ;
234
235
235
236
var mapper = GetSubject ( ) ;
@@ -241,6 +242,92 @@ public void Convert_WithContentLengthHeader_ContentLengthHeaderIsNotAdded()
241
242
Assert . Equal ( 0 , result . Headers . Count ( ) ) ;
242
243
}
243
244
245
+ [ Fact ]
246
+ public void Convert_WithContentLengthHeader_ContentLengthHeaderIsAddedToHttpRequestMessageContentHeaders ( )
247
+ {
248
+ var request = new ProviderServiceRequest
249
+ {
250
+ Method = HttpVerb . Post ,
251
+ Path = "/events" ,
252
+ Headers = new Dictionary < string , string >
253
+ {
254
+ { "Content-Length" , "12" }
255
+ } ,
256
+ Body = "Some content"
257
+ } ;
258
+ var httpBodyContent = new HttpBodyContent ( request . Body , "text/plain" , Encoding . UTF8 ) ;
259
+ var stringContent = new StringContent ( request . Body , Encoding . UTF8 , "text/plain" ) ;
260
+
261
+ var mapper = GetSubject ( ) ;
262
+
263
+ _mockHttpMethodMapper . Convert ( HttpVerb . Post ) . Returns ( HttpMethod . Post ) ;
264
+ _mockHttpBodyContentMapper . Convert ( Arg . Any < string > ( ) , Arg . Any < IDictionary < string , string > > ( ) ) . Returns ( httpBodyContent ) ;
265
+ _mockHttpContentMapper . Convert ( httpBodyContent ) . Returns ( stringContent ) ;
266
+
267
+ var result = mapper . Convert ( request ) ;
268
+
269
+ Assert . Equal ( request . Headers . Last ( ) . Key , result . Content . Headers . Last ( ) . Key ) ;
270
+ Assert . Equal ( request . Headers . Last ( ) . Value , result . Content . Headers . Last ( ) . Value . First ( ) ) ;
271
+ }
272
+
273
+ [ Fact ]
274
+ public void Convert_WithContentTypeSpecifiedAndAlsoBeingSetByStringContent_ContentTypeHeaderIsNotReAddedToHttpRequestMessageContentHeaders ( )
275
+ {
276
+ var request = new ProviderServiceRequest
277
+ {
278
+ Method = HttpVerb . Post ,
279
+ Path = "/events" ,
280
+ Headers = new Dictionary < string , string >
281
+ {
282
+ { "Content-Type" , "text/plain" }
283
+ } ,
284
+ Body = "Some content"
285
+ } ;
286
+ var httpBodyContent = new HttpBodyContent ( request . Body , "text/plain" , Encoding . UTF8 ) ;
287
+ var stringContent = new StringContent ( request . Body , Encoding . UTF8 , "text/plain" ) ;
288
+
289
+ var mapper = GetSubject ( ) ;
290
+
291
+ _mockHttpMethodMapper . Convert ( HttpVerb . Post ) . Returns ( HttpMethod . Post ) ;
292
+ _mockHttpBodyContentMapper . Convert ( Arg . Any < string > ( ) , Arg . Any < IDictionary < string , string > > ( ) ) . Returns ( httpBodyContent ) ;
293
+ _mockHttpContentMapper . Convert ( httpBodyContent ) . Returns ( stringContent ) ;
294
+
295
+ var result = mapper . Convert ( request ) ;
296
+
297
+ Assert . Equal ( 1 , result . Content . Headers . Count ( ) ) ;
298
+ Assert . Equal ( request . Headers . First ( ) . Key , result . Content . Headers . First ( ) . Key ) ;
299
+ Assert . Equal ( "text/plain; charset=utf-8" , result . Content . Headers . First ( ) . Value . First ( ) ) ;
300
+ }
301
+
302
+ [ Fact ]
303
+ public void Convert_WithContentTypeSpecifiedButNotBeingSetByByteArrayContent_ContentTypeHeaderIsNotReAddedToHttpRequestMessageContentHeaders ( )
304
+ {
305
+ var request = new ProviderServiceRequest
306
+ {
307
+ Method = HttpVerb . Post ,
308
+ Path = "/events" ,
309
+ Headers = new Dictionary < string , string >
310
+ {
311
+ { "Content-Type" , "application/octet-stream" }
312
+ } ,
313
+ Body = Encoding . UTF8 . GetBytes ( "Some content" )
314
+ } ;
315
+ var httpBodyContent = new HttpBodyContent ( request . Body , "text/plain" , Encoding . UTF8 ) ;
316
+ var byteArrayContent = new ByteArrayContent ( request . Body as byte [ ] ) ;
317
+
318
+ var mapper = GetSubject ( ) ;
319
+
320
+ _mockHttpMethodMapper . Convert ( HttpVerb . Post ) . Returns ( HttpMethod . Post ) ;
321
+ _mockHttpBodyContentMapper . Convert ( Arg . Any < object > ( ) , Arg . Any < IDictionary < string , string > > ( ) ) . Returns ( httpBodyContent ) ;
322
+ _mockHttpContentMapper . Convert ( httpBodyContent ) . Returns ( byteArrayContent ) ;
323
+
324
+ var result = mapper . Convert ( request ) ;
325
+
326
+ Assert . Equal ( 1 , result . Content . Headers . Count ( ) ) ;
327
+ Assert . Equal ( request . Headers . First ( ) . Key , result . Content . Headers . First ( ) . Key ) ;
328
+ Assert . Equal ( "application/octet-stream" , result . Content . Headers . First ( ) . Value . First ( ) ) ;
329
+ }
330
+
244
331
[ Fact ]
245
332
public void Convert_WithBody_HttpContentMapperIsCalled ( )
246
333
{
@@ -279,7 +366,7 @@ public void Convert_WithTheWorks_CorrectlyMappedHttpRequestMessageIsReturned()
279
366
{
280
367
{ "Content-Type" , contentTypeString + "; charset=" + encodingString } ,
281
368
{ "X-Custom" , "My Custom header" } ,
282
- { "Content-Length" , "10000 " } , //This header is removed and replace with the correct value of 29
369
+ { "Content-Length" , "1000 " }
283
370
} ,
284
371
Body = new
285
372
{
@@ -314,7 +401,7 @@ public void Convert_WithTheWorks_CorrectlyMappedHttpRequestMessageIsReturned()
314
401
315
402
//Content-Length header
316
403
Assert . Equal ( request . Headers . Last ( ) . Key , contentLengthHeader . Key ) ;
317
- Assert . Equal ( "29" , contentLengthHeader . Value . First ( ) ) ;
404
+ Assert . Equal ( request . Headers . Last ( ) . Value , contentLengthHeader . Value . First ( ) ) ;
318
405
}
319
406
}
320
407
}
0 commit comments