structured-field-values
Version:
Implementation of Structured Field Values from IETF httpbis RFC8941
114 lines (113 loc) • 3.46 kB
JSON
[
{
"name": "basic parameterised dict",
"raw": ["abc=123;a=1;b=2, def=456, ghi=789;q=9;r=\"+w\""],
"header_type": "dictionary",
"expected": [
["abc", [123, [["a", 1], ["b", 2]]]],
["def", [456, []]],
["ghi", [789, [["q", 9], ["r", "+w"]]]]
]
},
{
"name": "single item parameterised dict",
"raw": ["a=b; q=1.0"],
"header_type": "dictionary",
"expected": [
["a", [{"__type": "token", "value": "b"}, [["q", 1.0]]]]
],
"canonical": ["a=b;q=1.0"]
},
{
"name": "list item parameterised dictionary",
"raw": ["a=(1 2); q=1.0"],
"header_type": "dictionary",
"expected": [["a", [[[1, []], [2, []]], [["q", 1.0]]]]],
"canonical": ["a=(1 2);q=1.0"]
},
{
"name": "missing parameter value parameterised dict",
"raw": ["a=3;c;d=5"],
"header_type": "dictionary",
"expected": [
["a", [3, [["c", true], ["d", 5]]]]
]
},
{
"name": "terminal missing parameter value parameterised dict",
"raw": ["a=3;c=5;d"],
"header_type": "dictionary",
"expected": [
["a", [3, [["c", 5], ["d", true]]]]
]
},
{
"name": "no whitespace parameterised dict",
"raw": ["a=b;c=1,d=e;f=2"],
"header_type": "dictionary",
"expected": [
["a", [{"__type": "token", "value": "b"}, [["c", 1]]]],
["d", [{"__type": "token", "value": "e"}, [["f", 2]]]]
],
"canonical": ["a=b;c=1, d=e;f=2"]
},
{
"name": "whitespace before = parameterised dict",
"raw": ["a=b;q =0.5"],
"header_type": "dictionary",
"must_fail": true
},
{
"name": "whitespace after = parameterised dict",
"raw": ["a=b;q= 0.5"],
"header_type": "dictionary",
"must_fail": true
},
{
"name": "whitespace before ; parameterised dict",
"raw": ["a=b ;q=0.5"],
"header_type": "dictionary",
"must_fail": true
},
{
"name": "whitespace after ; parameterised dict",
"raw": ["a=b; q=0.5"],
"header_type": "dictionary",
"expected": [
["a", [{"__type": "token", "value": "b"}, [["q", 0.5]]]]
],
"canonical": ["a=b;q=0.5"]
},
{
"name": "extra whitespace parameterised dict",
"raw": ["a=b; c=1 , d=e; f=2; g=3"],
"header_type": "dictionary",
"expected": [
["a", [{"__type": "token", "value": "b"}, [["c", 1]]]],
["d", [{"__type": "token", "value": "e"}, [["f", 2], ["g", 3]]]]
],
"canonical": ["a=b;c=1, d=e;f=2;g=3"]
},
{
"name": "two lines parameterised list",
"raw": ["a=b;c=1", "d=e;f=2"],
"header_type": "dictionary",
"expected": [
["a", [{"__type": "token", "value": "b"}, [["c", 1]]]],
["d", [{"__type": "token", "value": "e"}, [["f", 2]]]]
],
"canonical": ["a=b;c=1, d=e;f=2"]
},
{
"name": "trailing comma parameterised list",
"raw": ["a=b; q=1.0,"],
"header_type": "dictionary",
"must_fail": true
},
{
"name": "empty item parameterised list",
"raw": ["a=b; q=1.0,,c=d"],
"header_type": "dictionary",
"must_fail": true
}
]