File tree Expand file tree Collapse file tree 2 files changed +34
-9
lines changed
src/libraries/Common/tests/System/Net/Http Expand file tree Collapse file tree 2 files changed +34
-9
lines changed Original file line number Diff line number Diff line change @@ -258,6 +258,24 @@ public static async Task<HttpRequestData> FromHttpRequestMessageAsync(System.Net
258
258
return result ;
259
259
}
260
260
261
+ public HttpHeaderData [ ] GetHeaderData ( string headerName )
262
+ {
263
+ return Headers . Where ( h => h . Name . Equals ( headerName , StringComparison . OrdinalIgnoreCase ) ) . ToArray ( ) ;
264
+ }
265
+
266
+ public HttpHeaderData GetSingleHeaderData ( string headerName )
267
+ {
268
+ HttpHeaderData [ ] data = GetHeaderData ( headerName ) ;
269
+ if ( data . Length != 1 )
270
+ {
271
+ throw new Exception (
272
+ $ "Expected single value for { headerName } header, actual count: { data . Length } { Environment . NewLine } " +
273
+ $ "{ "\t " } { string . Join ( Environment . NewLine + "\t " , data ) } ") ;
274
+ }
275
+
276
+ return data [ 0 ] ;
277
+ }
278
+
261
279
public string [ ] GetHeaderValues ( string headerName )
262
280
{
263
281
return Headers . Where ( h => h . Name . Equals ( headerName , StringComparison . OrdinalIgnoreCase ) )
Original file line number Diff line number Diff line change @@ -2283,23 +2283,30 @@ await LoopbackServerFactory.CreateClientAndServerAsync(async uri =>
2283
2283
} , async server =>
2284
2284
{
2285
2285
var data = await server . AcceptConnectionSendResponseAndCloseAsync ( ) ;
2286
- var expectedValue = headerValue ;
2287
- if ( safeChar > 0x7F )
2288
- {
2289
- Assert . True ( IsWinHttpHandler ) ;
2290
- expectedValue = headerValue . Replace ( safeChar , '?' ) ; // WinHttpHandler replaces Latin-1 characters with '?'.
2291
- }
2286
+ var encoding = Encoding . GetEncoding ( "ISO-8859-1" ) ;
2292
2287
switch ( headerType )
2293
2288
{
2294
2289
case HeaderType . Request :
2295
- Assert . Equal ( expectedValue , data . GetSingleHeaderValue ( "Custom-Header" ) ) ;
2290
+ {
2291
+ var headerLine = encoding . GetString ( data . GetSingleHeaderData ( "Custom-Header" ) . Raw ) ;
2292
+ var receivedHeaderValue = headerLine . Substring ( headerLine . IndexOf ( ':' ) + 1 ) . TrimStart ( ) ;
2293
+ Assert . Equal ( headerValue , receivedHeaderValue ) ;
2296
2294
break ;
2295
+ }
2297
2296
case HeaderType . Content :
2298
- Assert . Equal ( expectedValue , data . GetSingleHeaderValue ( "Custom-Content-Header" ) ) ;
2297
+ {
2298
+ var headerLine = encoding . GetString ( data . GetSingleHeaderData ( "Custom-Content-Header" ) . Raw ) ;
2299
+ var receivedHeaderValue = headerLine . Substring ( headerLine . IndexOf ( ':' ) + 1 ) . TrimStart ( ) ;
2300
+ Assert . Equal ( headerValue , receivedHeaderValue ) ;
2299
2301
break ;
2302
+ }
2300
2303
case HeaderType . Cookie :
2301
- Assert . Equal ( $ "CustomCookie={ expectedValue } ", data . GetSingleHeaderValue ( "cookie" ) ) ;
2304
+ {
2305
+ var headerLine = encoding . GetString ( data . GetSingleHeaderData ( "cookie" ) . Raw ) ;
2306
+ var receivedHeaderValue = headerLine . Substring ( headerLine . IndexOf ( ':' ) + 1 ) . TrimStart ( ) ;
2307
+ Assert . Equal ( $ "CustomCookie={ headerValue } ", receivedHeaderValue ) ;
2302
2308
break ;
2309
+ }
2303
2310
}
2304
2311
} ) ;
2305
2312
}
You can’t perform that action at this time.
0 commit comments