Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Commit c35b132

Browse files
authored
Make ArgumentException to blame correct parameter for invalid input (#26000)
* make ArgumentException to blame correct parameter for invalid input * add SkipOnNetFramework to avoid test failures
1 parent 0761f78 commit c35b132

File tree

3 files changed

+66
-2
lines changed

3 files changed

+66
-2
lines changed

src/System.Net.Mail/src/System/Net/Mime/HeaderCollection.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ public override void Set(string name, string value)
137137

138138
if (value == string.Empty)
139139
{
140-
throw new ArgumentException(SR.Format(SR.net_emptystringcall, nameof(value)), nameof(name));
140+
throw new ArgumentException(SR.Format(SR.net_emptystringcall, nameof(value)), nameof(value));
141141
}
142142

143143
if (!MimeBasePart.IsAscii(name, false))
@@ -183,7 +183,7 @@ public override void Add(string name, string value)
183183
}
184184
if (value == string.Empty)
185185
{
186-
throw new ArgumentException(SR.Format(SR.net_emptystringcall, nameof(value)), nameof(name));
186+
throw new ArgumentException(SR.Format(SR.net_emptystringcall, nameof(value)), nameof(value));
187187
}
188188

189189
MailBnfHelper.ValidateHeaderName(name);
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the MIT license.
3+
// See the LICENSE file in the project root for more information.
4+
5+
using System;
6+
using System.Net.Mail;
7+
using Xunit;
8+
9+
namespace System.Net.Mime.Tests
10+
{
11+
public class HeaderCollectionTest
12+
{
13+
private MailMessage mail = new MailMessage();
14+
15+
[Fact]
16+
public void Set_ValidNameAndValue_Success()
17+
{
18+
string validName = "foo";
19+
string validValue = "bar";
20+
mail.Headers.Set(validName, validValue);
21+
Assert.Equal(validValue, mail.Headers.Get(validName));
22+
mail.Headers.Remove(validName);
23+
}
24+
25+
[Fact]
26+
[SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Requires fix shipping in .NET 4.7.2")]
27+
public void Set_EmptyName_Throws()
28+
{
29+
AssertExtensions.Throws<ArgumentException>("name", () => mail.Headers.Set(string.Empty, "value"));
30+
}
31+
32+
[Fact]
33+
[SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Requires fix shipping in .NET 4.7.2")]
34+
public void Set_EmptyValue_Throws()
35+
{
36+
AssertExtensions.Throws<ArgumentException>("value", () => mail.Headers.Set("name", string.Empty));
37+
}
38+
39+
[Fact]
40+
public void Add_ValidNameAndValue_Success()
41+
{
42+
string validName = "foo";
43+
string validValue = "bar";
44+
mail.Headers.Add(validName, validValue);
45+
Assert.Equal(validValue, mail.Headers.Get(validName));
46+
mail.Headers.Remove(validName);
47+
}
48+
49+
[Fact]
50+
[SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Requires fix shipping in .NET 4.7.2")]
51+
public void Add_EmptyName_Throws()
52+
{
53+
AssertExtensions.Throws<ArgumentException>("name", () => mail.Headers.Add(string.Empty, "value"));
54+
}
55+
56+
[Fact]
57+
[SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Requires fix shipping in .NET 4.7.2")]
58+
public void Add_EmptyValue_Throws()
59+
{
60+
AssertExtensions.Throws<ArgumentException>("value", () => mail.Headers.Add("name", string.Empty));
61+
}
62+
}
63+
}

src/System.Net.Mail/tests/Functional/System.Net.Mail.Functional.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
<Compile Include="AttachmentTest.cs" />
1414
<Compile Include="ContentDispositionTest.cs" />
1515
<Compile Include="ContentTypeTest.cs" />
16+
<Compile Include="HeaderCollectionTest.cs" />
1617
<Compile Include="LinkedResourceCollectionTest.cs" />
1718
<Compile Include="LinkedResourceTest.cs" />
1819
<Compile Include="LoggingTest.cs" />

0 commit comments

Comments
 (0)