Updating unit tests for Frame IFeatureCollection update
This commit is contained in:
parent
71fc2bf2e5
commit
dc0eb679ae
|
|
@ -6,6 +6,7 @@ using Microsoft.AspNet.Builder;
|
|||
using Microsoft.AspNet.Http;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.Dnx.Runtime;
|
||||
using Microsoft.AspNet.Server.Kestrel;
|
||||
|
||||
#if DNX451
|
||||
using System.IO;
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@ using Microsoft.AspNet.Server.Kestrel.Infrastructure;
|
|||
using Microsoft.AspNet.Server.Kestrel.Networking;
|
||||
using Microsoft.Dnx.Runtime;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.Framework.Logging;
|
||||
|
||||
namespace Microsoft.AspNet.Server.Kestrel
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using Microsoft.AspNet.Http.Features;
|
||||
using System;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
|
@ -15,9 +16,10 @@ namespace Microsoft.AspNet.Server.KestrelTests
|
|||
{
|
||||
using (var server = new TestServer(async frame =>
|
||||
{
|
||||
frame.ResponseHeaders.Clear();
|
||||
await frame.ResponseBody.WriteAsync(Encoding.ASCII.GetBytes("Hello "), 0, 6);
|
||||
await frame.ResponseBody.WriteAsync(Encoding.ASCII.GetBytes("World!"), 0, 6);
|
||||
var response = frame.Get<IHttpResponseFeature>();
|
||||
response.Headers.Clear();
|
||||
await response.Body.WriteAsync(Encoding.ASCII.GetBytes("Hello "), 0, 6);
|
||||
await response.Body.WriteAsync(Encoding.ASCII.GetBytes("World!"), 0, 6);
|
||||
}))
|
||||
{
|
||||
using (var connection = new TestConnection())
|
||||
|
|
@ -46,10 +48,11 @@ namespace Microsoft.AspNet.Server.KestrelTests
|
|||
{
|
||||
using (var server = new TestServer(async frame =>
|
||||
{
|
||||
frame.ResponseHeaders.Clear();
|
||||
await frame.ResponseBody.WriteAsync(Encoding.ASCII.GetBytes("Hello "), 0, 6);
|
||||
await frame.ResponseBody.WriteAsync(new byte[0], 0, 0);
|
||||
await frame.ResponseBody.WriteAsync(Encoding.ASCII.GetBytes("World!"), 0, 6);
|
||||
var response = frame.Get<IHttpResponseFeature>();
|
||||
response.Headers.Clear();
|
||||
await response.Body.WriteAsync(Encoding.ASCII.GetBytes("Hello "), 0, 6);
|
||||
await response.Body.WriteAsync(new byte[0], 0, 0);
|
||||
await response.Body.WriteAsync(Encoding.ASCII.GetBytes("World!"), 0, 6);
|
||||
}))
|
||||
{
|
||||
using (var connection = new TestConnection())
|
||||
|
|
@ -78,8 +81,9 @@ namespace Microsoft.AspNet.Server.KestrelTests
|
|||
{
|
||||
using (var server = new TestServer(async frame =>
|
||||
{
|
||||
frame.ResponseHeaders.Clear();
|
||||
await frame.ResponseBody.WriteAsync(new byte[0], 0, 0);
|
||||
var response = frame.Get<IHttpResponseFeature>();
|
||||
response.Headers.Clear();
|
||||
await response.Body.WriteAsync(new byte[0], 0, 0);
|
||||
}))
|
||||
{
|
||||
using (var connection = new TestConnection())
|
||||
|
|
@ -104,8 +108,9 @@ namespace Microsoft.AspNet.Server.KestrelTests
|
|||
{
|
||||
using (var server = new TestServer(async frame =>
|
||||
{
|
||||
frame.ResponseHeaders.Clear();
|
||||
await frame.ResponseBody.WriteAsync(Encoding.ASCII.GetBytes("Hello World!"), 0, 12);
|
||||
var response = frame.Get<IHttpResponseFeature>();
|
||||
response.Headers.Clear();
|
||||
await response.Body.WriteAsync(Encoding.ASCII.GetBytes("Hello World!"), 0, 12);
|
||||
throw new Exception();
|
||||
}))
|
||||
{
|
||||
|
|
@ -133,8 +138,9 @@ namespace Microsoft.AspNet.Server.KestrelTests
|
|||
{
|
||||
using (var server = new TestServer(async frame =>
|
||||
{
|
||||
frame.ResponseHeaders.Clear();
|
||||
await frame.ResponseBody.WriteAsync(new byte[0], 0, 0);
|
||||
var response = frame.Get<IHttpResponseFeature>();
|
||||
response.Headers.Clear();
|
||||
await response.Body.WriteAsync(new byte[0], 0, 0);
|
||||
throw new Exception();
|
||||
}))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -6,23 +6,26 @@ using System.Threading.Tasks;
|
|||
using Microsoft.AspNet.Server.Kestrel.Filter;
|
||||
using Microsoft.AspNet.Server.Kestrel.Http;
|
||||
using Xunit;
|
||||
using Microsoft.AspNet.Http.Features;
|
||||
|
||||
namespace Microsoft.AspNet.Server.KestrelTests
|
||||
{
|
||||
public class ConnectionFilterTests
|
||||
{
|
||||
private async Task App(Frame frame)
|
||||
private async Task App(IFeatureCollection frame)
|
||||
{
|
||||
frame.ResponseHeaders.Clear();
|
||||
var request = frame.Get<IHttpRequestFeature>();
|
||||
var response = frame.Get<IHttpResponseFeature>();
|
||||
response.Headers.Clear();
|
||||
while (true)
|
||||
{
|
||||
var buffer = new byte[8192];
|
||||
var count = await frame.RequestBody.ReadAsync(buffer, 0, buffer.Length);
|
||||
var count = await request.Body.ReadAsync(buffer, 0, buffer.Length);
|
||||
if (count == 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
await frame.ResponseBody.WriteAsync(buffer, 0, count);
|
||||
await response.Body.WriteAsync(buffer, 0, count);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ using Microsoft.AspNet.Server.Kestrel.Http;
|
|||
using Microsoft.Dnx.Runtime;
|
||||
using Microsoft.Dnx.Runtime.Infrastructure;
|
||||
using Xunit;
|
||||
using Microsoft.AspNet.Http.Features;
|
||||
|
||||
namespace Microsoft.AspNet.Server.KestrelTests
|
||||
{
|
||||
|
|
@ -40,18 +41,20 @@ namespace Microsoft.AspNet.Server.KestrelTests
|
|||
}
|
||||
}
|
||||
|
||||
private async Task App(Frame frame)
|
||||
private async Task App(IFeatureCollection frame)
|
||||
{
|
||||
frame.ResponseHeaders.Clear();
|
||||
var request = frame.Get<IHttpRequestFeature>();
|
||||
var response = frame.Get<IHttpResponseFeature>();
|
||||
response.Headers.Clear();
|
||||
while (true)
|
||||
{
|
||||
var buffer = new byte[8192];
|
||||
var count = await frame.RequestBody.ReadAsync(buffer, 0, buffer.Length);
|
||||
var count = await request.Body.ReadAsync(buffer, 0, buffer.Length);
|
||||
if (count == 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
await frame.ResponseBody.WriteAsync(buffer, 0, count);
|
||||
await response.Body.WriteAsync(buffer, 0, count);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -78,20 +81,22 @@ namespace Microsoft.AspNet.Server.KestrelTests
|
|||
}
|
||||
}
|
||||
|
||||
private async Task AppChunked(Frame frame)
|
||||
private async Task AppChunked(IFeatureCollection frame)
|
||||
{
|
||||
var request = frame.Get<IHttpRequestFeature>();
|
||||
var response = frame.Get<IHttpResponseFeature>();
|
||||
var data = new MemoryStream();
|
||||
await frame.RequestBody.CopyToAsync(data);
|
||||
await request.Body.CopyToAsync(data);
|
||||
var bytes = data.ToArray();
|
||||
|
||||
frame.ResponseHeaders.Clear();
|
||||
frame.ResponseHeaders["Content-Length"] = new[] { bytes.Length.ToString() };
|
||||
await frame.ResponseBody.WriteAsync(bytes, 0, bytes.Length);
|
||||
response.Headers.Clear();
|
||||
response.Headers["Content-Length"] = bytes.Length.ToString();
|
||||
await response.Body.WriteAsync(bytes, 0, bytes.Length);
|
||||
}
|
||||
|
||||
private Task EmptyApp(Frame frame)
|
||||
private Task EmptyApp(IFeatureCollection frame)
|
||||
{
|
||||
frame.ResponseHeaders.Clear();
|
||||
frame.Get<IHttpResponseFeature>().Headers.Clear();
|
||||
return Task.FromResult<object>(null);
|
||||
}
|
||||
|
||||
|
|
@ -494,12 +499,14 @@ namespace Microsoft.AspNet.Server.KestrelTests
|
|||
{
|
||||
using (var server = new TestServer(async frame =>
|
||||
{
|
||||
frame.ResponseHeaders.Clear();
|
||||
var request = frame.Get<IHttpRequestFeature>();
|
||||
var response = frame.Get<IHttpResponseFeature>();
|
||||
response.Headers.Clear();
|
||||
|
||||
using (var reader = new StreamReader(frame.RequestBody, Encoding.ASCII))
|
||||
using (var reader = new StreamReader(request.Body, Encoding.ASCII))
|
||||
{
|
||||
var statusString = await reader.ReadLineAsync();
|
||||
frame.StatusCode = int.Parse(statusString);
|
||||
response.StatusCode = int.Parse(statusString);
|
||||
}
|
||||
}, testContext))
|
||||
{
|
||||
|
|
@ -547,15 +554,16 @@ namespace Microsoft.AspNet.Server.KestrelTests
|
|||
|
||||
using (var server = new TestServer(frame =>
|
||||
{
|
||||
frame.OnStarting(_ =>
|
||||
var response = frame.Get<IHttpResponseFeature>();
|
||||
response.OnStarting(_ =>
|
||||
{
|
||||
onStartingCalled = true;
|
||||
return Task.FromResult<object>(null);
|
||||
}, null);
|
||||
|
||||
// Anything added to the ResponseHeaders dictionary is ignored
|
||||
frame.ResponseHeaders.Clear();
|
||||
frame.ResponseHeaders["Content-Length"] = new[] { "11" };
|
||||
response.Headers.Clear();
|
||||
response.Headers["Content-Length"] = "11";
|
||||
throw new Exception();
|
||||
}, testContext))
|
||||
{
|
||||
|
|
@ -599,15 +607,16 @@ namespace Microsoft.AspNet.Server.KestrelTests
|
|||
|
||||
using (var server = new TestServer(async frame =>
|
||||
{
|
||||
frame.OnStarting(_ =>
|
||||
var response = frame.Get<IHttpResponseFeature>();
|
||||
response.OnStarting(_ =>
|
||||
{
|
||||
onStartingCalled = true;
|
||||
return Task.FromResult<object>(null);
|
||||
}, null);
|
||||
|
||||
frame.ResponseHeaders.Clear();
|
||||
frame.ResponseHeaders["Content-Length"] = new[] { "11" };
|
||||
await frame.ResponseBody.WriteAsync(Encoding.ASCII.GetBytes("Hello World"), 0, 11);
|
||||
response.Headers.Clear();
|
||||
response.Headers["Content-Length"] = new[] { "11" };
|
||||
await response.Body.WriteAsync(Encoding.ASCII.GetBytes("Hello World"), 0, 11);
|
||||
throw new Exception();
|
||||
}, testContext))
|
||||
{
|
||||
|
|
@ -636,15 +645,16 @@ namespace Microsoft.AspNet.Server.KestrelTests
|
|||
|
||||
using (var server = new TestServer(async frame =>
|
||||
{
|
||||
frame.OnStarting(_ =>
|
||||
var response = frame.Get<IHttpResponseFeature>();
|
||||
response.OnStarting(_ =>
|
||||
{
|
||||
onStartingCalled = true;
|
||||
return Task.FromResult<object>(null);
|
||||
}, null);
|
||||
|
||||
frame.ResponseHeaders.Clear();
|
||||
frame.ResponseHeaders["Content-Length"] = new[] { "11" };
|
||||
await frame.ResponseBody.WriteAsync(Encoding.ASCII.GetBytes("Hello"), 0, 5);
|
||||
response.Headers.Clear();
|
||||
response.Headers["Content-Length"] = new[] { "11" };
|
||||
await response.Body.WriteAsync(Encoding.ASCII.GetBytes("Hello"), 0, 5);
|
||||
throw new Exception();
|
||||
}, testContext))
|
||||
{
|
||||
|
|
@ -740,13 +750,14 @@ namespace Microsoft.AspNet.Server.KestrelTests
|
|||
{
|
||||
using (var server = new TestServer(frame =>
|
||||
{
|
||||
frame.OnStarting(_ =>
|
||||
var response = frame.Get<IHttpResponseFeature>();
|
||||
response.OnStarting(_ =>
|
||||
{
|
||||
throw new Exception();
|
||||
}, null);
|
||||
|
||||
frame.ResponseHeaders.Clear();
|
||||
frame.ResponseHeaders["Content-Length"] = new[] { "11" };
|
||||
response.Headers.Clear();
|
||||
response.Headers["Content-Length"] = new[] { "11" };
|
||||
|
||||
// If we write to the response stream, we will not get a 500.
|
||||
|
||||
|
|
@ -791,21 +802,22 @@ namespace Microsoft.AspNet.Server.KestrelTests
|
|||
{
|
||||
var onStartingException = new Exception();
|
||||
|
||||
frame.OnStarting(_ =>
|
||||
var response = frame.Get<IHttpResponseFeature>();
|
||||
response.OnStarting(_ =>
|
||||
{
|
||||
throw onStartingException;
|
||||
}, null);
|
||||
|
||||
frame.ResponseHeaders.Clear();
|
||||
frame.ResponseHeaders["Content-Length"] = new[] { "11" };
|
||||
response.Headers.Clear();
|
||||
response.Headers["Content-Length"] = new[] { "11" };
|
||||
|
||||
var writeException = await Assert.ThrowsAsync<Exception>(async () =>
|
||||
await frame.ResponseBody.WriteAsync(Encoding.ASCII.GetBytes("Hello World"), 0, 11));
|
||||
await response.Body.WriteAsync(Encoding.ASCII.GetBytes("Hello World"), 0, 11));
|
||||
|
||||
Assert.Same(onStartingException, writeException);
|
||||
|
||||
// The second write should succeed since the OnStarting callback will not be called again
|
||||
await frame.ResponseBody.WriteAsync(Encoding.ASCII.GetBytes("Exception!!"), 0, 11);
|
||||
await response.Body.WriteAsync(Encoding.ASCII.GetBytes("Exception!!"), 0, 11);
|
||||
}, testContext))
|
||||
{
|
||||
using (var connection = new TestConnection())
|
||||
|
|
|
|||
|
|
@ -13,23 +13,26 @@ using Microsoft.AspNet.Server.Kestrel.Http;
|
|||
using Microsoft.AspNet.Server.Kestrel.Https;
|
||||
using Microsoft.AspNet.Testing.xunit;
|
||||
using Xunit;
|
||||
using Microsoft.AspNet.Http.Features;
|
||||
|
||||
namespace Microsoft.AspNet.Server.KestrelTests
|
||||
{
|
||||
public class HttpsConnectionFilterTests
|
||||
{
|
||||
private async Task App(Frame frame)
|
||||
private async Task App(IFeatureCollection frame)
|
||||
{
|
||||
frame.ResponseHeaders.Clear();
|
||||
var request = frame.Get<IHttpRequestFeature>();
|
||||
var response = frame.Get<IHttpResponseFeature>();
|
||||
response.Headers.Clear();
|
||||
while (true)
|
||||
{
|
||||
var buffer = new byte[8192];
|
||||
var count = await frame.RequestBody.ReadAsync(buffer, 0, buffer.Length);
|
||||
var count = await request.Body.ReadAsync(buffer, 0, buffer.Length);
|
||||
if (count == 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
await frame.ResponseBody.WriteAsync(buffer, 0, count);
|
||||
await response.Body.WriteAsync(buffer, 0, count);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ using Microsoft.AspNet.Server.Kestrel;
|
|||
using Microsoft.AspNet.Server.Kestrel.Http;
|
||||
using Microsoft.Dnx.Runtime;
|
||||
using Microsoft.Dnx.Runtime.Infrastructure;
|
||||
using Microsoft.AspNet.Http.Features;
|
||||
|
||||
namespace Microsoft.AspNet.Server.KestrelTests
|
||||
{
|
||||
|
|
@ -18,16 +19,16 @@ namespace Microsoft.AspNet.Server.KestrelTests
|
|||
private KestrelEngine _engine;
|
||||
private IDisposable _server;
|
||||
|
||||
public TestServer(Func<Frame, Task> app)
|
||||
public TestServer(Func<IFeatureCollection, Task> app)
|
||||
: this(app, new TestServiceContext())
|
||||
{
|
||||
}
|
||||
|
||||
public TestServer(Func<Frame, Task> app, ServiceContext context)
|
||||
public TestServer(Func<IFeatureCollection, Task> app, ServiceContext context)
|
||||
: this(app, context, "http://localhost:54321/")
|
||||
{
|
||||
}
|
||||
public TestServer(Func<Frame, Task> app, ServiceContext context, string serverAddress)
|
||||
public TestServer(Func<IFeatureCollection, Task> app, ServiceContext context, string serverAddress)
|
||||
{
|
||||
Create(app, context, serverAddress);
|
||||
}
|
||||
|
|
@ -54,7 +55,7 @@ namespace Microsoft.AspNet.Server.KestrelTests
|
|||
}
|
||||
}
|
||||
|
||||
public void Create(Func<Frame, Task> app, ServiceContext context, string serverAddress)
|
||||
public void Create(Func<IFeatureCollection, Task> app, ServiceContext context, string serverAddress)
|
||||
{
|
||||
_engine = new KestrelEngine(
|
||||
LibraryManager,
|
||||
|
|
|
|||
Loading…
Reference in New Issue