@@ -52,6 +52,63 @@ public async Task HeaderInState_AddCorrectValue()
52
52
Assert . Equal ( new [ ] { "test" } , Handler . Headers . GetValues ( "out" ) ) ;
53
53
}
54
54
55
+ [ Fact ]
56
+ public async Task HeaderInState_WithMultipleValues_AddAllValues ( )
57
+ {
58
+ // Arrange
59
+ Configuration . Headers . Add ( "in" , new HeaderPropagationEntry { OutboundHeaderName = "out" } ) ;
60
+ State . Headers . Add ( "in" , new [ ] { "one" , "two" } ) ;
61
+
62
+ // Act
63
+ await Client . SendAsync ( new HttpRequestMessage ( ) ) ;
64
+
65
+ // Assert
66
+ Assert . True ( Handler . Headers . Contains ( "out" ) ) ;
67
+ Assert . Equal ( new [ ] { "one" , "two" } , Handler . Headers . GetValues ( "out" ) ) ;
68
+ }
69
+
70
+ [ Fact ]
71
+ public async Task HeaderInState_RequestWithContent_ContentHeaderPresent_DoesNotAddIt ( )
72
+ {
73
+ Configuration . Headers . Add ( "in" , new HeaderPropagationEntry ( ) { OutboundHeaderName = "Content-Type" } ) ;
74
+ State . Headers . Add ( "in" , "test" ) ;
75
+
76
+ // Act
77
+ await Client . SendAsync ( new HttpRequestMessage ( ) { Content = new StringContent ( "test" ) } ) ;
78
+
79
+ // Assert
80
+ Assert . True ( Handler . Content . Headers . Contains ( "Content-Type" ) ) ;
81
+ Assert . Equal ( new [ ] { "text/plain; charset=utf-8" } , Handler . Content . Headers . GetValues ( "Content-Type" ) ) ;
82
+ }
83
+
84
+ [ Fact ]
85
+ public async Task HeaderInState_RequestWithContent_ContentHeaderNotPresent_AddValue ( )
86
+ {
87
+ Configuration . Headers . Add ( "in" , new HeaderPropagationEntry ( ) { OutboundHeaderName = "Content-Language" } ) ;
88
+ State . Headers . Add ( "in" , "test" ) ;
89
+
90
+ // Act
91
+ await Client . SendAsync ( new HttpRequestMessage ( ) { Content = new StringContent ( "test" ) } ) ;
92
+
93
+ // Assert
94
+ Assert . True ( Handler . Content . Headers . Contains ( "Content-Language" ) ) ;
95
+ Assert . Equal ( new [ ] { "test" } , Handler . Content . Headers . GetValues ( "Content-Language" ) ) ;
96
+ }
97
+
98
+ [ Fact ]
99
+ public async Task HeaderInState_WithMultipleValues_RequestWithContent_ContentHeaderNotPresent_AddAllValues ( )
100
+ {
101
+ Configuration . Headers . Add ( "in" , new HeaderPropagationEntry ( ) { OutboundHeaderName = "Content-Language" } ) ;
102
+ State . Headers . Add ( "in" , new [ ] { "one" , "two" } ) ;
103
+
104
+ // Act
105
+ await Client . SendAsync ( new HttpRequestMessage ( ) { Content = new StringContent ( "test" ) } ) ;
106
+
107
+ // Assert
108
+ Assert . True ( Handler . Content . Headers . Contains ( "Content-Language" ) ) ;
109
+ Assert . Equal ( new [ ] { "one" , "two" } , Handler . Content . Headers . GetValues ( "Content-Language" ) ) ;
110
+ }
111
+
55
112
[ Fact ]
56
113
public async Task HeaderInState_NoOutputName_UseInputName ( )
57
114
{
@@ -168,11 +225,13 @@ public async Task NullEntryInConfiguration_AddCorrectValue()
168
225
private class SimpleHandler : DelegatingHandler
169
226
{
170
227
public HttpHeaders Headers { get ; private set ; }
228
+ public HttpContent Content { get ; private set ; }
171
229
172
230
protected override Task < HttpResponseMessage > SendAsync ( HttpRequestMessage request ,
173
231
CancellationToken cancellationToken )
174
232
{
175
233
Headers = request . Headers ;
234
+ Content = request . Content ;
176
235
return Task . FromResult ( new HttpResponseMessage ( ) ) ;
177
236
}
178
237
}
0 commit comments