public async Task PostAsync_Redirect_LargePayload_Helper(int statusCode, bool expectRedirectToPost)
{
- using (var fs = new FileStream(Path.Combine(Path.GetTempPath(), Path.GetTempFileName()), FileMode.Create, FileAccess.ReadWrite, FileShare.None, 0x1000, FileOptions.DeleteOnClose))
+ using (var fs = new FileStream(
+ Path.Combine(Path.GetTempPath(), Path.GetTempFileName()),
+ FileMode.Create,
+ FileAccess.ReadWrite,
+ FileShare.None,
+ 0x1000,
+ FileOptions.DeleteOnClose))
{
string contentString = string.Join("", Enumerable.Repeat("Content", 100000));
byte[] contentBytes = Encoding.UTF32.GetBytes(contentString);
fs.Flush(flushToDisk: true);
fs.Position = 0;
- Uri redirectUri = Configuration.Http.RedirectUriForDestinationUri(false, statusCode, Configuration.Http.SecureRemoteEchoServer, 1);
+ Uri redirectUri = Configuration.Http.RedirectUriForDestinationUri(
+ secure: false,
+ statusCode: statusCode,
+ destinationUri: Configuration.Http.SecureRemoteVerifyUploadServer,
+ hops: 1);
+ var content = new StreamContent(fs);
+
+ // Compute MD5 of request body data. This will be verified by the server when it receives the request.
+ content.Headers.ContentMD5 = TestHelper.ComputeMD5Hash(contentBytes);
using (HttpClient client = CreateHttpClient())
- using (HttpResponseMessage response = await client.PostAsync(redirectUri, new StreamContent(fs)))
+ using (HttpResponseMessage response = await client.PostAsync(redirectUri, content))
{
try
{
if (expectRedirectToPost)
{
- Assert.InRange(response.Content.Headers.ContentLength.GetValueOrDefault(), contentBytes.Length, int.MaxValue);
+ IEnumerable<string> headerValue = response.Headers.GetValues("X-HttpRequest-Method");
+ Assert.Equal("POST", headerValue.First());
}
}
}