File tree Expand file tree Collapse file tree 2 files changed +20
-2
lines changed
Expand file tree Collapse file tree 2 files changed +20
-2
lines changed Original file line number Diff line number Diff line change @@ -40,11 +40,27 @@ public static HttpRequestMessage Message(ToolSettings settings)
4040 Content = new StringContent ( settings . Body )
4141 } ;
4242
43- foreach ( var header in settings . Headers )
43+ var contentHeaders = settings . Headers . Where ( h => h == "Allow" || h . StartsWith ( "Content" ) ) . ToArray ( ) ;
44+ foreach ( var header in contentHeaders )
4445 {
4546 var split = header . Split ( ':' ) ;
4647 var name = split [ 0 ] . Trim ( ) ;
4748 var value = split [ 1 ] . Trim ( ) ;
49+
50+ if ( message . Content . Headers . Any ( h => h . Key == name ) )
51+ message . Content . Headers . Remove ( name ) ;
52+ message . Content . Headers . Add ( name , value ) ;
53+ }
54+
55+ var requestHeaders = settings . Headers . Except ( contentHeaders ) . ToArray ( ) ;
56+ foreach ( var header in requestHeaders )
57+ {
58+ var split = header . Split ( ':' ) ;
59+ var name = split [ 0 ] . Trim ( ) ;
60+ var value = split [ 1 ] . Trim ( ) ;
61+
62+ if ( message . Headers . Any ( h => h . Key == name ) )
63+ message . Headers . Remove ( name ) ;
4864 message . Headers . Add ( name , value ) ;
4965 }
5066
Original file line number Diff line number Diff line change @@ -25,7 +25,7 @@ public async Task CanCreateComplexMessage()
2525 {
2626 URL = new Uri ( "http://localhost" ) ,
2727 Method = HttpMethod . Post . Method ,
28- Headers = [ "Authorization: Basic a1b2c3d4e5f6" ] ,
28+ Headers = [ "Authorization: Basic a1b2c3d4e5f6" , "Content-Type: application/json" ] ,
2929 Body = """{"key123":"value456"}"""
3030 } ;
3131
@@ -36,6 +36,8 @@ public async Task CanCreateComplexMessage()
3636 Assert . Equal ( HttpMethod . Post , message . Method ) ;
3737 Assert . Contains ( "Authorization" , message . Headers . Select ( h => h . Key ) ) ;
3838 Assert . Contains ( "Basic a1b2c3d4e5f6" , message . Headers . Select ( h => h . Value . FirstOrDefault ( ) ) ) ;
39+ Assert . Contains ( "Content-Type" , message . Content ! . Headers . Select ( h => h . Key ) ) ;
40+ Assert . Contains ( "application/json" , message . Content ! . Headers . Select ( h => h . Value . FirstOrDefault ( ) ) ) ;
3941
4042 var json = await JsonSerializer . DeserializeAsync < JsonElement > ( await message . Content ! . ReadAsStreamAsync ( ) ) ;
4143 Assert . Equal ( "value456" , json . GetProperty ( "key123" ) . GetString ( ) ) ;
You can’t perform that action at this time.
0 commit comments