Added decoding tests for the FormReader
- This is the first step in work to remove char[] allocations from the FormReader
This commit is contained in:
parent
18f08fdb2f
commit
87cd79d6fc
|
|
@ -189,6 +189,23 @@ namespace Microsoft.AspNetCore.WebUtilities
|
||||||
Assert.Null(await ReadPair(reader));
|
Assert.Null(await ReadPair(reader));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// https://en.wikipedia.org/wiki/Percent-encoding
|
||||||
|
[Theory]
|
||||||
|
[InlineData("++=hello", " ", "hello")]
|
||||||
|
[InlineData("a=1+1", "a", "1 1")]
|
||||||
|
[InlineData("%22%25%2D%2E%3C%3E%5C%5E%5F%60%7B%7C%7D%7E=%22%25%2D%2E%3C%3E%5C%5E%5F%60%7B%7C%7D%7E", "\"%-.<>\\^_`{|}~", "\"%-.<>\\^_`{|}~")]
|
||||||
|
[InlineData("a=%41", "a", "A")] // ascii encoded hex
|
||||||
|
[InlineData("a=%C3%A1", "a", "\u00e1")] // utf8 code points
|
||||||
|
[InlineData("a=%u20AC", "a", "%u20AC")] // utf16 not supported
|
||||||
|
public async Task ReadForm_Decoding(string formData, string key, string expectedValue)
|
||||||
|
{
|
||||||
|
var body = MakeStream(bufferRequest: false, text: formData);
|
||||||
|
|
||||||
|
var form = await ReadFormAsync(new FormReader(body));
|
||||||
|
|
||||||
|
Assert.Equal(expectedValue, form[key]);
|
||||||
|
}
|
||||||
|
|
||||||
protected virtual Task<Dictionary<string, StringValues>> ReadFormAsync(FormReader reader)
|
protected virtual Task<Dictionary<string, StringValues>> ReadFormAsync(FormReader reader)
|
||||||
{
|
{
|
||||||
return Task.FromResult(reader.ReadForm());
|
return Task.FromResult(reader.ReadForm());
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue