Skip to content

Commit f0e69a0

Browse files
committed
Root cause WebClient test failures on NETFX
Finished investigation failures on .NET Framework for WebClient. Added some new tests to clarify the open issues. Added new bugs dotnet/corefx#18674 and dotnet/corefx#18680. Fixes dotnet/corefx#17882. Commit migrated from dotnet/corefx@0611422
1 parent 7576332 commit f0e69a0

1 file changed

Lines changed: 45 additions & 24 deletions

File tree

src/libraries/System.Net.WebClient/tests/WebClientTest.cs

Lines changed: 45 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ public static void Properties_InvalidArguments_ThrowExceptions()
4242
AssertExtensions.Throws<ArgumentNullException>("Encoding", () => { wc.Encoding = null; });
4343
}
4444

45-
[SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17882")] // Difference in behavior.
4645
[Fact]
4746
public static void DownloadData_InvalidArguments_ThrowExceptions()
4847
{
@@ -54,11 +53,10 @@ public static void DownloadData_InvalidArguments_ThrowExceptions()
5453
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.DownloadDataAsync((Uri)null); });
5554
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.DownloadDataAsync((Uri)null, null); });
5655

57-
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.DownloadDataTaskAsync((string)null); });
56+
AssertExtensions.Throws<ArgumentNullException>(PlatformDetection.IsFullFramework ? "path" : "address", () => { wc.DownloadDataTaskAsync((string)null); });
5857
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.DownloadDataTaskAsync((Uri)null); });
5958
}
6059

61-
[SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17882")] // Difference in behavior.
6260
[Fact]
6361
public static void DownloadFile_InvalidArguments_ThrowExceptions()
6462
{
@@ -70,7 +68,7 @@ public static void DownloadFile_InvalidArguments_ThrowExceptions()
7068
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.DownloadFileAsync((Uri)null, ""); });
7169
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.DownloadFileAsync((Uri)null, "", null); });
7270

73-
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.DownloadFileTaskAsync((string)null, ""); });
71+
AssertExtensions.Throws<ArgumentNullException>(PlatformDetection.IsFullFramework ? "path" : "address", () => { wc.DownloadFileTaskAsync((string)null, ""); });
7472
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.DownloadFileTaskAsync((Uri)null, ""); });
7573

7674
AssertExtensions.Throws<ArgumentNullException>("fileName", () => { wc.DownloadFile("http://localhost", null); });
@@ -83,7 +81,6 @@ public static void DownloadFile_InvalidArguments_ThrowExceptions()
8381
AssertExtensions.Throws<ArgumentNullException>("fileName", () => { wc.DownloadFileTaskAsync(new Uri("http://localhost"), null); });
8482
}
8583

86-
[SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17882")] // Difference in behavior.
8784
[Fact]
8885
public static void DownloadString_InvalidArguments_ThrowExceptions()
8986
{
@@ -95,11 +92,10 @@ public static void DownloadString_InvalidArguments_ThrowExceptions()
9592
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.DownloadStringAsync((Uri)null); });
9693
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.DownloadStringAsync((Uri)null, null); });
9794

98-
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.DownloadStringTaskAsync((string)null); });
95+
AssertExtensions.Throws<ArgumentNullException>(PlatformDetection.IsFullFramework ? "path" : "address", () => { wc.DownloadStringTaskAsync((string)null); });
9996
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.DownloadStringTaskAsync((Uri)null); });
10097
}
10198

102-
[SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17882")] // Difference in behavior.
10399
[Fact]
104100
public static void UploadData_InvalidArguments_ThrowExceptions()
105101
{
@@ -114,8 +110,8 @@ public static void UploadData_InvalidArguments_ThrowExceptions()
114110
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.UploadDataAsync((Uri)null, null, null); });
115111
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.UploadDataAsync((Uri)null, null, null, null); });
116112

117-
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.UploadDataTaskAsync((string)null, null); });
118-
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.UploadDataTaskAsync((string)null, null, null); });
113+
AssertExtensions.Throws<ArgumentNullException>(PlatformDetection.IsFullFramework ? "path" : "address", () => { wc.UploadDataTaskAsync((string)null, null); });
114+
AssertExtensions.Throws<ArgumentNullException>(PlatformDetection.IsFullFramework ? "path" : "address", () => { wc.UploadDataTaskAsync((string)null, null, null); });
119115
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.UploadDataTaskAsync((Uri)null, null); });
120116
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.UploadDataTaskAsync((Uri)null, null, null); });
121117

@@ -134,23 +130,23 @@ public static void UploadData_InvalidArguments_ThrowExceptions()
134130
AssertExtensions.Throws<ArgumentNullException>("data", () => { wc.UploadDataTaskAsync(new Uri("http://localhost"), null, null); });
135131
}
136132

137-
[SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17882")] // Difference in behavior.
138133
[Fact]
139134
public static void UploadFile_InvalidArguments_ThrowExceptions()
140135
{
141136
var wc = new WebClient();
142137

143138
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.UploadFile((string)null, null); });
144-
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.UploadFile((string)null, null, null); });
139+
AssertExtensions.Throws<ArgumentNullException>(PlatformDetection.IsFullFramework ? "path" : "address", () => { wc.UploadFile((string)null, null, null); });
140+
145141
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.UploadFile((Uri)null, null); });
146142
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.UploadFile((Uri)null, null, null); });
147143

148144
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.UploadFileAsync((Uri)null, null); });
149145
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.UploadFileAsync((Uri)null, null, null); });
150146
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.UploadFileAsync((Uri)null, null, null, null); });
151147

152-
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.UploadFileTaskAsync((string)null, null); });
153-
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.UploadFileTaskAsync((string)null, null, null); });
148+
AssertExtensions.Throws<ArgumentNullException>(PlatformDetection.IsFullFramework ? "path" : "address", () => { wc.UploadFileTaskAsync((string)null, null); });
149+
AssertExtensions.Throws<ArgumentNullException>(PlatformDetection.IsFullFramework ? "path" : "address", () => { wc.UploadFileTaskAsync((string)null, null, null); });
154150
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.UploadFileTaskAsync((Uri)null, null); });
155151
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.UploadFileTaskAsync((Uri)null, null, null); });
156152

@@ -169,7 +165,6 @@ public static void UploadFile_InvalidArguments_ThrowExceptions()
169165
AssertExtensions.Throws<ArgumentNullException>("fileName", () => { wc.UploadFileTaskAsync(new Uri("http://localhost"), null, null); });
170166
}
171167

172-
[SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17882")] // Difference in behavior.
173168
[Fact]
174169
public static void UploadString_InvalidArguments_ThrowExceptions()
175170
{
@@ -184,8 +179,8 @@ public static void UploadString_InvalidArguments_ThrowExceptions()
184179
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.UploadStringAsync((Uri)null, null, null); });
185180
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.UploadStringAsync((Uri)null, null, null, null); });
186181

187-
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.UploadStringTaskAsync((string)null, null); });
188-
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.UploadStringTaskAsync((string)null, null, null); });
182+
AssertExtensions.Throws<ArgumentNullException>(PlatformDetection.IsFullFramework ? "path" : "address", () => { wc.UploadStringTaskAsync((string)null, null); });
183+
AssertExtensions.Throws<ArgumentNullException>(PlatformDetection.IsFullFramework ? "path" : "address", () => { wc.UploadStringTaskAsync((string)null, null, null); });
189184
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.UploadStringTaskAsync((Uri)null, null); });
190185
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.UploadStringTaskAsync((Uri)null, null, null); });
191186

@@ -204,7 +199,6 @@ public static void UploadString_InvalidArguments_ThrowExceptions()
204199
AssertExtensions.Throws<ArgumentNullException>("data", () => { wc.UploadStringTaskAsync(new Uri("http://localhost"), null, null); });
205200
}
206201

207-
[SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17882")] // Difference in behavior.
208202
[Fact]
209203
public static void UploadValues_InvalidArguments_ThrowExceptions()
210204
{
@@ -219,8 +213,8 @@ public static void UploadValues_InvalidArguments_ThrowExceptions()
219213
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.UploadValuesAsync((Uri)null, null, null); });
220214
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.UploadValuesAsync((Uri)null, null, null, null); });
221215

222-
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.UploadValuesTaskAsync((string)null, null); });
223-
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.UploadValuesTaskAsync((string)null, null, null); });
216+
AssertExtensions.Throws<ArgumentNullException>(PlatformDetection.IsFullFramework ? "path" : "address", () => { wc.UploadValuesTaskAsync((string)null, null); });
217+
AssertExtensions.Throws<ArgumentNullException>(PlatformDetection.IsFullFramework ? "path" : "address", () => { wc.UploadValuesTaskAsync((string)null, null, null); });
224218
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.UploadValuesTaskAsync((Uri)null, null); });
225219
AssertExtensions.Throws<ArgumentNullException>("address", () => { wc.UploadValuesTaskAsync((Uri)null, null, null); });
226220

@@ -393,19 +387,46 @@ await LoopbackServer.ReadRequestAndSendResponseAsync(server,
393387
Assert.Equal("ArbitraryValue", wc.ResponseHeaders["ArbitraryHeader"]);
394388
}
395389

396-
[SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17882")] // hangs on NETFX
390+
[ActiveIssue(18680)]
391+
[OuterLoop("Networking test talking to remote server: issue #11345")]
392+
[Theory]
393+
[InlineData("Connection", "close")]
394+
[InlineData("Expect", "100-continue")]
395+
public static async Task RequestHeaders_AddDisallowedHeaderAndSendRequest_ThrowsWebException(string headerName, string headerValue)
396+
{
397+
var wc = new WebClient();
398+
wc.Headers[headerName] = headerValue;
399+
await Assert.ThrowsAsync<WebException>(() => wc.DownloadStringTaskAsync(System.Net.Test.Common.Configuration.Http.RemoteEchoServer));
400+
}
401+
402+
[ActiveIssue(18680)]
403+
[OuterLoop("Networking test talking to remote server: issue #11345")]
404+
[Theory]
405+
[InlineData("http://localhost", true)]
406+
[InlineData("localhost", false)]
407+
public static async Task RequestHeaders_AddHostHeaderAndSendRequest_ExpectedResult(string hostHeaderValue, bool throwsWebException)
408+
{
409+
var wc = new WebClient();
410+
wc.Headers["Host"] = hostHeaderValue;
411+
if (throwsWebException)
412+
{
413+
await Assert.ThrowsAsync<WebException>(() => wc.DownloadStringTaskAsync(System.Net.Test.Common.Configuration.Http.RemoteEchoServer));
414+
}
415+
else
416+
{
417+
await wc.DownloadStringTaskAsync(System.Net.Test.Common.Configuration.Http.RemoteEchoServer);
418+
}
419+
}
420+
397421
[Fact]
398422
public static async Task RequestHeaders_SpecialHeaders_RequestSucceeds()
399423
{
400424
var wc = new WebClient();
401425

402426
wc.Headers["Accept"] = "text/html";
403-
wc.Headers["Connection"] = "close";
404427
wc.Headers["ContentType"] = "text/html; charset=utf-8";
405-
wc.Headers["Expect"] = "100-continue";
406428
wc.Headers["Referer"] = "http://localhost";
407429
wc.Headers["User-Agent"] = ".NET";
408-
wc.Headers["Host"] = "http://localhost";
409430

410431
await LoopbackServer.CreateServerAsync(async (server, url) =>
411432
{
@@ -667,7 +688,7 @@ public async Task UploadString_Success(Uri echoServer)
667688
Assert.Contains(ExpectedText, result);
668689
}
669690

670-
[SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17882")] // Difference in behavior.
691+
[SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #18674")] // Difference in behavior.
671692
[OuterLoop("Networking test talking to remote server: issue #11345")]
672693
[Theory]
673694
[MemberData(nameof(EchoServers))]

0 commit comments

Comments
 (0)