Skip to content

Commit 857722c

Browse files
Remove invalid characters from test results (#26296)
1 parent 9884c25 commit 857722c

File tree

2 files changed

+25
-7
lines changed

2 files changed

+25
-7
lines changed

src/Servers/Kestrel/shared/test/StringExtensions.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ public static string EscapeNonPrintable(this string s)
1616
.Replace("\r", @"\x0D")
1717
.Replace("\n", @"\x0A")
1818
.Replace("\0", @"\x00")
19+
.Replace("\x80", @"\x80")
1920
+ ellipsis;
2021
}
2122
}
22-
}
23+
}

src/Servers/Kestrel/test/InMemory.FunctionalTests/BadHttpRequestTests.cs

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,17 +48,34 @@ public Task TestInvalidHeaders(string rawHeaders, string expectedExceptionMessag
4848
expectedExceptionMessage);
4949
}
5050

51+
public static Dictionary<string, (string header, string errorMessage)> BadHeaderData => new Dictionary<string, (string, string)>
52+
{
53+
{ "Hea\0der: value".EscapeNonPrintable(), ("Hea\0der: value", "Invalid characters in header name.") },
54+
{ "Header: va\0lue".EscapeNonPrintable(), ("Header: va\0lue", "Malformed request: invalid headers.") },
55+
{ "Head\x80r: value".EscapeNonPrintable(), ("Head\x80r: value", "Invalid characters in header name.") },
56+
{ "Header: valu\x80".EscapeNonPrintable(), ("Header: valu\x80", "Malformed request: invalid headers.") },
57+
};
58+
59+
public static TheoryData<string> BadHeaderDataNames => new TheoryData<string>
60+
{
61+
"Hea\0der: value".EscapeNonPrintable(),
62+
"Header: va\0lue".EscapeNonPrintable(),
63+
"Head\x80r: value".EscapeNonPrintable(),
64+
"Header: valu\x80".EscapeNonPrintable()
65+
};
66+
5167
[Theory]
52-
[InlineData("Hea\0der: value", "Invalid characters in header name.")]
53-
[InlineData("Header: va\0lue", "Malformed request: invalid headers.")]
54-
[InlineData("Head\x80r: value", "Invalid characters in header name.")]
55-
[InlineData("Header: valu\x80", "Malformed request: invalid headers.")]
56-
public Task BadRequestWhenHeaderNameContainsNonASCIIOrNullCharacters(string header, string expectedExceptionMessage)
68+
[MemberData(nameof(BadHeaderDataNames))]
69+
public Task BadRequestWhenHeaderNameContainsNonASCIIOrNullCharacters(string dataName)
5770
{
71+
// Using dictionary of input data to avoid invalid strings in the xml test results
72+
var header = BadHeaderData[dataName].header;
73+
var errorMessage = BadHeaderData[dataName].errorMessage;
74+
5875
return TestBadRequest(
5976
$"GET / HTTP/1.1\r\n{header}\r\n\r\n",
6077
"400 Bad Request",
61-
expectedExceptionMessage);
78+
errorMessage);
6279
}
6380

6481
[Theory]

0 commit comments

Comments
 (0)