// First, check for absence of separators and spaces.
if (IsInvalidMethodOrHeaderString(name))
{
- throw new ArgumentException(SR.net_WebHeaderInvalidHeaderChars, nameof(name));
+ throw new ArgumentException(string.Format(SR.net_WebHeaderInvalidHeaderChars, name), nameof(name));
}
// Second, check for non CTL ASCII-7 characters (32-126).
if (ContainsNonAsciiChars(name))
{
- throw new ArgumentException(SR.net_WebHeaderInvalidHeaderChars, nameof(name));
+ throw new ArgumentException(string.Format(SR.net_WebHeaderInvalidHeaderChars, name), nameof(name));
}
return name;
}
<value>Cannot add value because header '{0}' does not support multiple values.</value>
</data>
<data name="net_http_headers_invalid_header_name" xml:space="preserve">
- <value>The header name format is invalid.</value>
+ <value>The header name '{0}' has an invalid format.</value>
</data>
<data name="net_http_headers_invalid_value" xml:space="preserve">
<value>The format of value '{0}' is invalid.</value>
if (!HeaderDescriptor.TryGet(name, out HeaderDescriptor descriptor))
{
- throw new FormatException(SR.net_http_headers_invalid_header_name);
+ throw new FormatException(string.Format(SR.net_http_headers_invalid_header_name, name));
}
if ((descriptor.HeaderType & _allowedHeaderTypes) != 0)
Assert.Equal(new[] { "newValue" }, valuesFor3);
}
+ [Fact]
+ public void TryAddInvalidHeader_ShouldThrowFormatException()
+ {
+ MockHeaders headers = new MockHeaders();
+ AssertExtensions.ThrowsContains<FormatException>(() => headers.Remove("\u0080"), "\u0080");
+ }
+
public static IEnumerable<object[]> NumberOfHeadersUpToArrayThreshold_AddNonValidated_EnumerateNonValidated()
{
for (int i = 0; i <= HttpHeaders.ArrayThreshold; i++)
<value>Specified value has invalid CRLF characters.</value>
</data>
<data name="net_WebHeaderInvalidHeaderChars" xml:space="preserve">
- <value>Specified value has invalid HTTP Header characters.</value>
+ <value>Specified value '{0}' has invalid HTTP Header characters.</value>
</data>
<data name="net_WebHeaderMissingColon" xml:space="preserve">
<value>Specified value does not have a ':' separator.</value>
public void Setter_InvalidName_Throws(string name)
{
WebHeaderCollection w = new WebHeaderCollection();
- AssertExtensions.Throws<ArgumentException>("name", () => w[name] = "test");
+ ArgumentException exception = AssertExtensions.Throws<ArgumentException>("name", () => w[name] = "test");
+ Assert.Contains(name, exception.Message);
}
public static object[][] InvalidValues = {
public void Remove_InvalidHeader_ThrowsArgumentException(string name)
{
var headers = new WebHeaderCollection();
- AssertExtensions.Throws<ArgumentException>("name", () => headers.Remove(name));
+ ArgumentException exception = AssertExtensions.Throws<ArgumentException>("name", () => headers.Remove(name));
+ Assert.Contains(name, exception.Message);
}
[Fact]
public void Add_InvalidName_ThrowsArgumentException(string name)
{
var headers = new WebHeaderCollection();
- AssertExtensions.Throws<ArgumentException>("name", () => headers.Add(name, "value"));
+ ArgumentException exception = AssertExtensions.Throws<ArgumentException>("name", () => headers.Add(name, "value"));
+
+ if (!string.IsNullOrEmpty(name))
+ {
+ Assert.Contains(name, exception.Message);
+ }
}
[Theory]