@@ -59,18 +59,32 @@ static W3CBaggagePropagatorTests()
59
59
{ "=" , null } ,
60
60
{ " = " , null } ,
61
61
{ ";" , null } ,
62
+ // valid + invalid
63
+ { "key1=value1," , null } ,
64
+ { "key1=value1,key2" , null } ,
65
+ { "key1=value1,key2=" , null } ,
66
+ { "key1=value1,=value" , null } ,
67
+ { "key1=value1,=" , null } ,
68
+ { "key1=value1,key2;a=value2" , null } ,
69
+ // invalid + valid
70
+ { ",key2=value2" , null } ,
71
+ { "key1,key2=value2" , null } ,
72
+ { "key1=,key2=value2" , null } ,
73
+ { "=value1,key2=value2" , null } ,
74
+ { "=,key2=value2" , null } ,
75
+ { "key1;a=value1,key2=value2" , null } ,
76
+ // valid headers
62
77
{ "valid=%20" , [ ( "valid" , " " ) ] } ,
63
78
{ "%20=valid" , [ ( " " , "valid" ) ] } ,
64
79
{ "%20=%20" , [ ( " " , " " ) ] } ,
65
80
{ "key1=value1,key2=value2" , [ ( "key1" , "value1" ) , ( "key2" , "value2" ) ] } ,
66
- { "key1=value1,invalid" , [ ( "key1" , "value1" ) ] } ,
67
81
{ "key1=value1, key2 = value2;property1;property2, key3=value3; propertyKey=propertyValue" , [ ( "key1" , "value1" ) , ( "key2" , "value2" ) , ( "key3" , "value3" ) ] } , // W3C metadata/property not currently supported so the values are discarded
68
82
{ "key1=value1%2Cvalid" , [ ( "key1" , "value1,valid" ) ] } ,
69
83
{ "key1=value1=valid" , [ ( "key1" , "value1=valid" ) ] } ,
70
84
{ "%20key1%20=%20value%091" , [ ( " key1 " , " value\t 1" ) ] } , // encoded whitespace
71
85
{ "key1 = value1, key2 = value\t 2 " , [ ( "key1" , "value1" ) , ( "key2" , "value\t 2" ) ] } , // whitespace not encoded
72
- { "key%F0%9F%90%B6=value%E6%88%91" , [ ( "key🐶" , "value我" ) ] } , // encoded unicode
73
- { "key🐶=value我" , [ ( "key🐶" , "value我" ) ] } , // unicode not encoded
86
+ { "key%F0%9F%90%B6=value%E6%88%91" , [ ( "key🐶" , "value我" ) ] } , // encoded unicode
87
+ { "key🐶=value我" , [ ( "key🐶" , "value我" ) ] } , // unicode not encoded
74
88
} ;
75
89
76
90
[ Theory ]
@@ -263,6 +277,20 @@ public void Extract_CarrierAndDelegate()
263
277
[ InlineData ( "" ) ]
264
278
[ InlineData ( " " ) ]
265
279
[ InlineData ( null ) ]
280
+ // valid + invalid
281
+ [ InlineData ( "key1=value1," ) ]
282
+ [ InlineData ( "key1=value1,key2" ) ]
283
+ [ InlineData ( "key1=value1,key2=" ) ]
284
+ [ InlineData ( "key1=value1,=value2" ) ]
285
+ [ InlineData ( "key1=value1,=" ) ]
286
+ [ InlineData ( "key1=value1,key2;a=value2" ) ]
287
+ // invalid + valid
288
+ [ InlineData ( ",key2=value2" ) ]
289
+ [ InlineData ( "key1,key2=value2" ) ]
290
+ [ InlineData ( "key1=,key2=value2" ) ]
291
+ [ InlineData ( "=value1,key2=value2" ) ]
292
+ [ InlineData ( "=,key2=value2" ) ]
293
+ [ InlineData ( "key1;a=value1,key2=value2" ) ]
266
294
public void Extract_InvalidFormat ( string header )
267
295
{
268
296
var headers = new Mock < IHeadersCollection > ( MockBehavior . Strict ) ;
0 commit comments