[Middleware] Move to GenericHost (#23626)
This commit is contained in:
parent
921d2c6124
commit
f1dd68f1bd
|
|
@ -10,6 +10,7 @@ using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.TestHost;
|
using Microsoft.AspNetCore.TestHost;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Microsoft.Extensions.Logging.Abstractions;
|
using Microsoft.Extensions.Logging.Abstractions;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
using Moq;
|
using Moq;
|
||||||
|
|
@ -27,7 +28,11 @@ namespace Microsoft.AspNetCore.Cors.Infrastructure
|
||||||
public async Task CorsRequest_MatchesPolicy_OnCaseInsensitiveAccessControlRequestMethod(string accessControlRequestMethod)
|
public async Task CorsRequest_MatchesPolicy_OnCaseInsensitiveAccessControlRequestMethod(string accessControlRequestMethod)
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var hostBuilder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseCors(builder =>
|
app.UseCors(builder =>
|
||||||
|
|
@ -39,8 +44,11 @@ namespace Microsoft.AspNetCore.Cors.Infrastructure
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.ConfigureServices(services => services.AddCors());
|
.ConfigureServices(services => services.AddCors());
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(hostBuilder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
// Act
|
// Act
|
||||||
// Actual request.
|
// Actual request.
|
||||||
|
|
@ -60,7 +68,11 @@ namespace Microsoft.AspNetCore.Cors.Infrastructure
|
||||||
public async Task CorsRequest_MatchPolicy_SetsResponseHeaders()
|
public async Task CorsRequest_MatchPolicy_SetsResponseHeaders()
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var hostBuilder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseCors(builder =>
|
app.UseCors(builder =>
|
||||||
|
|
@ -74,8 +86,11 @@ namespace Microsoft.AspNetCore.Cors.Infrastructure
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.ConfigureServices(services => services.AddCors());
|
.ConfigureServices(services => services.AddCors());
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(hostBuilder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
// Act
|
// Act
|
||||||
// Actual request.
|
// Actual request.
|
||||||
|
|
@ -102,7 +117,11 @@ namespace Microsoft.AspNetCore.Cors.Infrastructure
|
||||||
policy.Origins.Add(OriginUrl);
|
policy.Origins.Add(OriginUrl);
|
||||||
policy.Methods.Add("PUT");
|
policy.Methods.Add("PUT");
|
||||||
|
|
||||||
var hostBuilder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseCors("customPolicy");
|
app.UseCors("customPolicy");
|
||||||
|
|
@ -118,8 +137,11 @@ namespace Microsoft.AspNetCore.Cors.Infrastructure
|
||||||
options.AddPolicy("customPolicy", policy);
|
options.AddPolicy("customPolicy", policy);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(hostBuilder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
// Act
|
// Act
|
||||||
// Preflight request.
|
// Preflight request.
|
||||||
|
|
@ -144,7 +166,11 @@ namespace Microsoft.AspNetCore.Cors.Infrastructure
|
||||||
policy.Headers.Add("Header1");
|
policy.Headers.Add("Header1");
|
||||||
policy.ExposedHeaders.Add("AllowedHeader");
|
policy.ExposedHeaders.Add("AllowedHeader");
|
||||||
|
|
||||||
var hostBuilder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseCors("customPolicy");
|
app.UseCors("customPolicy");
|
||||||
|
|
@ -160,8 +186,11 @@ namespace Microsoft.AspNetCore.Cors.Infrastructure
|
||||||
options.AddPolicy("customPolicy", policy);
|
options.AddPolicy("customPolicy", policy);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(hostBuilder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
// Act
|
// Act
|
||||||
// Preflight request.
|
// Preflight request.
|
||||||
|
|
@ -202,7 +231,11 @@ namespace Microsoft.AspNetCore.Cors.Infrastructure
|
||||||
.AllowCredentials()
|
.AllowCredentials()
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
var hostBuilder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseCors("customPolicy");
|
app.UseCors("customPolicy");
|
||||||
|
|
@ -218,8 +251,11 @@ namespace Microsoft.AspNetCore.Cors.Infrastructure
|
||||||
options.AddPolicy("customPolicy", policy);
|
options.AddPolicy("customPolicy", policy);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(hostBuilder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
// Act
|
// Act
|
||||||
// Preflight request.
|
// Preflight request.
|
||||||
|
|
@ -260,7 +296,11 @@ namespace Microsoft.AspNetCore.Cors.Infrastructure
|
||||||
public async Task PreFlightRequest_DoesNotMatchPolicy_SetsResponseHeadersAndReturnsNoContent()
|
public async Task PreFlightRequest_DoesNotMatchPolicy_SetsResponseHeadersAndReturnsNoContent()
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var hostBuilder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseCors(builder =>
|
app.UseCors(builder =>
|
||||||
|
|
@ -274,8 +314,11 @@ namespace Microsoft.AspNetCore.Cors.Infrastructure
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.ConfigureServices(services => services.AddCors());
|
.ConfigureServices(services => services.AddCors());
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(hostBuilder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
// Act
|
// Act
|
||||||
// Preflight request.
|
// Preflight request.
|
||||||
|
|
@ -288,13 +331,19 @@ namespace Microsoft.AspNetCore.Cors.Infrastructure
|
||||||
Assert.Equal(HttpStatusCode.NoContent, response.StatusCode);
|
Assert.Equal(HttpStatusCode.NoContent, response.StatusCode);
|
||||||
Assert.Empty(response.Headers);
|
Assert.Empty(response.Headers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task CorsRequest_DoesNotMatchPolicy_DoesNotSetHeaders()
|
public async Task CorsRequest_DoesNotMatchPolicy_DoesNotSetHeaders()
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var hostBuilder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseCors(builder =>
|
app.UseCors(builder =>
|
||||||
|
|
@ -308,8 +357,11 @@ namespace Microsoft.AspNetCore.Cors.Infrastructure
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.ConfigureServices(services => services.AddCors());
|
.ConfigureServices(services => services.AddCors());
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(hostBuilder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
// Act
|
// Act
|
||||||
// Actual request.
|
// Actual request.
|
||||||
|
|
@ -387,7 +439,11 @@ namespace Microsoft.AspNetCore.Cors.Infrastructure
|
||||||
public async Task PreFlight_MatchesDefaultPolicy_SetsResponseHeaders()
|
public async Task PreFlight_MatchesDefaultPolicy_SetsResponseHeaders()
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var hostBuilder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseCors();
|
app.UseCors();
|
||||||
|
|
@ -417,8 +473,11 @@ namespace Microsoft.AspNetCore.Cors.Infrastructure
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(hostBuilder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
// Act
|
// Act
|
||||||
// Preflight request.
|
// Preflight request.
|
||||||
|
|
@ -453,7 +512,11 @@ namespace Microsoft.AspNetCore.Cors.Infrastructure
|
||||||
public async Task CorsRequest_SetsResponseHeaders()
|
public async Task CorsRequest_SetsResponseHeaders()
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var hostBuilder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseCors(builder =>
|
app.UseCors(builder =>
|
||||||
|
|
@ -468,8 +531,11 @@ namespace Microsoft.AspNetCore.Cors.Infrastructure
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.ConfigureServices(services => services.AddCors());
|
.ConfigureServices(services => services.AddCors());
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(hostBuilder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
// Act
|
// Act
|
||||||
// Actual request.
|
// Actual request.
|
||||||
|
|
@ -506,7 +572,11 @@ namespace Microsoft.AspNetCore.Cors.Infrastructure
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var exceptionSeen = true;
|
var exceptionSeen = true;
|
||||||
var hostBuilder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
// Simulate ExceptionHandler middleware
|
// Simulate ExceptionHandler middleware
|
||||||
|
|
@ -537,8 +607,11 @@ namespace Microsoft.AspNetCore.Cors.Infrastructure
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.ConfigureServices(services => services.AddCors());
|
.ConfigureServices(services => services.AddCors());
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(hostBuilder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
// Act
|
// Act
|
||||||
// Actual request.
|
// Actual request.
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,11 @@
|
||||||
// Copyright (c) .NET Foundation. All rights reserved.
|
// 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.
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.Builder;
|
using Microsoft.AspNetCore.Builder;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
|
|
||||||
namespace CorsMiddlewareWebSite
|
namespace CorsMiddlewareWebSite
|
||||||
{
|
{
|
||||||
|
|
@ -19,15 +21,19 @@ namespace CorsMiddlewareWebSite
|
||||||
app.UseCors(policy => policy.WithOrigins("http://example.com"));
|
app.UseCors(policy => policy.WithOrigins("http://example.com"));
|
||||||
app.UseMiddleware<EchoMiddleware>();
|
app.UseMiddleware<EchoMiddleware>();
|
||||||
}
|
}
|
||||||
public static void Main(string[] args)
|
public static Task Main(string[] args)
|
||||||
{
|
{
|
||||||
var host = new WebHostBuilder()
|
var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
.UseKestrel()
|
.UseKestrel()
|
||||||
.UseIISIntegration()
|
.UseIISIntegration()
|
||||||
.UseStartup<Startup>()
|
.UseStartup<Startup>();
|
||||||
|
})
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
host.Run();
|
return host.RunAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -33,13 +33,17 @@ namespace ConcurrencyLimiterSample
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Main(string[] args)
|
public static Task Main(string[] args)
|
||||||
{
|
{
|
||||||
new WebHostBuilder()
|
return new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
.UseKestrel()
|
.UseKestrel()
|
||||||
.UseStartup<Startup>()
|
.UseStartup<Startup>();
|
||||||
|
})
|
||||||
.Build()
|
.Build()
|
||||||
.Run();
|
.RunAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ using Microsoft.AspNetCore.Testing;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
|
|
@ -27,10 +28,19 @@ namespace Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.Tests
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task Successful_requests_pass_thru()
|
public async Task Successful_requests_pass_thru()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder().Configure(app => app
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
|
.Configure(app => app
|
||||||
.UseDatabaseErrorPage()
|
.UseDatabaseErrorPage()
|
||||||
.UseMiddleware<SuccessMiddleware>());
|
.UseMiddleware<SuccessMiddleware>());
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
HttpResponseMessage response = await server.CreateClient().GetAsync("http://localhost/");
|
HttpResponseMessage response = await server.CreateClient().GetAsync("http://localhost/");
|
||||||
|
|
||||||
|
|
@ -53,10 +63,19 @@ namespace Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.Tests
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task Non_database_exceptions_pass_thru()
|
public async Task Non_database_exceptions_pass_thru()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder().Configure(app => app
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
|
.Configure(app => app
|
||||||
.UseDatabaseErrorPage()
|
.UseDatabaseErrorPage()
|
||||||
.UseMiddleware<ExceptionMiddleware>());
|
.UseMiddleware<ExceptionMiddleware>());
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var ex = await Assert.ThrowsAsync<InvalidOperationException>(async () =>
|
var ex = await Assert.ThrowsAsync<InvalidOperationException>(async () =>
|
||||||
await server.CreateClient().GetAsync("http://localhost/"));
|
await server.CreateClient().GetAsync("http://localhost/"));
|
||||||
|
|
@ -82,7 +101,8 @@ namespace Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.Tests
|
||||||
{
|
{
|
||||||
using (var database = SqlTestStore.CreateScratch())
|
using (var database = SqlTestStore.CreateScratch())
|
||||||
{
|
{
|
||||||
TestServer server = SetupTestServer<BloggingContext, DatabaseErrorButNoMigrationsMiddleware>(database);
|
using var host = await SetupServer<BloggingContext, DatabaseErrorButNoMigrationsMiddleware>(database);
|
||||||
|
using var server = host.GetTestServer();
|
||||||
var ex = await Assert.ThrowsAsync<DbUpdateException>(async () =>
|
var ex = await Assert.ThrowsAsync<DbUpdateException>(async () =>
|
||||||
await server.CreateClient().GetAsync("http://localhost/"));
|
await server.CreateClient().GetAsync("http://localhost/"));
|
||||||
|
|
||||||
|
|
@ -114,7 +134,8 @@ namespace Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.Tests
|
||||||
{
|
{
|
||||||
using (var database = SqlTestStore.CreateScratch())
|
using (var database = SqlTestStore.CreateScratch())
|
||||||
{
|
{
|
||||||
TestServer server = SetupTestServer<BloggingContext, NoMigrationsMiddleware>(database);
|
using var host = await SetupServer<BloggingContext, NoMigrationsMiddleware>(database);
|
||||||
|
using var server = host.GetTestServer();
|
||||||
HttpResponseMessage response = await server.CreateClient().GetAsync("http://localhost/");
|
HttpResponseMessage response = await server.CreateClient().GetAsync("http://localhost/");
|
||||||
|
|
||||||
Assert.Equal(HttpStatusCode.InternalServerError, response.StatusCode);
|
Assert.Equal(HttpStatusCode.InternalServerError, response.StatusCode);
|
||||||
|
|
@ -142,13 +163,13 @@ namespace Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.Tests
|
||||||
[ConditionalFact]
|
[ConditionalFact]
|
||||||
[OSSkipCondition(OperatingSystems.Linux)]
|
[OSSkipCondition(OperatingSystems.Linux)]
|
||||||
[OSSkipCondition(OperatingSystems.MacOSX)]
|
[OSSkipCondition(OperatingSystems.MacOSX)]
|
||||||
public void No_exception_on_diagnostic_event_received_when_null_state()
|
public async Task No_exception_on_diagnostic_event_received_when_null_state()
|
||||||
{
|
{
|
||||||
using (var database = SqlTestStore.CreateScratch())
|
using (var database = SqlTestStore.CreateScratch())
|
||||||
{
|
{
|
||||||
using (var server = SetupTestServer<BloggingContext, NoMigrationsMiddleware>(database))
|
using (var server = await SetupServer<BloggingContext, NoMigrationsMiddleware>(database))
|
||||||
{
|
{
|
||||||
using (var db = server.Host.Services.GetService<BloggingContext>())
|
using (var db = server.Services.GetService<BloggingContext>())
|
||||||
{
|
{
|
||||||
db.Blogs.Add(new Blog());
|
db.Blogs.Add(new Blog());
|
||||||
|
|
||||||
|
|
@ -172,7 +193,8 @@ namespace Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.Tests
|
||||||
{
|
{
|
||||||
using (var database = SqlTestStore.CreateScratch())
|
using (var database = SqlTestStore.CreateScratch())
|
||||||
{
|
{
|
||||||
TestServer server = SetupTestServer<BloggingContextWithMigrations, PendingMigrationsMiddleware>(database);
|
using var host = await SetupServer<BloggingContextWithMigrations, PendingMigrationsMiddleware>(database);
|
||||||
|
using var server = host.GetTestServer();
|
||||||
HttpResponseMessage response = await server.CreateClient().GetAsync("http://localhost/");
|
HttpResponseMessage response = await server.CreateClient().GetAsync("http://localhost/");
|
||||||
|
|
||||||
Assert.Equal(HttpStatusCode.InternalServerError, response.StatusCode);
|
Assert.Equal(HttpStatusCode.InternalServerError, response.StatusCode);
|
||||||
|
|
@ -208,7 +230,8 @@ namespace Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.Tests
|
||||||
{
|
{
|
||||||
using (var database = SqlTestStore.CreateScratch())
|
using (var database = SqlTestStore.CreateScratch())
|
||||||
{
|
{
|
||||||
TestServer server = SetupTestServer<BloggingContextWithPendingModelChanges, PendingModelChangesMiddleware>(database);
|
using var host = await SetupServer<BloggingContextWithPendingModelChanges, PendingModelChangesMiddleware>(database);
|
||||||
|
using var server = host.GetTestServer();
|
||||||
HttpResponseMessage response = await server.CreateClient().GetAsync("http://localhost/");
|
HttpResponseMessage response = await server.CreateClient().GetAsync("http://localhost/");
|
||||||
|
|
||||||
Assert.Equal(HttpStatusCode.InternalServerError, response.StatusCode);
|
Assert.Equal(HttpStatusCode.InternalServerError, response.StatusCode);
|
||||||
|
|
@ -245,7 +268,8 @@ namespace Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.Tests
|
||||||
{
|
{
|
||||||
using (var database = SqlTestStore.CreateScratch())
|
using (var database = SqlTestStore.CreateScratch())
|
||||||
{
|
{
|
||||||
TestServer server = SetupTestServer<BloggingContextWithMigrations, ApplyMigrationsMiddleware>(database);
|
using var host = await SetupServer<BloggingContextWithMigrations, ApplyMigrationsMiddleware>(database);
|
||||||
|
using var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var expectedMigrationsEndpoint = "/ApplyDatabaseMigrations";
|
var expectedMigrationsEndpoint = "/ApplyDatabaseMigrations";
|
||||||
|
|
@ -302,7 +326,11 @@ namespace Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.Tests
|
||||||
|
|
||||||
using (var database = SqlTestStore.CreateScratch())
|
using (var database = SqlTestStore.CreateScratch())
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseDatabaseErrorPage(new DatabaseErrorPageOptions
|
app.UseDatabaseErrorPage(new DatabaseErrorPageOptions
|
||||||
|
|
@ -317,7 +345,11 @@ namespace Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.Tests
|
||||||
services.AddDbContext<BloggingContextWithMigrations>(
|
services.AddDbContext<BloggingContextWithMigrations>(
|
||||||
optionsBuilder => optionsBuilder.UseSqlite(database.ConnectionString));
|
optionsBuilder => optionsBuilder.UseSqlite(database.ConnectionString));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
HttpResponseMessage response = await server.CreateClient().GetAsync("http://localhost/");
|
HttpResponseMessage response = await server.CreateClient().GetAsync("http://localhost/");
|
||||||
|
|
||||||
|
|
@ -335,7 +367,11 @@ namespace Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.Tests
|
||||||
{
|
{
|
||||||
var logProvider = new TestLoggerProvider();
|
var logProvider = new TestLoggerProvider();
|
||||||
|
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseDatabaseErrorPage();
|
app.UseDatabaseErrorPage();
|
||||||
|
|
@ -344,7 +380,11 @@ namespace Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.Tests
|
||||||
app.ApplicationServices.GetService<ILoggerFactory>().AddProvider(logProvider);
|
app.ApplicationServices.GetService<ILoggerFactory>().AddProvider(logProvider);
|
||||||
#pragma warning restore CS0618 // Type or member is obsolete
|
#pragma warning restore CS0618 // Type or member is obsolete
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
@ -391,7 +431,8 @@ namespace Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.Tests
|
||||||
{
|
{
|
||||||
var logProvider = new TestLoggerProvider();
|
var logProvider = new TestLoggerProvider();
|
||||||
|
|
||||||
var server = SetupTestServer<BloggingContextWithSnapshotThatThrows, ExceptionInLogicMiddleware>(database, logProvider);
|
using var host = await SetupServer<BloggingContextWithSnapshotThatThrows, ExceptionInLogicMiddleware>(database, logProvider);
|
||||||
|
using var server = host.GetTestServer();
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
@ -430,7 +471,8 @@ namespace Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.Tests
|
||||||
{
|
{
|
||||||
using (var database = SqlTestStore.CreateScratch())
|
using (var database = SqlTestStore.CreateScratch())
|
||||||
{
|
{
|
||||||
TestServer server = SetupTestServer<BloggingContext, WrappedExceptionMiddleware>(database);
|
using var host = await SetupServer<BloggingContext, WrappedExceptionMiddleware>(database);
|
||||||
|
using var server = host.GetTestServer();
|
||||||
HttpResponseMessage response = await server.CreateClient().GetAsync("http://localhost/");
|
HttpResponseMessage response = await server.CreateClient().GetAsync("http://localhost/");
|
||||||
|
|
||||||
Assert.Equal(HttpStatusCode.InternalServerError, response.StatusCode);
|
Assert.Equal(HttpStatusCode.InternalServerError, response.StatusCode);
|
||||||
|
|
@ -461,10 +503,14 @@ namespace Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.Tests
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static TestServer SetupTestServer<TContext, TMiddleware>(SqlTestStore database, ILoggerProvider logProvider = null)
|
private static async Task<IHost> SetupServer<TContext, TMiddleware>(SqlTestStore database, ILoggerProvider logProvider = null)
|
||||||
where TContext : DbContext
|
where TContext : DbContext
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseDatabaseErrorPage();
|
app.UseDatabaseErrorPage();
|
||||||
|
|
@ -482,8 +528,11 @@ namespace Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.Tests
|
||||||
{
|
{
|
||||||
services.AddDbContext<TContext>(optionsBuilder => optionsBuilder.UseSqlite(database.ConnectionString));
|
services.AddDbContext<TContext>(optionsBuilder => optionsBuilder.UseSqlite(database.ConnectionString));
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
return new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
return host;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static UrlEncoder _urlEncoder = UrlEncoder.Default;
|
private static UrlEncoder _urlEncoder = UrlEncoder.Default;
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||||
using Microsoft.EntityFrameworkCore.Migrations;
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
using Microsoft.EntityFrameworkCore.Storage;
|
using Microsoft.EntityFrameworkCore.Storage;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.Tests
|
namespace Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.Tests
|
||||||
|
|
@ -27,10 +28,19 @@ namespace Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.Tests
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task Non_migration_requests_pass_thru()
|
public async Task Non_migration_requests_pass_thru()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder().Configure(app => app
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
|
.Configure(app => app
|
||||||
.UseMigrationsEndPoint()
|
.UseMigrationsEndPoint()
|
||||||
.UseMiddleware<SuccessMiddleware>());
|
.UseMiddleware<SuccessMiddleware>());
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
HttpResponseMessage response = await server.CreateClient().GetAsync("http://localhost/");
|
HttpResponseMessage response = await server.CreateClient().GetAsync("http://localhost/");
|
||||||
|
|
||||||
|
|
@ -75,7 +85,11 @@ namespace Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.Tests
|
||||||
|
|
||||||
var path = useCustomPath ? new PathString("/EndPoints/ApplyMyMigrations") : MigrationsEndPointOptions.DefaultPath;
|
var path = useCustomPath ? new PathString("/EndPoints/ApplyMyMigrations") : MigrationsEndPointOptions.DefaultPath;
|
||||||
|
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
if (useCustomPath)
|
if (useCustomPath)
|
||||||
|
|
@ -97,7 +111,11 @@ namespace Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.Tests
|
||||||
options.UseSqlite(database.ConnectionString);
|
options.UseSqlite(database.ConnectionString);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
using (var db = BloggingContextWithMigrations.CreateWithoutExternalServiceProvider(optionsBuilder.Options))
|
using (var db = BloggingContextWithMigrations.CreateWithoutExternalServiceProvider(optionsBuilder.Options))
|
||||||
{
|
{
|
||||||
|
|
@ -128,12 +146,20 @@ namespace Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.Tests
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task Context_type_not_specified()
|
public async Task Context_type_not_specified()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseMigrationsEndPoint();
|
app.UseMigrationsEndPoint();
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var formData = new FormUrlEncodedContent(new List<KeyValuePair<string, string>>());
|
var formData = new FormUrlEncodedContent(new List<KeyValuePair<string, string>>());
|
||||||
|
|
||||||
|
|
@ -148,12 +174,20 @@ namespace Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.Tests
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task Invalid_context_type_specified()
|
public async Task Invalid_context_type_specified()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseMigrationsEndPoint();
|
app.UseMigrationsEndPoint();
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var typeName = "You won't find this type ;)";
|
var typeName = "You won't find this type ;)";
|
||||||
var formData = new FormUrlEncodedContent(new List<KeyValuePair<string, string>>
|
var formData = new FormUrlEncodedContent(new List<KeyValuePair<string, string>>
|
||||||
|
|
@ -172,10 +206,18 @@ namespace Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.Tests
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task Context_not_registered_in_services()
|
public async Task Context_not_registered_in_services()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app => app.UseMigrationsEndPoint())
|
.Configure(app => app.UseMigrationsEndPoint())
|
||||||
.ConfigureServices(services => services.AddEntityFrameworkSqlite());
|
.ConfigureServices(services => services.AddEntityFrameworkSqlite());
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var formData = new FormUrlEncodedContent(new List<KeyValuePair<string, string>>
|
var formData = new FormUrlEncodedContent(new List<KeyValuePair<string, string>>
|
||||||
{
|
{
|
||||||
|
|
@ -197,7 +239,11 @@ namespace Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.Tests
|
||||||
{
|
{
|
||||||
using (var database = SqlTestStore.CreateScratch())
|
using (var database = SqlTestStore.CreateScratch())
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app => app.UseMigrationsEndPoint())
|
.Configure(app => app.UseMigrationsEndPoint())
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
|
|
@ -206,7 +252,11 @@ namespace Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.Tests
|
||||||
optionsBuilder.UseSqlite(database.ConnectionString);
|
optionsBuilder.UseSqlite(database.ConnectionString);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var formData = new FormUrlEncodedContent(new List<KeyValuePair<string, string>>
|
var formData = new FormUrlEncodedContent(new List<KeyValuePair<string, string>>
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) .NET Foundation. All rights reserved.
|
// 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.
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
|
@ -6,12 +6,14 @@ using System.Net.Http;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.TestHost;
|
using Microsoft.AspNetCore.TestHost;
|
||||||
using Microsoft.AspNetCore.Testing;
|
using Microsoft.AspNetCore.Testing;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Diagnostics.FunctionalTests
|
namespace Microsoft.AspNetCore.Diagnostics.FunctionalTests
|
||||||
{
|
{
|
||||||
public class TestFixture<TStartup> : IDisposable
|
public class TestFixture<TStartup> : IDisposable
|
||||||
{
|
{
|
||||||
private readonly TestServer _server;
|
private readonly TestServer _server;
|
||||||
|
private readonly IHost _host;
|
||||||
|
|
||||||
public TestFixture()
|
public TestFixture()
|
||||||
{
|
{
|
||||||
|
|
@ -20,10 +22,16 @@ namespace Microsoft.AspNetCore.Diagnostics.FunctionalTests
|
||||||
// (DefaultRequestCulture) is consistent regardless of system configuration or personal preferences.
|
// (DefaultRequestCulture) is consistent regardless of system configuration or personal preferences.
|
||||||
using (new CultureReplacer())
|
using (new CultureReplacer())
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
_host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.UseStartup(typeof(TStartup));
|
.UseStartup(typeof(TStartup));
|
||||||
|
}).Build();
|
||||||
|
|
||||||
_server = new TestServer(builder);
|
_host.Start();
|
||||||
|
_server = _host.GetTestServer();
|
||||||
}
|
}
|
||||||
|
|
||||||
Client = _server.CreateClient();
|
Client = _server.CreateClient();
|
||||||
|
|
@ -36,6 +44,7 @@ namespace Microsoft.AspNetCore.Diagnostics.FunctionalTests
|
||||||
{
|
{
|
||||||
Client.Dispose();
|
Client.Dispose();
|
||||||
_server.Dispose();
|
_server.Dispose();
|
||||||
|
_host.Dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.TestHost;
|
using Microsoft.AspNetCore.TestHost;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Diagnostics
|
namespace Microsoft.AspNetCore.Diagnostics
|
||||||
|
|
@ -22,7 +23,11 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
DiagnosticListener diagnosticListener = null;
|
DiagnosticListener diagnosticListener = null;
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
diagnosticListener = app.ApplicationServices.GetRequiredService<DiagnosticListener>();
|
diagnosticListener = app.ApplicationServices.GetRequiredService<DiagnosticListener>();
|
||||||
|
|
@ -32,7 +37,11 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
throw new Exception("Test exception");
|
throw new Exception("Test exception");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var listener = new TestDiagnosticListener();
|
var listener = new TestDiagnosticListener();
|
||||||
diagnosticListener.SubscribeWithAdapter(listener);
|
diagnosticListener.SubscribeWithAdapter(listener);
|
||||||
|
|
||||||
|
|
@ -50,7 +59,11 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
public async Task ErrorPageWithAcceptHeaderForHtmlReturnsHtml()
|
public async Task ErrorPageWithAcceptHeaderForHtmlReturnsHtml()
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseDeveloperExceptionPage();
|
app.UseDeveloperExceptionPage();
|
||||||
|
|
@ -59,7 +72,11 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
throw new Exception("Test exception");
|
throw new Exception("Test exception");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
@ -77,7 +94,11 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
public async Task ErrorPageWithoutAcceptHeaderForHtmlReturnsPlainText()
|
public async Task ErrorPageWithoutAcceptHeaderForHtmlReturnsPlainText()
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseDeveloperExceptionPage();
|
app.UseDeveloperExceptionPage();
|
||||||
|
|
@ -86,7 +107,11 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
throw new Exception("Test exception");
|
throw new Exception("Test exception");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
var response = await server.CreateClient().GetAsync("/path");
|
var response = await server.CreateClient().GetAsync("/path");
|
||||||
|
|
@ -102,7 +127,11 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
public async Task ExceptionPageFiltersAreApplied()
|
public async Task ExceptionPageFiltersAreApplied()
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddSingleton<IDeveloperPageExceptionFilter, ExceptionMessageFilter>();
|
services.AddSingleton<IDeveloperPageExceptionFilter, ExceptionMessageFilter>();
|
||||||
|
|
@ -115,7 +144,11 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
throw new Exception("Test exception");
|
throw new Exception("Test exception");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
var response = await server.CreateClient().GetAsync("/path");
|
var response = await server.CreateClient().GetAsync("/path");
|
||||||
|
|
@ -128,7 +161,11 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
public async Task ExceptionFilterCallingNextWorks()
|
public async Task ExceptionFilterCallingNextWorks()
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddSingleton<IDeveloperPageExceptionFilter, PassThroughExceptionFilter>();
|
services.AddSingleton<IDeveloperPageExceptionFilter, PassThroughExceptionFilter>();
|
||||||
|
|
@ -143,20 +180,30 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
throw new Exception("Test exception");
|
throw new Exception("Test exception");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
var response = await server.CreateClient().GetAsync("/path");
|
var response = await server.CreateClient().GetAsync("/path");
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
Assert.Equal("Bad format exception!", await response.Content.ReadAsStringAsync());
|
Assert.Equal("Bad format exception!", await response.Content.ReadAsStringAsync());
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task ExceptionPageFiltersAreAppliedInOrder()
|
public async Task ExceptionPageFiltersAreAppliedInOrder()
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddSingleton<IDeveloperPageExceptionFilter, AlwaysThrowSameMessageFilter>();
|
services.AddSingleton<IDeveloperPageExceptionFilter, AlwaysThrowSameMessageFilter>();
|
||||||
|
|
@ -171,7 +218,11 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
throw new Exception("Test exception");
|
throw new Exception("Test exception");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
var response = await server.CreateClient().GetAsync("/path");
|
var response = await server.CreateClient().GetAsync("/path");
|
||||||
|
|
@ -241,7 +292,11 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
DiagnosticListener diagnosticListener = null;
|
DiagnosticListener diagnosticListener = null;
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
diagnosticListener = app.ApplicationServices.GetRequiredService<DiagnosticListener>();
|
diagnosticListener = app.ApplicationServices.GetRequiredService<DiagnosticListener>();
|
||||||
|
|
@ -251,7 +306,11 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
throw new CustomCompilationException(failures);
|
throw new CustomCompilationException(failures);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var listener = new TestDiagnosticListener();
|
var listener = new TestDiagnosticListener();
|
||||||
diagnosticListener.SubscribeWithAdapter(listener);
|
diagnosticListener.SubscribeWithAdapter(listener);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Http.Features;
|
using Microsoft.AspNetCore.Http.Features;
|
||||||
using Microsoft.AspNetCore.TestHost;
|
using Microsoft.AspNetCore.TestHost;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Diagnostics
|
namespace Microsoft.AspNetCore.Diagnostics
|
||||||
|
|
@ -28,7 +29,11 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
[InlineData(HttpStatusCode.InternalServerError)]
|
[InlineData(HttpStatusCode.InternalServerError)]
|
||||||
public async Task OnlyHandles_UnhandledExceptions(HttpStatusCode expectedStatusCode)
|
public async Task OnlyHandles_UnhandledExceptions(HttpStatusCode expectedStatusCode)
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseExceptionHandler("/handle-errors");
|
app.UseExceptionHandler("/handle-errors");
|
||||||
|
|
@ -48,8 +53,11 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
await context.Response.WriteAsync("An error occurred while adding a product");
|
await context.Response.WriteAsync("An error occurred while adding a product");
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync(string.Empty);
|
var response = await client.GetAsync(string.Empty);
|
||||||
|
|
@ -61,7 +69,11 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task DoesNotHandle_UnhandledExceptions_WhenResponseAlreadyStarted()
|
public async Task DoesNotHandle_UnhandledExceptions_WhenResponseAlreadyStarted()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.Use(async (httpContext, next) =>
|
app.Use(async (httpContext, next) =>
|
||||||
|
|
@ -96,8 +108,11 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
throw new InvalidOperationException("Something bad happened");
|
throw new InvalidOperationException("Something bad happened");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync(string.Empty);
|
var response = await client.GetAsync(string.Empty);
|
||||||
|
|
@ -110,7 +125,11 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
public async Task ClearsResponseBuffer_BeforeRequestIsReexecuted()
|
public async Task ClearsResponseBuffer_BeforeRequestIsReexecuted()
|
||||||
{
|
{
|
||||||
var expectedResponseBody = "New response body";
|
var expectedResponseBody = "New response body";
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
// add response buffering
|
// add response buffering
|
||||||
|
|
@ -156,8 +175,11 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
throw new InvalidOperationException("Invalid input provided.");
|
throw new InvalidOperationException("Invalid input provided.");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync(string.Empty);
|
var response = await client.GetAsync(string.Empty);
|
||||||
|
|
@ -181,7 +203,11 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
{
|
{
|
||||||
var expiresTime = DateTime.UtcNow.AddDays(5).ToString("R");
|
var expiresTime = DateTime.UtcNow.AddDays(5).ToString("R");
|
||||||
var expectedResponseBody = "Handled error in a custom way.";
|
var expectedResponseBody = "Handled error in a custom way.";
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseExceptionHandler("/handle-errors");
|
app.UseExceptionHandler("/handle-errors");
|
||||||
|
|
@ -205,8 +231,11 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
throw new InvalidOperationException("Invalid input provided.");
|
throw new InvalidOperationException("Invalid input provided.");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync(string.Empty);
|
var response = await client.GetAsync(string.Empty);
|
||||||
|
|
@ -230,7 +259,11 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
{
|
{
|
||||||
var expiresTime = DateTime.UtcNow.AddDays(10).ToString("R");
|
var expiresTime = DateTime.UtcNow.AddDays(10).ToString("R");
|
||||||
var expectedResponseBody = "Hello world!";
|
var expectedResponseBody = "Hello world!";
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseExceptionHandler("/handle-errors");
|
app.UseExceptionHandler("/handle-errors");
|
||||||
|
|
@ -253,8 +286,11 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
await httpContext.Response.WriteAsync(expectedResponseBody);
|
await httpContext.Response.WriteAsync(expectedResponseBody);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync(string.Empty);
|
var response = await client.GetAsync(string.Empty);
|
||||||
|
|
@ -280,7 +316,11 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
public async Task DoesNotClearCacheHeaders_WhenResponseHasAlreadyStarted()
|
public async Task DoesNotClearCacheHeaders_WhenResponseHasAlreadyStarted()
|
||||||
{
|
{
|
||||||
var expiresTime = DateTime.UtcNow.AddDays(10).ToString("R");
|
var expiresTime = DateTime.UtcNow.AddDays(10).ToString("R");
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.Use(async (httpContext, next) =>
|
app.Use(async (httpContext, next) =>
|
||||||
|
|
@ -321,8 +361,11 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
throw new InvalidOperationException("Something bad happened");
|
throw new InvalidOperationException("Something bad happened");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync(string.Empty);
|
var response = await client.GetAsync(string.Empty);
|
||||||
|
|
@ -350,7 +393,11 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
// Arrange
|
// Arrange
|
||||||
DiagnosticListener diagnosticListener = null;
|
DiagnosticListener diagnosticListener = null;
|
||||||
|
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
diagnosticListener = app.ApplicationServices.GetRequiredService<DiagnosticListener>();
|
diagnosticListener = app.ApplicationServices.GetRequiredService<DiagnosticListener>();
|
||||||
|
|
@ -368,7 +415,11 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
throw new Exception("Test exception");
|
throw new Exception("Test exception");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var listener = new TestDiagnosticListener();
|
var listener = new TestDiagnosticListener();
|
||||||
diagnosticListener.SubscribeWithAdapter(listener);
|
diagnosticListener.SubscribeWithAdapter(listener);
|
||||||
|
|
@ -395,15 +446,20 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
// Arrange
|
// Arrange
|
||||||
DiagnosticListener diagnosticListener = null;
|
DiagnosticListener diagnosticListener = null;
|
||||||
|
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
diagnosticListener = app.ApplicationServices.GetRequiredService<DiagnosticListener>();
|
diagnosticListener = app.ApplicationServices.GetRequiredService<DiagnosticListener>();
|
||||||
app.UseExceptionHandler();
|
app.UseExceptionHandler();
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
var exception = Assert.Throws<InvalidOperationException>(() => new TestServer(builder));
|
var exception = Assert.Throws<InvalidOperationException>(() => host.Start());
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
Assert.Equal("An error occurred when configuring the exception handler middleware. " +
|
Assert.Equal("An error occurred when configuring the exception handler middleware. " +
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.TestHost;
|
using Microsoft.AspNetCore.TestHost;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Diagnostics
|
namespace Microsoft.AspNetCore.Diagnostics
|
||||||
|
|
@ -21,7 +22,11 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
{
|
{
|
||||||
var expectedStatusCode = 432;
|
var expectedStatusCode = 432;
|
||||||
var destination = "/location";
|
var destination = "/location";
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseStatusCodePagesWithRedirects("/errorPage?id={0}");
|
app.UseStatusCodePagesWithRedirects("/errorPage?id={0}");
|
||||||
|
|
@ -48,9 +53,13 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
throw new InvalidOperationException($"Invalid input provided. {context.Request.Path}");
|
throw new InvalidOperationException($"Invalid input provided. {context.Request.Path}");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
var expectedQueryString = $"?id={expectedStatusCode}";
|
var expectedQueryString = $"?id={expectedStatusCode}";
|
||||||
var expectedUri = $"/errorPage{expectedQueryString}";
|
var expectedUri = $"/errorPage{expectedQueryString}";
|
||||||
using var server = new TestServer(builder);
|
using var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync(destination);
|
var response = await client.GetAsync(destination);
|
||||||
Assert.Equal(HttpStatusCode.Found, response.StatusCode);
|
Assert.Equal(HttpStatusCode.Found, response.StatusCode);
|
||||||
|
|
@ -67,7 +76,11 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
{
|
{
|
||||||
var expectedStatusCode = 432;
|
var expectedStatusCode = 432;
|
||||||
var destination = "/location";
|
var destination = "/location";
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.Use(async (context, next) =>
|
app.Use(async (context, next) =>
|
||||||
|
|
@ -108,8 +121,11 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
throw new InvalidOperationException("Invalid input provided.");
|
throw new InvalidOperationException("Invalid input provided.");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using var server = new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync(destination + "?name=James");
|
var response = await client.GetAsync(destination + "?name=James");
|
||||||
var content = await response.Content.ReadAsStringAsync();
|
var content = await response.Content.ReadAsStringAsync();
|
||||||
|
|
@ -121,7 +137,11 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
{
|
{
|
||||||
var expectedStatusCode = 432;
|
var expectedStatusCode = 432;
|
||||||
var destination = "/location";
|
var destination = "/location";
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseStatusCodePagesWithReExecute(pathFormat: "/errorPage", queryFormat: "?id={0}");
|
app.UseStatusCodePagesWithReExecute(pathFormat: "/errorPage", queryFormat: "?id={0}");
|
||||||
|
|
@ -163,8 +183,11 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
throw new InvalidOperationException("Invalid input provided.");
|
throw new InvalidOperationException("Invalid input provided.");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using var server = new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync(destination + "?name=James");
|
var response = await client.GetAsync(destination + "?name=James");
|
||||||
var content = await response.Content.ReadAsStringAsync();
|
var content = await response.Content.ReadAsStringAsync();
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ using Microsoft.AspNetCore.Builder;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
|
|
||||||
namespace DatabaseErrorPageSample
|
namespace DatabaseErrorPageSample
|
||||||
{
|
{
|
||||||
|
|
@ -26,15 +27,19 @@ namespace DatabaseErrorPageSample
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Main(string[] args)
|
public static Task Main(string[] args)
|
||||||
{
|
{
|
||||||
var host = new WebHostBuilder()
|
var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
.UseKestrel()
|
.UseKestrel()
|
||||||
.UseIISIntegration()
|
.UseIISIntegration()
|
||||||
.UseStartup<Startup>()
|
.UseStartup<Startup>();
|
||||||
|
})
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
host.Run();
|
return host.RunAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Routing;
|
using Microsoft.AspNetCore.Routing;
|
||||||
using Microsoft.AspNetCore.Routing.Patterns;
|
using Microsoft.AspNetCore.Routing.Patterns;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
|
|
||||||
namespace DeveloperExceptionPageSample
|
namespace DeveloperExceptionPageSample
|
||||||
{
|
{
|
||||||
|
|
@ -44,15 +45,19 @@ namespace DeveloperExceptionPageSample
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Main(string[] args)
|
public static Task Main(string[] args)
|
||||||
{
|
{
|
||||||
var host = new WebHostBuilder()
|
var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
.UseKestrel()
|
.UseKestrel()
|
||||||
.UseIISIntegration()
|
.UseIISIntegration()
|
||||||
.UseStartup<Startup>()
|
.UseStartup<Startup>();
|
||||||
|
})
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
host.Run();
|
return host.RunAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,12 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Text.Encodings.Web;
|
using System.Text.Encodings.Web;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.Builder;
|
using Microsoft.AspNetCore.Builder;
|
||||||
using Microsoft.AspNetCore.Diagnostics;
|
using Microsoft.AspNetCore.Diagnostics;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Http.Features;
|
using Microsoft.AspNetCore.Http.Features;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
|
|
||||||
namespace ExceptionHandlerSample
|
namespace ExceptionHandlerSample
|
||||||
{
|
{
|
||||||
|
|
@ -56,15 +58,19 @@ namespace ExceptionHandlerSample
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Main(string[] args)
|
public static Task Main(string[] args)
|
||||||
{
|
{
|
||||||
var host = new WebHostBuilder()
|
var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
.UseKestrel()
|
.UseKestrel()
|
||||||
.UseIISIntegration()
|
.UseIISIntegration()
|
||||||
.UseStartup<Startup>()
|
.UseStartup<Startup>();
|
||||||
|
})
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
host.Run();
|
return host.RunAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ using Microsoft.AspNetCore.Diagnostics;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Http.Features;
|
using Microsoft.AspNetCore.Http.Features;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
|
|
||||||
namespace StatusCodePagesSample
|
namespace StatusCodePagesSample
|
||||||
{
|
{
|
||||||
|
|
@ -102,15 +103,18 @@ namespace StatusCodePagesSample
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Main(string[] args)
|
public static Task Main(string[] args)
|
||||||
{
|
{
|
||||||
var host = new WebHostBuilder()
|
var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
.UseKestrel()
|
.UseKestrel()
|
||||||
.UseIISIntegration()
|
.UseIISIntegration()
|
||||||
.UseStartup<Startup>()
|
.UseStartup<Startup>();
|
||||||
.Build();
|
}).Build();
|
||||||
|
|
||||||
host.Run();
|
return host.RunAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.Builder;
|
using Microsoft.AspNetCore.Builder;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
|
|
||||||
namespace WelcomePageSample
|
namespace WelcomePageSample
|
||||||
{
|
{
|
||||||
|
|
@ -10,15 +12,18 @@ namespace WelcomePageSample
|
||||||
app.UseWelcomePage();
|
app.UseWelcomePage();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Main(string[] args)
|
public static Task Main(string[] args)
|
||||||
{
|
{
|
||||||
var host = new WebHostBuilder()
|
var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
.UseKestrel()
|
.UseKestrel()
|
||||||
.UseIISIntegration()
|
.UseIISIntegration()
|
||||||
.UseStartup<Startup>()
|
.UseStartup<Startup>();
|
||||||
.Build();
|
}).Build();
|
||||||
|
|
||||||
host.Run();
|
return host.RunAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.TestHost;
|
using Microsoft.AspNetCore.TestHost;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.HeaderPropagation.Tests
|
namespace Microsoft.AspNetCore.HeaderPropagation.Tests
|
||||||
|
|
@ -24,7 +25,11 @@ namespace Microsoft.AspNetCore.HeaderPropagation.Tests
|
||||||
// Arrange
|
// Arrange
|
||||||
Exception captured = null;
|
Exception captured = null;
|
||||||
|
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddHttpClient("test").AddHeaderPropagation();
|
services.AddHttpClient("test").AddHeaderPropagation();
|
||||||
|
|
@ -50,8 +55,11 @@ namespace Microsoft.AspNetCore.HeaderPropagation.Tests
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var request = new HttpRequestMessage();
|
var request = new HttpRequestMessage();
|
||||||
|
|
@ -96,10 +104,10 @@ namespace Microsoft.AspNetCore.HeaderPropagation.Tests
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var handler = new SimpleHandler();
|
var handler = new SimpleHandler();
|
||||||
var builder = CreateBuilder(c =>
|
using var host = await CreateHost(c =>
|
||||||
c.Headers.Add("in", "out"),
|
c.Headers.Add("in", "out"),
|
||||||
handler);
|
handler);
|
||||||
var server = new TestServer(builder);
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var request = new HttpRequestMessage();
|
var request = new HttpRequestMessage();
|
||||||
|
|
@ -119,13 +127,13 @@ namespace Microsoft.AspNetCore.HeaderPropagation.Tests
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var handler = new SimpleHandler();
|
var handler = new SimpleHandler();
|
||||||
var builder = CreateBuilder(c =>
|
using var host = await CreateHost(c =>
|
||||||
{
|
{
|
||||||
c.Headers.Add("first");
|
c.Headers.Add("first");
|
||||||
c.Headers.Add("second");
|
c.Headers.Add("second");
|
||||||
},
|
},
|
||||||
handler);
|
handler);
|
||||||
var server = new TestServer(builder);
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var request = new HttpRequestMessage();
|
var request = new HttpRequestMessage();
|
||||||
|
|
@ -144,15 +152,20 @@ namespace Microsoft.AspNetCore.HeaderPropagation.Tests
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void Builder_UseHeaderPropagation_Without_AddHeaderPropagation_Throws()
|
public async Task Builder_UseHeaderPropagation_Without_AddHeaderPropagation_Throws()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseHeaderPropagation();
|
app.UseHeaderPropagation();
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var exception = Assert.Throws<InvalidOperationException>(() => new TestServer(builder));
|
var exception = await Assert.ThrowsAsync<InvalidOperationException>(() => host.StartAsync());
|
||||||
Assert.Equal(
|
Assert.Equal(
|
||||||
"Unable to find the required services. Please add all the required services by calling 'IServiceCollection.AddHeaderPropagation' inside the call to 'ConfigureServices(...)' in the application startup code.",
|
"Unable to find the required services. Please add all the required services by calling 'IServiceCollection.AddHeaderPropagation' inside the call to 'ConfigureServices(...)' in the application startup code.",
|
||||||
exception.Message);
|
exception.Message);
|
||||||
|
|
@ -163,11 +176,11 @@ namespace Microsoft.AspNetCore.HeaderPropagation.Tests
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var handler = new SimpleHandler();
|
var handler = new SimpleHandler();
|
||||||
var builder = CreateBuilder(
|
using var host = await CreateHost(
|
||||||
c => c.Headers.Add("in", "out"),
|
c => c.Headers.Add("in", "out"),
|
||||||
handler,
|
handler,
|
||||||
c => c.Headers.Add("out", "different"));
|
c => c.Headers.Add("out", "different"));
|
||||||
var server = new TestServer(builder);
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var request = new HttpRequestMessage();
|
var request = new HttpRequestMessage();
|
||||||
|
|
@ -182,9 +195,13 @@ namespace Microsoft.AspNetCore.HeaderPropagation.Tests
|
||||||
Assert.Equal(new[] { "test" }, handler.Headers.GetValues("different"));
|
Assert.Equal(new[] { "test" }, handler.Headers.GetValues("different"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private IWebHostBuilder CreateBuilder(Action<HeaderPropagationOptions> configure, HttpMessageHandler primaryHandler, Action<HeaderPropagationMessageHandlerOptions> configureClient = null)
|
private async Task<IHost> CreateHost(Action<HeaderPropagationOptions> configure, HttpMessageHandler primaryHandler, Action<HeaderPropagationMessageHandlerOptions> configureClient = null)
|
||||||
{
|
{
|
||||||
return new WebHostBuilder()
|
var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseHeaderPropagation();
|
app.UseHeaderPropagation();
|
||||||
|
|
@ -208,6 +225,11 @@ namespace Microsoft.AspNetCore.HeaderPropagation.Tests
|
||||||
client.AddHeaderPropagation();
|
client.AddHeaderPropagation();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
return host;
|
||||||
}
|
}
|
||||||
|
|
||||||
private class SimpleHandler : DelegatingHandler
|
private class SimpleHandler : DelegatingHandler
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ using Moq;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
{
|
{
|
||||||
|
|
@ -21,7 +22,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
[Fact]
|
[Fact]
|
||||||
public void ThrowFriendlyErrorWhenServicesNotRegistered()
|
public void ThrowFriendlyErrorWhenServicesNotRegistered()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRouting();
|
app.UseRouting();
|
||||||
|
|
@ -34,8 +39,9 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
{
|
{
|
||||||
services.AddRouting();
|
services.AddRouting();
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var ex = Assert.Throws<InvalidOperationException>(() => new TestServer(builder));
|
var ex = Assert.Throws<InvalidOperationException>(() => host.Start());
|
||||||
|
|
||||||
Assert.Equal(
|
Assert.Equal(
|
||||||
"Unable to find the required services. Please add all the required services by calling " +
|
"Unable to find the required services. Please add all the required services by calling " +
|
||||||
|
|
@ -48,7 +54,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
public async Task MapHealthChecks_ReturnsOk()
|
public async Task MapHealthChecks_ReturnsOk()
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRouting();
|
app.UseRouting();
|
||||||
|
|
@ -62,7 +72,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
services.AddRouting();
|
services.AddRouting();
|
||||||
services.AddHealthChecks();
|
services.AddHealthChecks();
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
|
|
@ -78,7 +92,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
public async Task MapHealthChecks_WithOptions_ReturnsOk()
|
public async Task MapHealthChecks_WithOptions_ReturnsOk()
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRouting();
|
app.UseRouting();
|
||||||
|
|
@ -99,7 +117,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
services.AddRouting();
|
services.AddRouting();
|
||||||
services.AddHealthChecks();
|
services.AddHealthChecks();
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,11 @@
|
||||||
// Copyright (c) .NET Foundation. All rights reserved.
|
// 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.
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.TestHost;
|
using Microsoft.AspNetCore.TestHost;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
|
|
@ -14,10 +15,17 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task BasicStartup()
|
public async Task BasicStartup()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.UseStartup<HealthChecksSample.BasicStartup>();
|
.UseStartup<HealthChecksSample.BasicStartup>();
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var response = await client.GetAsync("/health");
|
var response = await client.GetAsync("/health");
|
||||||
|
|
@ -29,10 +37,17 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task CustomWriterStartup()
|
public async Task CustomWriterStartup()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.UseStartup<HealthChecksSample.CustomWriterStartup>();
|
.UseStartup<HealthChecksSample.CustomWriterStartup>();
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var response = await client.GetAsync("/health");
|
var response = await client.GetAsync("/health");
|
||||||
|
|
@ -45,10 +60,17 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task LivenessProbeStartup_Liveness()
|
public async Task LivenessProbeStartup_Liveness()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.UseStartup<HealthChecksSample.LivenessProbeStartup>();
|
.UseStartup<HealthChecksSample.LivenessProbeStartup>();
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var response = await client.GetAsync("/health/live");
|
var response = await client.GetAsync("/health/live");
|
||||||
|
|
@ -60,10 +82,17 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task LivenessProbeStartup_Readiness()
|
public async Task LivenessProbeStartup_Readiness()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.UseStartup<HealthChecksSample.LivenessProbeStartup>();
|
.UseStartup<HealthChecksSample.LivenessProbeStartup>();
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var response = await client.GetAsync("/health/ready");
|
var response = await client.GetAsync("/health/ready");
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ using Newtonsoft.Json;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
{
|
{
|
||||||
|
|
@ -22,13 +23,18 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
[Fact]
|
[Fact]
|
||||||
public void ThrowFriendlyErrorWhenServicesNotRegistered()
|
public void ThrowFriendlyErrorWhenServicesNotRegistered()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseHealthChecks("/health");
|
app.UseHealthChecks("/health");
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var ex = Assert.Throws<InvalidOperationException>(() => new TestServer(builder));
|
var ex = Assert.Throws<InvalidOperationException>(() => host.Start());
|
||||||
|
|
||||||
Assert.Equal(
|
Assert.Equal(
|
||||||
"Unable to find the required services. Please add all the required services by calling " +
|
"Unable to find the required services. Please add all the required services by calling " +
|
||||||
|
|
@ -40,7 +46,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
[Fact] // Matches based on '.Map'
|
[Fact] // Matches based on '.Map'
|
||||||
public async Task IgnoresRequestThatDoesNotMatchPath()
|
public async Task IgnoresRequestThatDoesNotMatchPath()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseHealthChecks("/health");
|
app.UseHealthChecks("/health");
|
||||||
|
|
@ -49,7 +59,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
{
|
{
|
||||||
services.AddHealthChecks();
|
services.AddHealthChecks();
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var response = await client.GetAsync("/frob");
|
var response = await client.GetAsync("/frob");
|
||||||
|
|
@ -59,7 +73,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
[Fact] // Matches based on '.Map'
|
[Fact] // Matches based on '.Map'
|
||||||
public async Task MatchIsCaseInsensitive()
|
public async Task MatchIsCaseInsensitive()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseHealthChecks("/health");
|
app.UseHealthChecks("/health");
|
||||||
|
|
@ -68,7 +86,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
{
|
{
|
||||||
services.AddHealthChecks();
|
services.AddHealthChecks();
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var response = await client.GetAsync("/HEALTH");
|
var response = await client.GetAsync("/HEALTH");
|
||||||
|
|
@ -78,7 +100,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task ReturnsPlainTextStatus()
|
public async Task ReturnsPlainTextStatus()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseHealthChecks("/health");
|
app.UseHealthChecks("/health");
|
||||||
|
|
@ -87,7 +113,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
{
|
{
|
||||||
services.AddHealthChecks();
|
services.AddHealthChecks();
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var response = await client.GetAsync("/health");
|
var response = await client.GetAsync("/health");
|
||||||
|
|
@ -100,7 +130,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task StatusCodeIs200IfNoChecks()
|
public async Task StatusCodeIs200IfNoChecks()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseHealthChecks("/health");
|
app.UseHealthChecks("/health");
|
||||||
|
|
@ -109,7 +143,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
{
|
{
|
||||||
services.AddHealthChecks();
|
services.AddHealthChecks();
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var response = await client.GetAsync("/health");
|
var response = await client.GetAsync("/health");
|
||||||
|
|
@ -122,7 +160,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task StatusCodeIs200IfAllChecksHealthy()
|
public async Task StatusCodeIs200IfAllChecksHealthy()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseHealthChecks("/health");
|
app.UseHealthChecks("/health");
|
||||||
|
|
@ -134,7 +176,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
.AddCheck("Bar", () => HealthCheckResult.Healthy("A-ok!"))
|
.AddCheck("Bar", () => HealthCheckResult.Healthy("A-ok!"))
|
||||||
.AddCheck("Baz", () => HealthCheckResult.Healthy("A-ok!"));
|
.AddCheck("Baz", () => HealthCheckResult.Healthy("A-ok!"));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var response = await client.GetAsync("/health");
|
var response = await client.GetAsync("/health");
|
||||||
|
|
@ -147,7 +193,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task StatusCodeIs200IfCheckIsDegraded()
|
public async Task StatusCodeIs200IfCheckIsDegraded()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseHealthChecks("/health");
|
app.UseHealthChecks("/health");
|
||||||
|
|
@ -159,7 +209,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
.AddCheck("Bar", () => HealthCheckResult.Degraded("Not so great."))
|
.AddCheck("Bar", () => HealthCheckResult.Degraded("Not so great."))
|
||||||
.AddCheck("Baz", () => HealthCheckResult.Healthy("A-ok!"));
|
.AddCheck("Baz", () => HealthCheckResult.Healthy("A-ok!"));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var response = await client.GetAsync("/health");
|
var response = await client.GetAsync("/health");
|
||||||
|
|
@ -172,7 +226,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task StatusCodeIs503IfCheckIsUnhealthy()
|
public async Task StatusCodeIs503IfCheckIsUnhealthy()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseHealthChecks("/health");
|
app.UseHealthChecks("/health");
|
||||||
|
|
@ -184,7 +242,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
.AddAsyncCheck("Bar", () => Task.FromResult(HealthCheckResult.Unhealthy("Pretty bad.")))
|
.AddAsyncCheck("Bar", () => Task.FromResult(HealthCheckResult.Unhealthy("Pretty bad.")))
|
||||||
.AddAsyncCheck("Baz", () => Task.FromResult(HealthCheckResult.Healthy("A-ok!")));
|
.AddAsyncCheck("Baz", () => Task.FromResult(HealthCheckResult.Healthy("A-ok!")));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var response = await client.GetAsync("/health");
|
var response = await client.GetAsync("/health");
|
||||||
|
|
@ -197,7 +259,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task StatusCodeIs503IfCheckHasUnhandledException()
|
public async Task StatusCodeIs503IfCheckHasUnhandledException()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseHealthChecks("/health");
|
app.UseHealthChecks("/health");
|
||||||
|
|
@ -209,7 +275,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
.AddAsyncCheck("Bar", () => throw null)
|
.AddAsyncCheck("Bar", () => throw null)
|
||||||
.AddAsyncCheck("Baz", () => Task.FromResult(HealthCheckResult.Healthy("A-ok!")));
|
.AddAsyncCheck("Baz", () => Task.FromResult(HealthCheckResult.Healthy("A-ok!")));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var response = await client.GetAsync("/health");
|
var response = await client.GetAsync("/health");
|
||||||
|
|
@ -227,7 +297,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
status = "Unhealthy",
|
status = "Unhealthy",
|
||||||
});
|
});
|
||||||
|
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseHealthChecks("/health", new HealthCheckOptions()
|
app.UseHealthChecks("/health", new HealthCheckOptions()
|
||||||
|
|
@ -247,7 +321,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
.AddAsyncCheck("Bar", () => Task.FromResult(HealthCheckResult.Unhealthy("Pretty bad.")))
|
.AddAsyncCheck("Bar", () => Task.FromResult(HealthCheckResult.Unhealthy("Pretty bad.")))
|
||||||
.AddAsyncCheck("Baz", () => Task.FromResult(HealthCheckResult.Healthy("A-ok!")));
|
.AddAsyncCheck("Baz", () => Task.FromResult(HealthCheckResult.Healthy("A-ok!")));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var response = await client.GetAsync("/health");
|
var response = await client.GetAsync("/health");
|
||||||
|
|
@ -261,7 +339,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task NoResponseWriterReturnsEmptyBody()
|
public async Task NoResponseWriterReturnsEmptyBody()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseHealthChecks("/health", new HealthCheckOptions()
|
app.UseHealthChecks("/health", new HealthCheckOptions()
|
||||||
|
|
@ -276,7 +358,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
.AddAsyncCheck("Bar", () => Task.FromResult(HealthCheckResult.Unhealthy("Pretty bad.")))
|
.AddAsyncCheck("Bar", () => Task.FromResult(HealthCheckResult.Unhealthy("Pretty bad.")))
|
||||||
.AddAsyncCheck("Baz", () => Task.FromResult(HealthCheckResult.Healthy("A-ok!")));
|
.AddAsyncCheck("Baz", () => Task.FromResult(HealthCheckResult.Healthy("A-ok!")));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var response = await client.GetAsync("/health");
|
var response = await client.GetAsync("/health");
|
||||||
|
|
@ -288,7 +374,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task CanSetCustomStatusCodes()
|
public async Task CanSetCustomStatusCodes()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseHealthChecks("/health", new HealthCheckOptions()
|
app.UseHealthChecks("/health", new HealthCheckOptions()
|
||||||
|
|
@ -303,7 +393,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
{
|
{
|
||||||
services.AddHealthChecks();
|
services.AddHealthChecks();
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var response = await client.GetAsync("/health");
|
var response = await client.GetAsync("/health");
|
||||||
|
|
@ -315,7 +409,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task SetsCacheHeaders()
|
public async Task SetsCacheHeaders()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseHealthChecks("/health");
|
app.UseHealthChecks("/health");
|
||||||
|
|
@ -324,7 +422,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
{
|
{
|
||||||
services.AddHealthChecks();
|
services.AddHealthChecks();
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var response = await client.GetAsync("/health");
|
var response = await client.GetAsync("/health");
|
||||||
|
|
@ -339,7 +441,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task CanSuppressCacheHeaders()
|
public async Task CanSuppressCacheHeaders()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseHealthChecks("/health", new HealthCheckOptions()
|
app.UseHealthChecks("/health", new HealthCheckOptions()
|
||||||
|
|
@ -351,7 +457,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
{
|
{
|
||||||
services.AddHealthChecks();
|
services.AddHealthChecks();
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var response = await client.GetAsync("/health");
|
var response = await client.GetAsync("/health");
|
||||||
|
|
@ -366,7 +476,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task CanFilterChecks()
|
public async Task CanFilterChecks()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseHealthChecks("/health", new HealthCheckOptions()
|
app.UseHealthChecks("/health", new HealthCheckOptions()
|
||||||
|
|
@ -382,7 +496,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
.AddAsyncCheck("Bar", () => Task.FromResult(HealthCheckResult.Unhealthy("A-ok!")))
|
.AddAsyncCheck("Bar", () => Task.FromResult(HealthCheckResult.Unhealthy("A-ok!")))
|
||||||
.AddAsyncCheck("Baz", () => Task.FromResult(HealthCheckResult.Healthy("A-ok!")));
|
.AddAsyncCheck("Baz", () => Task.FromResult(HealthCheckResult.Healthy("A-ok!")));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var response = await client.GetAsync("/health");
|
var response = await client.GetAsync("/health");
|
||||||
|
|
@ -395,7 +513,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task CanListenWithoutPath_AcceptsRequest()
|
public async Task CanListenWithoutPath_AcceptsRequest()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseHealthChecks(default);
|
app.UseHealthChecks(default);
|
||||||
|
|
@ -404,8 +526,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
{
|
{
|
||||||
services.AddHealthChecks();
|
services.AddHealthChecks();
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var response = await client.GetAsync("http://localhost:5001/health");
|
var response = await client.GetAsync("http://localhost:5001/health");
|
||||||
|
|
@ -418,7 +543,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task CanListenWithPath_AcceptsRequestWithExtraSlash()
|
public async Task CanListenWithPath_AcceptsRequestWithExtraSlash()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseHealthChecks("/health");
|
app.UseHealthChecks("/health");
|
||||||
|
|
@ -427,8 +556,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
{
|
{
|
||||||
services.AddHealthChecks();
|
services.AddHealthChecks();
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var response = await client.GetAsync("http://localhost:5001/health/");
|
var response = await client.GetAsync("http://localhost:5001/health/");
|
||||||
|
|
@ -439,7 +571,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task CanListenWithPath_AcceptsRequestWithCaseInsensitiveMatch()
|
public async Task CanListenWithPath_AcceptsRequestWithCaseInsensitiveMatch()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseHealthChecks("/health");
|
app.UseHealthChecks("/health");
|
||||||
|
|
@ -448,8 +584,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
{
|
{
|
||||||
services.AddHealthChecks();
|
services.AddHealthChecks();
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var response = await client.GetAsync("http://localhost:5001/HEALTH");
|
var response = await client.GetAsync("http://localhost:5001/HEALTH");
|
||||||
|
|
@ -462,7 +601,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task CanListenWithPath_RejectsRequestWithExtraSegments()
|
public async Task CanListenWithPath_RejectsRequestWithExtraSegments()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseHealthChecks("/health");
|
app.UseHealthChecks("/health");
|
||||||
|
|
@ -471,8 +614,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
{
|
{
|
||||||
services.AddHealthChecks();
|
services.AddHealthChecks();
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var response = await client.GetAsync("http://localhost:5001/health/detailed");
|
var response = await client.GetAsync("http://localhost:5001/health/detailed");
|
||||||
|
|
@ -484,7 +630,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task CanListenWithPath_MultipleMiddleware_LeastSpecificFirst()
|
public async Task CanListenWithPath_MultipleMiddleware_LeastSpecificFirst()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
// Throws if used
|
// Throws if used
|
||||||
|
|
@ -499,8 +649,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
{
|
{
|
||||||
services.AddHealthChecks();
|
services.AddHealthChecks();
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var response = await client.GetAsync("http://localhost:5001/health/detailed");
|
var response = await client.GetAsync("http://localhost:5001/health/detailed");
|
||||||
|
|
@ -514,7 +667,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task CanListenWithPath_MultipleMiddleware_MostSpecificFirst()
|
public async Task CanListenWithPath_MultipleMiddleware_MostSpecificFirst()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseHealthChecks("/health/detailed");
|
app.UseHealthChecks("/health/detailed");
|
||||||
|
|
@ -529,8 +686,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
{
|
{
|
||||||
services.AddHealthChecks();
|
services.AddHealthChecks();
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var response = await client.GetAsync("http://localhost:5001/health/detailed");
|
var response = await client.GetAsync("http://localhost:5001/health/detailed");
|
||||||
|
|
@ -543,7 +703,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task CanListenOnPort_AcceptsRequest_OnSpecifiedPort()
|
public async Task CanListenOnPort_AcceptsRequest_OnSpecifiedPort()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.Use(next => async (context) =>
|
app.Use(next => async (context) =>
|
||||||
|
|
@ -560,8 +724,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
{
|
{
|
||||||
services.AddHealthChecks();
|
services.AddHealthChecks();
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var response = await client.GetAsync("http://localhost:5001/health");
|
var response = await client.GetAsync("http://localhost:5001/health");
|
||||||
|
|
@ -574,7 +741,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task CanListenOnPortWithoutPath_AcceptsRequest_OnSpecifiedPort()
|
public async Task CanListenOnPortWithoutPath_AcceptsRequest_OnSpecifiedPort()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.Use(next => async (context) =>
|
app.Use(next => async (context) =>
|
||||||
|
|
@ -591,8 +762,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
{
|
{
|
||||||
services.AddHealthChecks();
|
services.AddHealthChecks();
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var response = await client.GetAsync("http://localhost:5001/health");
|
var response = await client.GetAsync("http://localhost:5001/health");
|
||||||
|
|
@ -605,7 +779,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task CanListenOnPort_RejectsRequest_OnOtherPort()
|
public async Task CanListenOnPort_RejectsRequest_OnOtherPort()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.Use(next => async (context) =>
|
app.Use(next => async (context) =>
|
||||||
|
|
@ -622,8 +800,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
{
|
{
|
||||||
services.AddHealthChecks();
|
services.AddHealthChecks();
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var response = await client.GetAsync("http://localhost:5000/health");
|
var response = await client.GetAsync("http://localhost:5000/health");
|
||||||
|
|
@ -634,7 +815,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task CanListenOnPort_MultipleMiddleware()
|
public async Task CanListenOnPort_MultipleMiddleware()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.Use(next => async (context) =>
|
app.Use(next => async (context) =>
|
||||||
|
|
@ -657,8 +842,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
{
|
{
|
||||||
services.AddHealthChecks();
|
services.AddHealthChecks();
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var response = await client.GetAsync("http://localhost:5001/health/detailed");
|
var response = await client.GetAsync("http://localhost:5001/health/detailed");
|
||||||
|
|
@ -671,7 +859,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task CanListenOnPort_MultipleMiddleware_DifferentPorts()
|
public async Task CanListenOnPort_MultipleMiddleware_DifferentPorts()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.Use(next => async (context) =>
|
app.Use(next => async (context) =>
|
||||||
|
|
@ -694,8 +886,11 @@ namespace Microsoft.AspNetCore.Diagnostics.HealthChecks
|
||||||
{
|
{
|
||||||
services.AddHealthChecks();
|
services.AddHealthChecks();
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var response = await client.GetAsync("http://localhost:5001/health");
|
var response = await client.GetAsync("http://localhost:5001/health");
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,10 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace HealthChecksSample
|
namespace HealthChecksSample
|
||||||
|
|
@ -25,12 +27,12 @@ namespace HealthChecksSample
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Main(string[] args)
|
public static Task Main(string[] args)
|
||||||
{
|
{
|
||||||
BuildWebHost(args).Run();
|
return BuildWebHost(args).RunAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IWebHost BuildWebHost(string[] args)
|
public static IHost BuildWebHost(string[] args)
|
||||||
{
|
{
|
||||||
var config = new ConfigurationBuilder()
|
var config = new ConfigurationBuilder()
|
||||||
.SetBasePath(Directory.GetCurrentDirectory())
|
.SetBasePath(Directory.GetCurrentDirectory())
|
||||||
|
|
@ -45,7 +47,10 @@ namespace HealthChecksSample
|
||||||
startupType = typeof(BasicStartup);
|
startupType = typeof(BasicStartup);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new WebHostBuilder()
|
return new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
.UseConfiguration(config)
|
.UseConfiguration(config)
|
||||||
.ConfigureLogging(builder =>
|
.ConfigureLogging(builder =>
|
||||||
{
|
{
|
||||||
|
|
@ -54,7 +59,8 @@ namespace HealthChecksSample
|
||||||
builder.AddConsole();
|
builder.AddConsole();
|
||||||
})
|
})
|
||||||
.UseKestrel()
|
.UseKestrel()
|
||||||
.UseStartup(startupType)
|
.UseStartup(startupType);
|
||||||
|
})
|
||||||
.Build();
|
.Build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,22 +1,27 @@
|
||||||
// Copyright (c) .NET Foundation. All rights reserved.
|
// 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.
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace HostFilteringSample
|
namespace HostFilteringSample
|
||||||
{
|
{
|
||||||
public class Program
|
public class Program
|
||||||
{
|
{
|
||||||
public static void Main(string[] args)
|
public static Task Main(string[] args)
|
||||||
{
|
{
|
||||||
BuildWebHost(args).Run();
|
return BuildWebHost(args).RunAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IWebHost BuildWebHost(string[] args)
|
public static IHost BuildWebHost(string[] args)
|
||||||
{
|
{
|
||||||
var hostBuilder = new WebHostBuilder()
|
var hostBuilder = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
.ConfigureLogging((_, factory) =>
|
.ConfigureLogging((_, factory) =>
|
||||||
{
|
{
|
||||||
factory.SetMinimumLevel(LogLevel.Debug);
|
factory.SetMinimumLevel(LogLevel.Debug);
|
||||||
|
|
@ -30,6 +35,7 @@ namespace HostFilteringSample
|
||||||
})
|
})
|
||||||
.UseKestrel()
|
.UseKestrel()
|
||||||
.UseStartup<Startup>();
|
.UseStartup<Startup>();
|
||||||
|
});
|
||||||
|
|
||||||
return hostBuilder.Build();
|
return hostBuilder.Build();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) .NET Foundation. All rights reserved.
|
// 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.
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
|
@ -9,6 +9,7 @@ using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.TestHost;
|
using Microsoft.AspNetCore.TestHost;
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
using Microsoft.Extensions.Primitives;
|
using Microsoft.Extensions.Primitives;
|
||||||
using Microsoft.Net.Http.Headers;
|
using Microsoft.Net.Http.Headers;
|
||||||
|
|
@ -21,12 +22,20 @@ namespace Microsoft.AspNetCore.HostFiltering
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task MissingConfigThrows()
|
public async Task MissingConfigThrows()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseHostFiltering();
|
app.UseHostFiltering();
|
||||||
});
|
});
|
||||||
await Assert.ThrowsAsync<InvalidOperationException>(() => new TestServer(builder).SendAsync(_ => { }));
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
await Assert.ThrowsAsync<InvalidOperationException>(() => host.GetTestServer().SendAsync(_ => { }));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
|
|
@ -34,7 +43,11 @@ namespace Microsoft.AspNetCore.HostFiltering
|
||||||
[InlineData(false, 400)]
|
[InlineData(false, 400)]
|
||||||
public async Task AllowsMissingHost(bool allowed, int status)
|
public async Task AllowsMissingHost(bool allowed, int status)
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddHostFiltering(options =>
|
services.AddHostFiltering(options =>
|
||||||
|
|
@ -57,7 +70,11 @@ namespace Microsoft.AspNetCore.HostFiltering
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var response = await server.CreateClient().GetAsync("/");
|
var response = await server.CreateClient().GetAsync("/");
|
||||||
Assert.Equal(status, (int)response.StatusCode);
|
Assert.Equal(status, (int)response.StatusCode);
|
||||||
}
|
}
|
||||||
|
|
@ -67,7 +84,11 @@ namespace Microsoft.AspNetCore.HostFiltering
|
||||||
[InlineData(false, 400)]
|
[InlineData(false, 400)]
|
||||||
public async Task AllowsEmptyHost(bool allowed, int status)
|
public async Task AllowsEmptyHost(bool allowed, int status)
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddHostFiltering(options =>
|
services.AddHostFiltering(options =>
|
||||||
|
|
@ -92,7 +113,11 @@ namespace Microsoft.AspNetCore.HostFiltering
|
||||||
});
|
});
|
||||||
app.Run(c => Task.CompletedTask);
|
app.Run(c => Task.CompletedTask);
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var response = await server.CreateClient().GetAsync("/");
|
var response = await server.CreateClient().GetAsync("/");
|
||||||
Assert.Equal(status, (int)response.StatusCode);
|
Assert.Equal(status, (int)response.StatusCode);
|
||||||
}
|
}
|
||||||
|
|
@ -113,9 +138,13 @@ namespace Microsoft.AspNetCore.HostFiltering
|
||||||
[InlineData("xn--c1yn36f:443", "點看")]
|
[InlineData("xn--c1yn36f:443", "點看")]
|
||||||
[InlineData("[::ABC]", "[::aBc]")]
|
[InlineData("[::ABC]", "[::aBc]")]
|
||||||
[InlineData("[::1]:80", "[::1]")]
|
[InlineData("[::1]:80", "[::1]")]
|
||||||
public async Task AllowsSpecifiedHost(string host, string allowedHost)
|
public async Task AllowsSpecifiedHost(string hosturl, string allowedHost)
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddHostFiltering(options =>
|
services.AddHostFiltering(options =>
|
||||||
|
|
@ -129,13 +158,17 @@ namespace Microsoft.AspNetCore.HostFiltering
|
||||||
{
|
{
|
||||||
// TestHost's ClientHandler doesn't let you set the host header, only the host in the URI
|
// TestHost's ClientHandler doesn't let you set the host header, only the host in the URI
|
||||||
// and that would over-normalize some of our test conditions like casing.
|
// and that would over-normalize some of our test conditions like casing.
|
||||||
ctx.Request.Headers[HeaderNames.Host] = host;
|
ctx.Request.Headers[HeaderNames.Host] = hosturl;
|
||||||
return next();
|
return next();
|
||||||
});
|
});
|
||||||
app.UseHostFiltering();
|
app.UseHostFiltering();
|
||||||
app.Run(c => Task.CompletedTask);
|
app.Run(c => Task.CompletedTask);
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var response = await server.CreateRequest("/").GetAsync();
|
var response = await server.CreateRequest("/").GetAsync();
|
||||||
Assert.Equal(200, (int)response.StatusCode);
|
Assert.Equal(200, (int)response.StatusCode);
|
||||||
}
|
}
|
||||||
|
|
@ -157,9 +190,13 @@ namespace Microsoft.AspNetCore.HostFiltering
|
||||||
[InlineData("點看", "點看")]
|
[InlineData("點看", "點看")]
|
||||||
[InlineData("[::1", "[::1]")]
|
[InlineData("[::1", "[::1]")]
|
||||||
[InlineData("[::1:80", "[::1]")]
|
[InlineData("[::1:80", "[::1]")]
|
||||||
public async Task RejectsMismatchedHosts(string host, string allowedHost)
|
public async Task RejectsMismatchedHosts(string hosturl, string allowedHost)
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddHostFiltering(options =>
|
services.AddHostFiltering(options =>
|
||||||
|
|
@ -173,13 +210,17 @@ namespace Microsoft.AspNetCore.HostFiltering
|
||||||
{
|
{
|
||||||
// TestHost's ClientHandler doesn't let you set the host header, only the host in the URI
|
// TestHost's ClientHandler doesn't let you set the host header, only the host in the URI
|
||||||
// and that would reject some of our test conditions.
|
// and that would reject some of our test conditions.
|
||||||
ctx.Request.Headers[HeaderNames.Host] = host;
|
ctx.Request.Headers[HeaderNames.Host] = hosturl;
|
||||||
return next();
|
return next();
|
||||||
});
|
});
|
||||||
app.UseHostFiltering();
|
app.UseHostFiltering();
|
||||||
app.Run(c => throw new NotImplementedException("App"));
|
app.Run(c => throw new NotImplementedException("App"));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var response = await server.CreateRequest("/").GetAsync();
|
var response = await server.CreateRequest("/").GetAsync();
|
||||||
Assert.Equal(400, (int)response.StatusCode);
|
Assert.Equal(400, (int)response.StatusCode);
|
||||||
}
|
}
|
||||||
|
|
@ -191,7 +232,11 @@ namespace Microsoft.AspNetCore.HostFiltering
|
||||||
config["AllowedHosts"] = "localhost";
|
config["AllowedHosts"] = "localhost";
|
||||||
var currentHost = "otherHost";
|
var currentHost = "otherHost";
|
||||||
|
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddHostFiltering(options =>
|
services.AddHostFiltering(options =>
|
||||||
|
|
@ -210,7 +255,11 @@ namespace Microsoft.AspNetCore.HostFiltering
|
||||||
app.UseHostFiltering();
|
app.UseHostFiltering();
|
||||||
app.Run(c => Task.CompletedTask);
|
app.Run(c => Task.CompletedTask);
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var response = await server.CreateRequest("/").GetAsync();
|
var response = await server.CreateRequest("/").GetAsync();
|
||||||
Assert.Equal(400, (int)response.StatusCode);
|
Assert.Equal(400, (int)response.StatusCode);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,9 @@
|
||||||
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.Builder;
|
using Microsoft.AspNetCore.Builder;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.HttpOverrides;
|
using Microsoft.AspNetCore.HttpOverrides;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
|
|
||||||
namespace HttpOverridesSample
|
namespace HttpOverridesSample
|
||||||
{
|
{
|
||||||
|
|
@ -30,15 +32,19 @@ namespace HttpOverridesSample
|
||||||
}
|
}
|
||||||
|
|
||||||
// Entry point for the application.
|
// Entry point for the application.
|
||||||
public static void Main(string[] args)
|
public static Task Main(string[] args)
|
||||||
{
|
{
|
||||||
var host = new WebHostBuilder()
|
var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
.UseKestrel()
|
.UseKestrel()
|
||||||
// .UseIIS() // This repo can no longer reference IIS because IISIntegration depends on it.
|
// .UseIIS() // This repo can no longer reference IIS because IISIntegration depends on it.
|
||||||
.UseStartup<Startup>()
|
.UseStartup<Startup>();
|
||||||
|
})
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
host.Run();
|
return host.RunAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ using Microsoft.AspNetCore.Builder;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.TestHost;
|
using Microsoft.AspNetCore.TestHost;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
using Microsoft.Net.Http.Headers;
|
using Microsoft.Net.Http.Headers;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
@ -42,7 +43,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task VerifyHeaderIsUsedIfNoCertificateAlreadySet()
|
public async Task VerifyHeaderIsUsedIfNoCertificateAlreadySet()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddCertificateForwarding(options => { });
|
services.AddCertificateForwarding(options => { });
|
||||||
|
|
@ -61,7 +66,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
await next();
|
await next();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var context = await server.SendAsync(c =>
|
var context = await server.SendAsync(c =>
|
||||||
{
|
{
|
||||||
|
|
@ -72,7 +81,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task VerifyHeaderOverridesCertificateEvenAlreadySet()
|
public async Task VerifyHeaderOverridesCertificateEvenAlreadySet()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddCertificateForwarding(options => { });
|
services.AddCertificateForwarding(options => { });
|
||||||
|
|
@ -92,7 +105,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
await next();
|
await next();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var context = await server.SendAsync(c =>
|
var context = await server.SendAsync(c =>
|
||||||
{
|
{
|
||||||
|
|
@ -103,7 +120,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task VerifySettingTheAzureHeaderOnTheForwarderOptionsWorks()
|
public async Task VerifySettingTheAzureHeaderOnTheForwarderOptionsWorks()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddCertificateForwarding(options => options.CertificateHeader = "X-ARR-ClientCert");
|
services.AddCertificateForwarding(options => options.CertificateHeader = "X-ARR-ClientCert");
|
||||||
|
|
@ -122,7 +143,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
await next();
|
await next();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var context = await server.SendAsync(c =>
|
var context = await server.SendAsync(c =>
|
||||||
{
|
{
|
||||||
|
|
@ -133,7 +158,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task VerifyACustomHeaderFailsIfTheHeaderIsNotPresent()
|
public async Task VerifyACustomHeaderFailsIfTheHeaderIsNotPresent()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddCertificateForwarding(options => options.CertificateHeader = "some-random-header");
|
services.AddCertificateForwarding(options => options.CertificateHeader = "some-random-header");
|
||||||
|
|
@ -152,7 +181,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
await next();
|
await next();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var context = await server.SendAsync(c =>
|
var context = await server.SendAsync(c =>
|
||||||
{
|
{
|
||||||
|
|
@ -163,7 +196,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task VerifyArrHeaderEncodedCertFailsOnBadEncoding()
|
public async Task VerifyArrHeaderEncodedCertFailsOnBadEncoding()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddCertificateForwarding(options => { });
|
services.AddCertificateForwarding(options => { });
|
||||||
|
|
@ -182,7 +219,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
await next();
|
await next();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var context = await server.SendAsync(c =>
|
var context = await server.SendAsync(c =>
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ using Microsoft.AspNetCore.Builder;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.TestHost;
|
using Microsoft.AspNetCore.TestHost;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Microsoft.Net.Http.Headers;
|
using Microsoft.Net.Http.Headers;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
|
|
@ -19,7 +20,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task XForwardedForDefaultSettingsChangeRemoteIpAndPort()
|
public async Task XForwardedForDefaultSettingsChangeRemoteIpAndPort()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
||||||
|
|
@ -27,7 +32,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
ForwardedHeaders = ForwardedHeaders.XForwardedFor
|
ForwardedHeaders = ForwardedHeaders.XForwardedFor
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var context = await server.SendAsync(c =>
|
var context = await server.SendAsync(c =>
|
||||||
{
|
{
|
||||||
|
|
@ -46,7 +55,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
[InlineData(1, "11.111.111.11.12345", "10.0.0.1", 99)] // Invalid
|
[InlineData(1, "11.111.111.11.12345", "10.0.0.1", 99)] // Invalid
|
||||||
public async Task XForwardedForFirstValueIsInvalid(int limit, string header, string expectedIp, int expectedPort)
|
public async Task XForwardedForFirstValueIsInvalid(int limit, string header, string expectedIp, int expectedPort)
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
||||||
|
|
@ -55,7 +68,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
ForwardLimit = limit,
|
ForwardLimit = limit,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var context = await server.SendAsync(c =>
|
var context = await server.SendAsync(c =>
|
||||||
{
|
{
|
||||||
|
|
@ -92,7 +109,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
[InlineData(3, "13.113.113.13:34567, 12.112.112.12:23456, 11.111.111.11:12345", "13.113.113.13", 34567, "", true)]
|
[InlineData(3, "13.113.113.13:34567, 12.112.112.12:23456, 11.111.111.11:12345", "13.113.113.13", 34567, "", true)]
|
||||||
public async Task XForwardedForForwardLimit(int limit, string header, string expectedIp, int expectedPort, string remainingHeader, bool requireSymmetry)
|
public async Task XForwardedForForwardLimit(int limit, string header, string expectedIp, int expectedPort, string remainingHeader, bool requireSymmetry)
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
var options = new ForwardedHeadersOptions
|
var options = new ForwardedHeadersOptions
|
||||||
|
|
@ -105,7 +126,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
options.KnownNetworks.Clear();
|
options.KnownNetworks.Clear();
|
||||||
app.UseForwardedHeaders(options);
|
app.UseForwardedHeaders(options);
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var context = await server.SendAsync(c =>
|
var context = await server.SendAsync(c =>
|
||||||
{
|
{
|
||||||
|
|
@ -127,7 +152,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
[InlineData("::", false)]
|
[InlineData("::", false)]
|
||||||
public async Task XForwardedForLoopback(string originalIp, bool expectForwarded)
|
public async Task XForwardedForLoopback(string originalIp, bool expectForwarded)
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
||||||
|
|
@ -135,7 +164,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
ForwardedHeaders = ForwardedHeaders.XForwardedFor,
|
ForwardedHeaders = ForwardedHeaders.XForwardedFor,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var context = await server.SendAsync(c =>
|
var context = await server.SendAsync(c =>
|
||||||
{
|
{
|
||||||
|
|
@ -185,7 +218,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
[InlineData(3, "13.113.113.13;34567, 12.112.112.12:23456, 11.111.111.11:12345", "10.0.0.1,11.111.111.11,12.112.112.12", "12.112.112.12", 23456, true)] // Invalid 3rd IP
|
[InlineData(3, "13.113.113.13;34567, 12.112.112.12:23456, 11.111.111.11:12345", "10.0.0.1,11.111.111.11,12.112.112.12", "12.112.112.12", 23456, true)] // Invalid 3rd IP
|
||||||
public async Task XForwardedForForwardKnownIps(int limit, string header, string knownIPs, string expectedIp, int expectedPort, bool requireSymmetry)
|
public async Task XForwardedForForwardKnownIps(int limit, string header, string knownIPs, string expectedIp, int expectedPort, bool requireSymmetry)
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
var options = new ForwardedHeadersOptions
|
var options = new ForwardedHeadersOptions
|
||||||
|
|
@ -200,7 +237,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
}
|
}
|
||||||
app.UseForwardedHeaders(options);
|
app.UseForwardedHeaders(options);
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var context = await server.SendAsync(c =>
|
var context = await server.SendAsync(c =>
|
||||||
{
|
{
|
||||||
|
|
@ -216,7 +257,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task XForwardedForOverrideBadIpDoesntChangeRemoteIp()
|
public async Task XForwardedForOverrideBadIpDoesntChangeRemoteIp()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
||||||
|
|
@ -224,7 +269,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
ForwardedHeaders = ForwardedHeaders.XForwardedFor
|
ForwardedHeaders = ForwardedHeaders.XForwardedFor
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var context = await server.SendAsync(c =>
|
var context = await server.SendAsync(c =>
|
||||||
{
|
{
|
||||||
|
|
@ -237,7 +286,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task XForwardedHostOverrideChangesRequestHost()
|
public async Task XForwardedHostOverrideChangesRequestHost()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
||||||
|
|
@ -245,7 +298,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
ForwardedHeaders = ForwardedHeaders.XForwardedHost
|
ForwardedHeaders = ForwardedHeaders.XForwardedHost
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var context = await server.SendAsync(c =>
|
var context = await server.SendAsync(c =>
|
||||||
{
|
{
|
||||||
|
|
@ -291,11 +348,15 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
[MemberData(nameof(HostHeaderData))]
|
[MemberData(nameof(HostHeaderData))]
|
||||||
public async Task XForwardedHostAllowsValidCharacters(string host)
|
public async Task XForwardedHostAllowsValidCharacters(string hostHeader)
|
||||||
{
|
{
|
||||||
var assertsExecuted = false;
|
var assertsExecuted = false;
|
||||||
|
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
||||||
|
|
@ -304,16 +365,20 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
});
|
});
|
||||||
app.Run(context =>
|
app.Run(context =>
|
||||||
{
|
{
|
||||||
Assert.Equal(host, context.Request.Host.ToString());
|
Assert.Equal(hostHeader, context.Request.Host.ToString());
|
||||||
assertsExecuted = true;
|
assertsExecuted = true;
|
||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
await server.SendAsync(c =>
|
await server.SendAsync(c =>
|
||||||
{
|
{
|
||||||
c.Request.Headers["X-Forwarded-Host"] = host;
|
c.Request.Headers["X-Forwarded-Host"] = hostHeader;
|
||||||
});
|
});
|
||||||
Assert.True(assertsExecuted);
|
Assert.True(assertsExecuted);
|
||||||
}
|
}
|
||||||
|
|
@ -368,11 +433,15 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
[MemberData(nameof(HostHeaderInvalidData))]
|
[MemberData(nameof(HostHeaderInvalidData))]
|
||||||
public async Task XForwardedHostFailsForInvalidCharacters(string host)
|
public async Task XForwardedHostFailsForInvalidCharacters(string hostHeader)
|
||||||
{
|
{
|
||||||
var assertsExecuted = false;
|
var assertsExecuted = false;
|
||||||
|
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
||||||
|
|
@ -381,16 +450,20 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
});
|
});
|
||||||
app.Run(context =>
|
app.Run(context =>
|
||||||
{
|
{
|
||||||
Assert.NotEqual(host, context.Request.Host.Value);
|
Assert.NotEqual(hostHeader, context.Request.Host.Value);
|
||||||
assertsExecuted = true;
|
assertsExecuted = true;
|
||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
await server.SendAsync(c =>
|
await server.SendAsync(c =>
|
||||||
{
|
{
|
||||||
c.Request.Headers["X-Forwarded-Host"] = host;
|
c.Request.Headers["X-Forwarded-Host"] = hostHeader;
|
||||||
});
|
});
|
||||||
Assert.True(assertsExecuted);
|
Assert.True(assertsExecuted);
|
||||||
}
|
}
|
||||||
|
|
@ -411,10 +484,14 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
[InlineData("xn--c1yn36f:443", "點看")]
|
[InlineData("xn--c1yn36f:443", "點看")]
|
||||||
[InlineData("[::ABC]", "[::aBc]")]
|
[InlineData("[::ABC]", "[::aBc]")]
|
||||||
[InlineData("[::1]:80", "[::1]")]
|
[InlineData("[::1]:80", "[::1]")]
|
||||||
public async Task XForwardedHostAllowsSpecifiedHost(string host, string allowedHost)
|
public async Task XForwardedHostAllowsSpecifiedHost(string hostHeader, string allowedHost)
|
||||||
{
|
{
|
||||||
bool assertsExecuted = false;
|
bool assertsExecuted = false;
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
||||||
|
|
@ -424,15 +501,19 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
});
|
});
|
||||||
app.Run(context =>
|
app.Run(context =>
|
||||||
{
|
{
|
||||||
Assert.Equal(host, context.Request.Headers[HeaderNames.Host]);
|
Assert.Equal(hostHeader, context.Request.Headers[HeaderNames.Host]);
|
||||||
assertsExecuted = true;
|
assertsExecuted = true;
|
||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var response = await server.SendAsync(ctx =>
|
var response = await server.SendAsync(ctx =>
|
||||||
{
|
{
|
||||||
ctx.Request.Headers["X-forwarded-Host"] = host;
|
ctx.Request.Headers["X-forwarded-Host"] = hostHeader;
|
||||||
});
|
});
|
||||||
Assert.True(assertsExecuted);
|
Assert.True(assertsExecuted);
|
||||||
}
|
}
|
||||||
|
|
@ -454,10 +535,14 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
[InlineData("點看", "點看")]
|
[InlineData("點看", "點看")]
|
||||||
[InlineData("[::1", "[::1]")]
|
[InlineData("[::1", "[::1]")]
|
||||||
[InlineData("[::1:80", "[::1]")]
|
[InlineData("[::1:80", "[::1]")]
|
||||||
public async Task XForwardedHostFailsMismatchedHosts(string host, string allowedHost)
|
public async Task XForwardedHostFailsMismatchedHosts(string hostHeader, string allowedHost)
|
||||||
{
|
{
|
||||||
bool assertsExecuted = false;
|
bool assertsExecuted = false;
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
||||||
|
|
@ -467,15 +552,19 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
});
|
});
|
||||||
app.Run(context =>
|
app.Run(context =>
|
||||||
{
|
{
|
||||||
Assert.NotEqual<string>(host, context.Request.Headers[HeaderNames.Host]);
|
Assert.NotEqual<string>(hostHeader, context.Request.Headers[HeaderNames.Host]);
|
||||||
assertsExecuted = true;
|
assertsExecuted = true;
|
||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var response = await server.SendAsync(ctx =>
|
var response = await server.SendAsync(ctx =>
|
||||||
{
|
{
|
||||||
ctx.Request.Headers["X-forwarded-Host"] = host;
|
ctx.Request.Headers["X-forwarded-Host"] = hostHeader;
|
||||||
});
|
});
|
||||||
Assert.True(assertsExecuted);
|
Assert.True(assertsExecuted);
|
||||||
}
|
}
|
||||||
|
|
@ -484,7 +573,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
public async Task XForwardedHostStopsAtFirstUnspecifiedHost()
|
public async Task XForwardedHostStopsAtFirstUnspecifiedHost()
|
||||||
{
|
{
|
||||||
bool assertsExecuted = false;
|
bool assertsExecuted = false;
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
||||||
|
|
@ -500,7 +593,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var response = await server.SendAsync(ctx =>
|
var response = await server.SendAsync(ctx =>
|
||||||
{
|
{
|
||||||
ctx.Request.Headers["X-forwarded-Host"] = "stuff:523, bar.foo.com:432, bar.com:80";
|
ctx.Request.Headers["X-forwarded-Host"] = "stuff:523, bar.foo.com:432, bar.com:80";
|
||||||
|
|
@ -518,7 +615,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
[InlineData(10, "h3, h2, h1", "h3")]
|
[InlineData(10, "h3, h2, h1", "h3")]
|
||||||
public async Task XForwardedProtoOverrideChangesRequestProtocol(int limit, string header, string expected)
|
public async Task XForwardedProtoOverrideChangesRequestProtocol(int limit, string header, string expected)
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
||||||
|
|
@ -527,7 +628,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
ForwardLimit = limit,
|
ForwardLimit = limit,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var context = await server.SendAsync(c =>
|
var context = await server.SendAsync(c =>
|
||||||
{
|
{
|
||||||
|
|
@ -559,7 +664,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
{
|
{
|
||||||
var assertsExecuted = false;
|
var assertsExecuted = false;
|
||||||
|
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
||||||
|
|
@ -573,7 +682,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
await server.SendAsync(c =>
|
await server.SendAsync(c =>
|
||||||
{
|
{
|
||||||
|
|
@ -608,7 +721,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
{
|
{
|
||||||
var assertsExecuted = false;
|
var assertsExecuted = false;
|
||||||
|
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
||||||
|
|
@ -622,7 +739,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
await server.SendAsync(c =>
|
await server.SendAsync(c =>
|
||||||
{
|
{
|
||||||
|
|
@ -642,7 +763,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
[InlineData(10, "h3, h2, h1", "::1, badip, ::1", "h1")]
|
[InlineData(10, "h3, h2, h1", "::1, badip, ::1", "h1")]
|
||||||
public async Task XForwardedProtoOverrideLimitedByXForwardedForCount(int limit, string protoHeader, string forHeader, string expected)
|
public async Task XForwardedProtoOverrideLimitedByXForwardedForCount(int limit, string protoHeader, string forHeader, string expected)
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
||||||
|
|
@ -652,7 +777,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
ForwardLimit = limit,
|
ForwardLimit = limit,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var context = await server.SendAsync(c =>
|
var context = await server.SendAsync(c =>
|
||||||
{
|
{
|
||||||
|
|
@ -676,7 +805,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
[InlineData(10, "h3, h2, h1", "::1, badip, ::1", "h1")]
|
[InlineData(10, "h3, h2, h1", "::1, badip, ::1", "h1")]
|
||||||
public async Task XForwardedProtoOverrideCanBeIndependentOfXForwardedForCount(int limit, string protoHeader, string forHeader, string expected)
|
public async Task XForwardedProtoOverrideCanBeIndependentOfXForwardedForCount(int limit, string protoHeader, string forHeader, string expected)
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
||||||
|
|
@ -686,7 +819,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
ForwardLimit = limit,
|
ForwardLimit = limit,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var context = await server.SendAsync(c =>
|
var context = await server.SendAsync(c =>
|
||||||
{
|
{
|
||||||
|
|
@ -712,7 +849,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
[InlineData("h2, h1", "E::, D::", "F::", true, "http")]
|
[InlineData("h2, h1", "E::, D::", "F::", true, "http")]
|
||||||
public async Task XForwardedProtoOverrideLimitedByLoopback(string protoHeader, string forHeader, string remoteIp, bool loopback, string expected)
|
public async Task XForwardedProtoOverrideLimitedByLoopback(string protoHeader, string forHeader, string remoteIp, bool loopback, string expected)
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
var options = new ForwardedHeadersOptions
|
var options = new ForwardedHeadersOptions
|
||||||
|
|
@ -728,7 +869,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
}
|
}
|
||||||
app.UseForwardedHeaders(options);
|
app.UseForwardedHeaders(options);
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var context = await server.SendAsync(c =>
|
var context = await server.SendAsync(c =>
|
||||||
{
|
{
|
||||||
|
|
@ -753,7 +898,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task AllForwardsEnabledChangeRequestRemoteIpHostandProtocol()
|
public async Task AllForwardsEnabledChangeRequestRemoteIpHostandProtocol()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
||||||
|
|
@ -761,7 +910,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
ForwardedHeaders = ForwardedHeaders.All
|
ForwardedHeaders = ForwardedHeaders.All
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var context = await server.SendAsync(c =>
|
var context = await server.SendAsync(c =>
|
||||||
{
|
{
|
||||||
|
|
@ -778,7 +931,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task AllOptionsDisabledRequestDoesntChange()
|
public async Task AllOptionsDisabledRequestDoesntChange()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
||||||
|
|
@ -786,7 +943,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
ForwardedHeaders = ForwardedHeaders.None
|
ForwardedHeaders = ForwardedHeaders.None
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var context = await server.SendAsync(c =>
|
var context = await server.SendAsync(c =>
|
||||||
{
|
{
|
||||||
|
|
@ -803,7 +964,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task PartiallyEnabledForwardsPartiallyChangesRequest()
|
public async Task PartiallyEnabledForwardsPartiallyChangesRequest()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
||||||
|
|
@ -811,7 +976,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
|
ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var context = await server.SendAsync(c =>
|
var context = await server.SendAsync(c =>
|
||||||
{
|
{
|
||||||
|
|
@ -852,12 +1021,20 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
options.KnownNetworks.Add(new IPNetwork(networkIp, prefixLength));
|
options.KnownNetworks.Add(new IPNetwork(networkIp, prefixLength));
|
||||||
}
|
}
|
||||||
|
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseForwardedHeaders(options);
|
app.UseForwardedHeaders(options);
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var context = await server.SendAsync(c =>
|
var context = await server.SendAsync(c =>
|
||||||
{
|
{
|
||||||
|
|
@ -872,7 +1049,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
[InlineData(2, "httpa, httpb, httpc", "httpb", "httpa")]
|
[InlineData(2, "httpa, httpb, httpc", "httpb", "httpa")]
|
||||||
public async Task ForwardersWithDIOptionsRunsOnce(int limit, string header, string expectedScheme, string remainingHeader)
|
public async Task ForwardersWithDIOptionsRunsOnce(int limit, string header, string expectedScheme, string remainingHeader)
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.Configure<ForwardedHeadersOptions>(options =>
|
services.Configure<ForwardedHeadersOptions>(options =>
|
||||||
|
|
@ -888,7 +1069,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
app.UseForwardedHeaders();
|
app.UseForwardedHeaders();
|
||||||
app.UseForwardedHeaders();
|
app.UseForwardedHeaders();
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var context = await server.SendAsync(c =>
|
var context = await server.SendAsync(c =>
|
||||||
{
|
{
|
||||||
|
|
@ -904,7 +1089,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
[InlineData(2, "httpa, httpb, httpc", "httpa", "")]
|
[InlineData(2, "httpa, httpb, httpc", "httpa", "")]
|
||||||
public async Task ForwardersWithDirectOptionsRunsTwice(int limit, string header, string expectedScheme, string remainingHeader)
|
public async Task ForwardersWithDirectOptionsRunsTwice(int limit, string header, string expectedScheme, string remainingHeader)
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
var options = new ForwardedHeadersOptions
|
var options = new ForwardedHeadersOptions
|
||||||
|
|
@ -917,7 +1106,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
app.UseForwardedHeaders(options);
|
app.UseForwardedHeaders(options);
|
||||||
app.UseForwardedHeaders(options);
|
app.UseForwardedHeaders(options);
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var context = await server.SendAsync(c =>
|
var context = await server.SendAsync(c =>
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.Builder;
|
using Microsoft.AspNetCore.Builder;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.TestHost;
|
using Microsoft.AspNetCore.TestHost;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.HttpOverrides
|
namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
|
|
@ -17,7 +18,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
public async Task XHttpMethodOverrideHeaderAvaiableChangesRequestMethod()
|
public async Task XHttpMethodOverrideHeaderAvaiableChangesRequestMethod()
|
||||||
{
|
{
|
||||||
var assertsExecuted = false;
|
var assertsExecuted = false;
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseHttpMethodOverride();
|
app.UseHttpMethodOverride();
|
||||||
|
|
@ -28,7 +33,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var req = new HttpRequestMessage(HttpMethod.Post, "");
|
var req = new HttpRequestMessage(HttpMethod.Post, "");
|
||||||
req.Headers.Add("X-Http-Method-Override", "DELETE");
|
req.Headers.Add("X-Http-Method-Override", "DELETE");
|
||||||
|
|
@ -40,7 +49,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
public async Task XHttpMethodOverrideHeaderUnavaiableDoesntChangeRequestMethod()
|
public async Task XHttpMethodOverrideHeaderUnavaiableDoesntChangeRequestMethod()
|
||||||
{
|
{
|
||||||
var assertsExecuted = false;
|
var assertsExecuted = false;
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseHttpMethodOverride();
|
app.UseHttpMethodOverride();
|
||||||
|
|
@ -51,7 +64,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var req = new HttpRequestMessage(HttpMethod.Post, "");
|
var req = new HttpRequestMessage(HttpMethod.Post, "");
|
||||||
await server.CreateClient().SendAsync(req);
|
await server.CreateClient().SendAsync(req);
|
||||||
|
|
@ -62,7 +79,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
public async Task XHttpMethodOverrideFromGetRequestDoesntChangeMethodType()
|
public async Task XHttpMethodOverrideFromGetRequestDoesntChangeMethodType()
|
||||||
{
|
{
|
||||||
var assertsExecuted = false;
|
var assertsExecuted = false;
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseHttpMethodOverride();
|
app.UseHttpMethodOverride();
|
||||||
|
|
@ -73,7 +94,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var req = new HttpRequestMessage(HttpMethod.Get, "");
|
var req = new HttpRequestMessage(HttpMethod.Get, "");
|
||||||
await server.CreateClient().SendAsync(req);
|
await server.CreateClient().SendAsync(req);
|
||||||
|
|
@ -85,7 +110,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
public async Task FormFieldAvailableChangesRequestMethod()
|
public async Task FormFieldAvailableChangesRequestMethod()
|
||||||
{
|
{
|
||||||
var assertsExecuted = false;
|
var assertsExecuted = false;
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseHttpMethodOverride(new HttpMethodOverrideOptions()
|
app.UseHttpMethodOverride(new HttpMethodOverrideOptions()
|
||||||
|
|
@ -99,7 +128,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var req = new HttpRequestMessage(HttpMethod.Post, "");
|
var req = new HttpRequestMessage(HttpMethod.Post, "");
|
||||||
req.Content = new FormUrlEncodedContent(new Dictionary<string, string>()
|
req.Content = new FormUrlEncodedContent(new Dictionary<string, string>()
|
||||||
|
|
@ -116,7 +149,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
public async Task FormFieldUnavailableDoesNotChangeRequestMethod()
|
public async Task FormFieldUnavailableDoesNotChangeRequestMethod()
|
||||||
{
|
{
|
||||||
var assertsExecuted = false;
|
var assertsExecuted = false;
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseHttpMethodOverride(new HttpMethodOverrideOptions()
|
app.UseHttpMethodOverride(new HttpMethodOverrideOptions()
|
||||||
|
|
@ -130,7 +167,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var req = new HttpRequestMessage(HttpMethod.Post, "");
|
var req = new HttpRequestMessage(HttpMethod.Post, "");
|
||||||
req.Content = new FormUrlEncodedContent(new Dictionary<string, string>()
|
req.Content = new FormUrlEncodedContent(new Dictionary<string, string>()
|
||||||
|
|
@ -146,7 +187,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
public async Task FormFieldEmptyDoesNotChangeRequestMethod()
|
public async Task FormFieldEmptyDoesNotChangeRequestMethod()
|
||||||
{
|
{
|
||||||
var assertsExecuted = false;
|
var assertsExecuted = false;
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseHttpMethodOverride(new HttpMethodOverrideOptions()
|
app.UseHttpMethodOverride(new HttpMethodOverrideOptions()
|
||||||
|
|
@ -160,7 +205,11 @@ namespace Microsoft.AspNetCore.HttpOverrides
|
||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var req = new HttpRequestMessage(HttpMethod.Post, "");
|
var req = new HttpRequestMessage(HttpMethod.Post, "");
|
||||||
req.Content = new FormUrlEncodedContent(new Dictionary<string, string>()
|
req.Content = new FormUrlEncodedContent(new Dictionary<string, string>()
|
||||||
|
|
|
||||||
|
|
@ -49,9 +49,12 @@ namespace HttpsSample
|
||||||
}
|
}
|
||||||
|
|
||||||
// Entry point for the application.
|
// Entry point for the application.
|
||||||
public static void Main(string[] args)
|
public static Task Main(string[] args)
|
||||||
{
|
{
|
||||||
var host = new WebHostBuilder()
|
var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
.UseKestrel(
|
.UseKestrel(
|
||||||
options =>
|
options =>
|
||||||
{
|
{
|
||||||
|
|
@ -69,10 +72,11 @@ namespace HttpsSample
|
||||||
factory.SetMinimumLevel(LogLevel.Debug);
|
factory.SetMinimumLevel(LogLevel.Debug);
|
||||||
factory.AddConsole();
|
factory.AddConsole();
|
||||||
})
|
})
|
||||||
.UseStartup<Startup>()
|
.UseStartup<Startup>();
|
||||||
|
})
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
host.Run();
|
return host.RunAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) .NET Foundation. All rights reserved.
|
// 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.
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
|
@ -12,6 +12,7 @@ using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.TestHost;
|
using Microsoft.AspNetCore.TestHost;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Microsoft.Extensions.Logging.Testing;
|
using Microsoft.Extensions.Logging.Testing;
|
||||||
using Microsoft.Net.Http.Headers;
|
using Microsoft.Net.Http.Headers;
|
||||||
|
|
@ -24,7 +25,11 @@ namespace Microsoft.AspNetCore.HttpsPolicy.Tests
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task SetOptionsWithDefault_SetsMaxAgeToCorrectValue()
|
public async Task SetOptionsWithDefault_SetsMaxAgeToCorrectValue()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
})
|
})
|
||||||
|
|
@ -36,8 +41,11 @@ namespace Microsoft.AspNetCore.HttpsPolicy.Tests
|
||||||
return context.Response.WriteAsync("Hello world");
|
return context.Response.WriteAsync("Hello world");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
client.BaseAddress = new Uri("https://example.com:5050");
|
client.BaseAddress = new Uri("https://example.com:5050");
|
||||||
|
|
||||||
|
|
@ -58,10 +66,15 @@ namespace Microsoft.AspNetCore.HttpsPolicy.Tests
|
||||||
[InlineData(50000, true, true, "max-age=50000; includeSubDomains; preload")]
|
[InlineData(50000, true, true, "max-age=50000; includeSubDomains; preload")]
|
||||||
public async Task SetOptionsThroughConfigure_SetsHeaderCorrectly(int maxAge, bool includeSubDomains, bool preload, string expected)
|
public async Task SetOptionsThroughConfigure_SetsHeaderCorrectly(int maxAge, bool includeSubDomains, bool preload, string expected)
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.Configure<HstsOptions>(options => {
|
services.Configure<HstsOptions>(options =>
|
||||||
|
{
|
||||||
options.Preload = preload;
|
options.Preload = preload;
|
||||||
options.IncludeSubDomains = includeSubDomains;
|
options.IncludeSubDomains = includeSubDomains;
|
||||||
options.MaxAge = TimeSpan.FromSeconds(maxAge);
|
options.MaxAge = TimeSpan.FromSeconds(maxAge);
|
||||||
|
|
@ -75,8 +88,11 @@ namespace Microsoft.AspNetCore.HttpsPolicy.Tests
|
||||||
return context.Response.WriteAsync("Hello world");
|
return context.Response.WriteAsync("Hello world");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
client.BaseAddress = new Uri("https://example.com:5050");
|
client.BaseAddress = new Uri("https://example.com:5050");
|
||||||
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
||||||
|
|
@ -96,10 +112,15 @@ namespace Microsoft.AspNetCore.HttpsPolicy.Tests
|
||||||
[InlineData(50000, true, true, "max-age=50000; includeSubDomains; preload")]
|
[InlineData(50000, true, true, "max-age=50000; includeSubDomains; preload")]
|
||||||
public async Task SetOptionsThroughHelper_SetsHeaderCorrectly(int maxAge, bool includeSubDomains, bool preload, string expected)
|
public async Task SetOptionsThroughHelper_SetsHeaderCorrectly(int maxAge, bool includeSubDomains, bool preload, string expected)
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddHsts(options => {
|
services.AddHsts(options =>
|
||||||
|
{
|
||||||
options.Preload = preload;
|
options.Preload = preload;
|
||||||
options.IncludeSubDomains = includeSubDomains;
|
options.IncludeSubDomains = includeSubDomains;
|
||||||
options.MaxAge = TimeSpan.FromSeconds(maxAge);
|
options.MaxAge = TimeSpan.FromSeconds(maxAge);
|
||||||
|
|
@ -113,8 +134,11 @@ namespace Microsoft.AspNetCore.HttpsPolicy.Tests
|
||||||
return context.Response.WriteAsync("Hello world");
|
return context.Response.WriteAsync("Hello world");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
client.BaseAddress = new Uri("https://example.com:5050");
|
client.BaseAddress = new Uri("https://example.com:5050");
|
||||||
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
||||||
|
|
@ -131,14 +155,18 @@ namespace Microsoft.AspNetCore.HttpsPolicy.Tests
|
||||||
[InlineData("LOCALHOST")]
|
[InlineData("LOCALHOST")]
|
||||||
[InlineData("127.0.0.1")]
|
[InlineData("127.0.0.1")]
|
||||||
[InlineData("[::1]")]
|
[InlineData("[::1]")]
|
||||||
public async Task DefaultExcludesCommonLocalhostDomains_DoesNotSetHstsHeader(string host)
|
public async Task DefaultExcludesCommonLocalhostDomains_DoesNotSetHstsHeader(string hostUrl)
|
||||||
{
|
{
|
||||||
var sink = new TestSink(
|
var sink = new TestSink(
|
||||||
TestSink.EnableWithTypeName<HstsMiddleware>,
|
TestSink.EnableWithTypeName<HstsMiddleware>,
|
||||||
TestSink.EnableWithTypeName<HstsMiddleware>);
|
TestSink.EnableWithTypeName<HstsMiddleware>);
|
||||||
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
||||||
|
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddSingleton<ILoggerFactory>(loggerFactory);
|
services.AddSingleton<ILoggerFactory>(loggerFactory);
|
||||||
|
|
@ -151,9 +179,13 @@ namespace Microsoft.AspNetCore.HttpsPolicy.Tests
|
||||||
return context.Response.WriteAsync("Hello world");
|
return context.Response.WriteAsync("Hello world");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
client.BaseAddress = new Uri($"https://{host}:5050");
|
client.BaseAddress = new Uri($"https://{hostUrl}:5050");
|
||||||
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
||||||
|
|
||||||
var response = await client.SendAsync(request);
|
var response = await client.SendAsync(request);
|
||||||
|
|
@ -166,21 +198,25 @@ namespace Microsoft.AspNetCore.HttpsPolicy.Tests
|
||||||
Assert.Single(logMessages);
|
Assert.Single(logMessages);
|
||||||
var message = logMessages.Single();
|
var message = logMessages.Single();
|
||||||
Assert.Equal(LogLevel.Debug, message.LogLevel);
|
Assert.Equal(LogLevel.Debug, message.LogLevel);
|
||||||
Assert.Equal($"The host '{host}' is excluded. Skipping HSTS header.", message.State.ToString(), ignoreCase: true);
|
Assert.Equal($"The host '{hostUrl}' is excluded. Skipping HSTS header.", message.State.ToString(), ignoreCase: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
[InlineData("localhost")]
|
[InlineData("localhost")]
|
||||||
[InlineData("127.0.0.1")]
|
[InlineData("127.0.0.1")]
|
||||||
[InlineData("[::1]")]
|
[InlineData("[::1]")]
|
||||||
public async Task AllowLocalhostDomainsIfListIsReset_SetHstsHeader(string host)
|
public async Task AllowLocalhostDomainsIfListIsReset_SetHstsHeader(string hostUrl)
|
||||||
{
|
{
|
||||||
var sink = new TestSink(
|
var sink = new TestSink(
|
||||||
TestSink.EnableWithTypeName<HstsMiddleware>,
|
TestSink.EnableWithTypeName<HstsMiddleware>,
|
||||||
TestSink.EnableWithTypeName<HstsMiddleware>);
|
TestSink.EnableWithTypeName<HstsMiddleware>);
|
||||||
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
||||||
|
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddSingleton<ILoggerFactory>(loggerFactory);
|
services.AddSingleton<ILoggerFactory>(loggerFactory);
|
||||||
|
|
@ -198,9 +234,13 @@ namespace Microsoft.AspNetCore.HttpsPolicy.Tests
|
||||||
return context.Response.WriteAsync("Hello world");
|
return context.Response.WriteAsync("Hello world");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
client.BaseAddress = new Uri($"https://{host}:5050");
|
client.BaseAddress = new Uri($"https://{hostUrl}:5050");
|
||||||
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
||||||
|
|
||||||
var response = await client.SendAsync(request);
|
var response = await client.SendAsync(request);
|
||||||
|
|
@ -220,20 +260,25 @@ namespace Microsoft.AspNetCore.HttpsPolicy.Tests
|
||||||
[InlineData("example.com")]
|
[InlineData("example.com")]
|
||||||
[InlineData("Example.com")]
|
[InlineData("Example.com")]
|
||||||
[InlineData("EXAMPLE.COM")]
|
[InlineData("EXAMPLE.COM")]
|
||||||
public async Task AddExcludedDomains_DoesNotAddHstsHeader(string host)
|
public async Task AddExcludedDomains_DoesNotAddHstsHeader(string hostUrl)
|
||||||
{
|
{
|
||||||
var sink = new TestSink(
|
var sink = new TestSink(
|
||||||
TestSink.EnableWithTypeName<HstsMiddleware>,
|
TestSink.EnableWithTypeName<HstsMiddleware>,
|
||||||
TestSink.EnableWithTypeName<HstsMiddleware>);
|
TestSink.EnableWithTypeName<HstsMiddleware>);
|
||||||
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
||||||
|
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddSingleton<ILoggerFactory>(loggerFactory);
|
services.AddSingleton<ILoggerFactory>(loggerFactory);
|
||||||
|
|
||||||
services.AddHsts(options => {
|
services.AddHsts(options =>
|
||||||
options.ExcludedHosts.Add(host);
|
{
|
||||||
|
options.ExcludedHosts.Add(hostUrl);
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
|
|
@ -244,9 +289,13 @@ namespace Microsoft.AspNetCore.HttpsPolicy.Tests
|
||||||
return context.Response.WriteAsync("Hello world");
|
return context.Response.WriteAsync("Hello world");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
client.BaseAddress = new Uri($"https://{host}:5050");
|
client.BaseAddress = new Uri($"https://{hostUrl}:5050");
|
||||||
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
||||||
|
|
||||||
var response = await client.SendAsync(request);
|
var response = await client.SendAsync(request);
|
||||||
|
|
@ -259,7 +308,7 @@ namespace Microsoft.AspNetCore.HttpsPolicy.Tests
|
||||||
Assert.Single(logMessages);
|
Assert.Single(logMessages);
|
||||||
var message = logMessages.Single();
|
var message = logMessages.Single();
|
||||||
Assert.Equal(LogLevel.Debug, message.LogLevel);
|
Assert.Equal(LogLevel.Debug, message.LogLevel);
|
||||||
Assert.Equal($"The host '{host}' is excluded. Skipping HSTS header.", message.State.ToString(), ignoreCase: true);
|
Assert.Equal($"The host '{hostUrl}' is excluded. Skipping HSTS header.", message.State.ToString(), ignoreCase: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
@ -270,7 +319,11 @@ namespace Microsoft.AspNetCore.HttpsPolicy.Tests
|
||||||
TestSink.EnableWithTypeName<HstsMiddleware>);
|
TestSink.EnableWithTypeName<HstsMiddleware>);
|
||||||
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
||||||
|
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddSingleton<ILoggerFactory>(loggerFactory);
|
services.AddSingleton<ILoggerFactory>(loggerFactory);
|
||||||
|
|
@ -283,7 +336,11 @@ namespace Microsoft.AspNetCore.HttpsPolicy.Tests
|
||||||
return context.Response.WriteAsync("Hello world");
|
return context.Response.WriteAsync("Hello world");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
client.BaseAddress = new Uri("http://example.com:5050");
|
client.BaseAddress = new Uri("http://example.com:5050");
|
||||||
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
||||||
|
|
@ -309,7 +366,11 @@ namespace Microsoft.AspNetCore.HttpsPolicy.Tests
|
||||||
TestSink.EnableWithTypeName<HstsMiddleware>);
|
TestSink.EnableWithTypeName<HstsMiddleware>);
|
||||||
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
||||||
|
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddSingleton<ILoggerFactory>(loggerFactory);
|
services.AddSingleton<ILoggerFactory>(loggerFactory);
|
||||||
|
|
@ -322,7 +383,10 @@ namespace Microsoft.AspNetCore.HttpsPolicy.Tests
|
||||||
return context.Response.WriteAsync("Hello world");
|
return context.Response.WriteAsync("Hello world");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
client.BaseAddress = new Uri("https://example.com:5050");
|
client.BaseAddress = new Uri("https://example.com:5050");
|
||||||
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) .NET Foundation. All rights reserved.
|
// 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.
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
|
@ -13,6 +13,7 @@ using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Http.Features;
|
using Microsoft.AspNetCore.Http.Features;
|
||||||
using Microsoft.AspNetCore.TestHost;
|
using Microsoft.AspNetCore.TestHost;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Microsoft.Net.Http.Headers;
|
using Microsoft.Net.Http.Headers;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
|
|
@ -30,8 +31,11 @@ namespace Microsoft.AspNetCore.HttpsPolicy.Tests
|
||||||
[InlineData(302, 5050, 2592000, true, true, "max-age=2592000; includeSubDomains; preload", "https://localhost:5050/")]
|
[InlineData(302, 5050, 2592000, true, true, "max-age=2592000; includeSubDomains; preload", "https://localhost:5050/")]
|
||||||
public async Task SetsBothHstsAndHttpsRedirection_RedirectOnFirstRequest_HstsOnSecondRequest(int statusCode, int? tlsPort, int maxAge, bool includeSubDomains, bool preload, string expectedHstsHeader, string expectedUrl)
|
public async Task SetsBothHstsAndHttpsRedirection_RedirectOnFirstRequest_HstsOnSecondRequest(int statusCode, int? tlsPort, int maxAge, bool includeSubDomains, bool preload, string expectedHstsHeader, string expectedUrl)
|
||||||
{
|
{
|
||||||
|
using var host = new HostBuilder()
|
||||||
var builder = new WebHostBuilder()
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.Configure<HttpsRedirectionOptions>(options =>
|
services.Configure<HttpsRedirectionOptions>(options =>
|
||||||
|
|
@ -56,10 +60,12 @@ namespace Microsoft.AspNetCore.HttpsPolicy.Tests
|
||||||
return context.Response.WriteAsync("Hello world");
|
return context.Response.WriteAsync("Hello world");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var featureCollection = new FeatureCollection();
|
await host.StartAsync();
|
||||||
featureCollection.Set<IServerAddressesFeature>(new ServerAddressesFeature());
|
|
||||||
var server = new TestServer(builder, featureCollection);
|
var server = host.GetTestServer();
|
||||||
|
server.Features.Set<IServerAddressesFeature>(new ServerAddressesFeature());
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) .NET Foundation. All rights reserved.
|
// 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.
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
|
@ -8,11 +8,13 @@ using System.Net.Http;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.Builder;
|
using Microsoft.AspNetCore.Builder;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
|
using Microsoft.AspNetCore.Hosting.Server;
|
||||||
using Microsoft.AspNetCore.Hosting.Server.Features;
|
using Microsoft.AspNetCore.Hosting.Server.Features;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Http.Features;
|
using Microsoft.AspNetCore.Http.Features;
|
||||||
using Microsoft.AspNetCore.TestHost;
|
using Microsoft.AspNetCore.TestHost;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Microsoft.Extensions.Logging.Testing;
|
using Microsoft.Extensions.Logging.Testing;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
@ -28,7 +30,11 @@ namespace Microsoft.AspNetCore.HttpsPolicy.Tests
|
||||||
TestSink.EnableWithTypeName<HttpsRedirectionMiddleware>,
|
TestSink.EnableWithTypeName<HttpsRedirectionMiddleware>,
|
||||||
TestSink.EnableWithTypeName<HttpsRedirectionMiddleware>);
|
TestSink.EnableWithTypeName<HttpsRedirectionMiddleware>);
|
||||||
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddSingleton<ILoggerFactory>(loggerFactory);
|
services.AddSingleton<ILoggerFactory>(loggerFactory);
|
||||||
|
|
@ -41,8 +47,11 @@ namespace Microsoft.AspNetCore.HttpsPolicy.Tests
|
||||||
return context.Response.WriteAsync("Hello world");
|
return context.Response.WriteAsync("Hello world");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
||||||
|
|
@ -71,7 +80,11 @@ namespace Microsoft.AspNetCore.HttpsPolicy.Tests
|
||||||
TestSink.EnableWithTypeName<HttpsRedirectionMiddleware>,
|
TestSink.EnableWithTypeName<HttpsRedirectionMiddleware>,
|
||||||
TestSink.EnableWithTypeName<HttpsRedirectionMiddleware>);
|
TestSink.EnableWithTypeName<HttpsRedirectionMiddleware>);
|
||||||
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddSingleton<ILoggerFactory>(loggerFactory);
|
services.AddSingleton<ILoggerFactory>(loggerFactory);
|
||||||
|
|
@ -89,8 +102,11 @@ namespace Microsoft.AspNetCore.HttpsPolicy.Tests
|
||||||
return context.Response.WriteAsync("Hello world");
|
return context.Response.WriteAsync("Hello world");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
||||||
|
|
@ -120,7 +136,11 @@ namespace Microsoft.AspNetCore.HttpsPolicy.Tests
|
||||||
TestSink.EnableWithTypeName<HttpsRedirectionMiddleware>,
|
TestSink.EnableWithTypeName<HttpsRedirectionMiddleware>,
|
||||||
TestSink.EnableWithTypeName<HttpsRedirectionMiddleware>);
|
TestSink.EnableWithTypeName<HttpsRedirectionMiddleware>);
|
||||||
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddSingleton<ILoggerFactory>(loggerFactory);
|
services.AddSingleton<ILoggerFactory>(loggerFactory);
|
||||||
|
|
@ -138,8 +158,11 @@ namespace Microsoft.AspNetCore.HttpsPolicy.Tests
|
||||||
return context.Response.WriteAsync("Hello world");
|
return context.Response.WriteAsync("Hello world");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
||||||
|
|
@ -169,7 +192,11 @@ namespace Microsoft.AspNetCore.HttpsPolicy.Tests
|
||||||
public async Task SetHttpsPortEnvironmentVariableAndServerFeature_ReturnsCorrectStatusCodeOnResponse(
|
public async Task SetHttpsPortEnvironmentVariableAndServerFeature_ReturnsCorrectStatusCodeOnResponse(
|
||||||
int? optionsHttpsPort, string configHttpsPort, string serverAddressFeatureUrl, string expectedUrl)
|
int? optionsHttpsPort, string configHttpsPort, string serverAddressFeatureUrl, string expectedUrl)
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddHttpsRedirection(options =>
|
services.AddHttpsRedirection(options =>
|
||||||
|
|
@ -186,17 +213,18 @@ namespace Microsoft.AspNetCore.HttpsPolicy.Tests
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
builder.UseSetting("HTTPS_PORT", configHttpsPort);
|
webHostBuilder.UseSetting("HTTPS_PORT", configHttpsPort);
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var featureCollection = new FeatureCollection();
|
var server = host.GetTestServer();
|
||||||
featureCollection.Set<IServerAddressesFeature>(new ServerAddressesFeature());
|
server.Features.Set<IServerAddressesFeature>(new ServerAddressesFeature());
|
||||||
|
|
||||||
var server = new TestServer(builder, featureCollection);
|
|
||||||
if (serverAddressFeatureUrl != null)
|
if (serverAddressFeatureUrl != null)
|
||||||
{
|
{
|
||||||
server.Features.Get<IServerAddressesFeature>().Addresses.Add(serverAddressFeatureUrl);
|
server.Features.Get<IServerAddressesFeature>().Addresses.Add(serverAddressFeatureUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
||||||
|
|
@ -213,7 +241,11 @@ namespace Microsoft.AspNetCore.HttpsPolicy.Tests
|
||||||
TestSink.EnableWithTypeName<HttpsRedirectionMiddleware>,
|
TestSink.EnableWithTypeName<HttpsRedirectionMiddleware>,
|
||||||
TestSink.EnableWithTypeName<HttpsRedirectionMiddleware>);
|
TestSink.EnableWithTypeName<HttpsRedirectionMiddleware>);
|
||||||
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddSingleton<ILoggerFactory>(loggerFactory);
|
services.AddSingleton<ILoggerFactory>(loggerFactory);
|
||||||
|
|
@ -226,12 +258,13 @@ namespace Microsoft.AspNetCore.HttpsPolicy.Tests
|
||||||
return context.Response.WriteAsync("Hello world");
|
return context.Response.WriteAsync("Hello world");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var featureCollection = new FeatureCollection();
|
var server = host.GetTestServer();
|
||||||
featureCollection.Set<IServerAddressesFeature>(new ServerAddressesFeature());
|
server.Features.Set<IServerAddressesFeature>(new ServerAddressesFeature());
|
||||||
var server = new TestServer(builder, featureCollection);
|
|
||||||
|
|
||||||
server.Features.Get<IServerAddressesFeature>().Addresses.Add("https://localhost:5050");
|
server.Features.Get<IServerAddressesFeature>().Addresses.Add("https://localhost:5050");
|
||||||
|
await host.StartAsync();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
||||||
|
|
@ -259,7 +292,11 @@ namespace Microsoft.AspNetCore.HttpsPolicy.Tests
|
||||||
TestSink.EnableWithTypeName<HttpsRedirectionMiddleware>,
|
TestSink.EnableWithTypeName<HttpsRedirectionMiddleware>,
|
||||||
TestSink.EnableWithTypeName<HttpsRedirectionMiddleware>);
|
TestSink.EnableWithTypeName<HttpsRedirectionMiddleware>);
|
||||||
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddSingleton<ILoggerFactory>(loggerFactory);
|
services.AddSingleton<ILoggerFactory>(loggerFactory);
|
||||||
|
|
@ -272,14 +309,16 @@ namespace Microsoft.AspNetCore.HttpsPolicy.Tests
|
||||||
return context.Response.WriteAsync("Hello world");
|
return context.Response.WriteAsync("Hello world");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var featureCollection = new FeatureCollection();
|
var server = host.GetTestServer();
|
||||||
featureCollection.Set<IServerAddressesFeature>(new ServerAddressesFeature());
|
server.Features.Set<IServerAddressesFeature>(new ServerAddressesFeature());
|
||||||
var server = new TestServer(builder, featureCollection);
|
|
||||||
|
|
||||||
server.Features.Get<IServerAddressesFeature>().Addresses.Add("https://localhost:5050");
|
server.Features.Get<IServerAddressesFeature>().Addresses.Add("https://localhost:5050");
|
||||||
server.Features.Get<IServerAddressesFeature>().Addresses.Add("https://localhost:5051");
|
server.Features.Get<IServerAddressesFeature>().Addresses.Add("https://localhost:5051");
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
||||||
|
|
@ -303,7 +342,11 @@ namespace Microsoft.AspNetCore.HttpsPolicy.Tests
|
||||||
TestSink.EnableWithTypeName<HttpsRedirectionMiddleware>,
|
TestSink.EnableWithTypeName<HttpsRedirectionMiddleware>,
|
||||||
TestSink.EnableWithTypeName<HttpsRedirectionMiddleware>);
|
TestSink.EnableWithTypeName<HttpsRedirectionMiddleware>);
|
||||||
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddSingleton<ILoggerFactory>(loggerFactory);
|
services.AddSingleton<ILoggerFactory>(loggerFactory);
|
||||||
|
|
@ -316,14 +359,15 @@ namespace Microsoft.AspNetCore.HttpsPolicy.Tests
|
||||||
return context.Response.WriteAsync("Hello world");
|
return context.Response.WriteAsync("Hello world");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var featureCollection = new FeatureCollection();
|
var server = host.GetTestServer();
|
||||||
featureCollection.Set<IServerAddressesFeature>(new ServerAddressesFeature());
|
server.Features.Set<IServerAddressesFeature>(new ServerAddressesFeature());
|
||||||
var server = new TestServer(builder, featureCollection);
|
|
||||||
|
|
||||||
server.Features.Get<IServerAddressesFeature>().Addresses.Add("https://localhost:5050");
|
server.Features.Get<IServerAddressesFeature>().Addresses.Add("https://localhost:5050");
|
||||||
server.Features.Get<IServerAddressesFeature>().Addresses.Add("https://example.com:5050");
|
server.Features.Get<IServerAddressesFeature>().Addresses.Add("https://example.com:5050");
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
||||||
|
|
@ -351,7 +395,11 @@ namespace Microsoft.AspNetCore.HttpsPolicy.Tests
|
||||||
TestSink.EnableWithTypeName<HttpsRedirectionMiddleware>,
|
TestSink.EnableWithTypeName<HttpsRedirectionMiddleware>,
|
||||||
TestSink.EnableWithTypeName<HttpsRedirectionMiddleware>);
|
TestSink.EnableWithTypeName<HttpsRedirectionMiddleware>);
|
||||||
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddSingleton<ILoggerFactory>(loggerFactory);
|
services.AddSingleton<ILoggerFactory>(loggerFactory);
|
||||||
|
|
@ -364,8 +412,11 @@ namespace Microsoft.AspNetCore.HttpsPolicy.Tests
|
||||||
return context.Response.WriteAsync("Hello world");
|
return context.Response.WriteAsync("Hello world");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
||||||
var response = await client.SendAsync(request);
|
var response = await client.SendAsync(request);
|
||||||
|
|
@ -386,7 +437,11 @@ namespace Microsoft.AspNetCore.HttpsPolicy.Tests
|
||||||
TestSink.EnableWithTypeName<HttpsRedirectionMiddleware>,
|
TestSink.EnableWithTypeName<HttpsRedirectionMiddleware>,
|
||||||
TestSink.EnableWithTypeName<HttpsRedirectionMiddleware>);
|
TestSink.EnableWithTypeName<HttpsRedirectionMiddleware>);
|
||||||
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddSingleton<ILoggerFactory>(loggerFactory);
|
services.AddSingleton<ILoggerFactory>(loggerFactory);
|
||||||
|
|
@ -399,10 +454,12 @@ namespace Microsoft.AspNetCore.HttpsPolicy.Tests
|
||||||
return context.Response.WriteAsync("Hello world");
|
return context.Response.WriteAsync("Hello world");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var featureCollection = new FeatureCollection();
|
var server = host.GetTestServer();
|
||||||
featureCollection.Set<IServerAddressesFeature>(null);
|
server.Features.Set<IServerAddressesFeature>(null);
|
||||||
var server = new TestServer(builder, featureCollection);
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) .NET Foundation. All rights reserved.
|
// 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.
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
@ -11,6 +11,7 @@ using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Routing;
|
using Microsoft.AspNetCore.Routing;
|
||||||
using Microsoft.AspNetCore.TestHost;
|
using Microsoft.AspNetCore.TestHost;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Localization.Routing
|
namespace Microsoft.AspNetCore.Localization.Routing
|
||||||
|
|
@ -30,7 +31,11 @@ namespace Microsoft.AspNetCore.Localization.Routing
|
||||||
string expectedCulture,
|
string expectedCulture,
|
||||||
string expectedUICulture)
|
string expectedUICulture)
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRouter(routes =>
|
app.UseRouter(routes =>
|
||||||
|
|
@ -72,8 +77,11 @@ namespace Microsoft.AspNetCore.Localization.Routing
|
||||||
{
|
{
|
||||||
services.AddRouting();
|
services.AddRouting();
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync(requestUrl);
|
var response = await client.GetAsync(requestUrl);
|
||||||
|
|
@ -87,7 +95,11 @@ namespace Microsoft.AspNetCore.Localization.Routing
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task GetDefaultCultureInfo_IfCultureKeysAreMissing()
|
public async Task GetDefaultCultureInfo_IfCultureKeysAreMissing()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
var options = new RequestLocalizationOptions
|
var options = new RequestLocalizationOptions
|
||||||
|
|
@ -111,8 +123,11 @@ namespace Microsoft.AspNetCore.Localization.Routing
|
||||||
$"{requestCulture.Culture.Name},{requestCulture.UICulture.Name}");
|
$"{requestCulture.Culture.Name},{requestCulture.UICulture.Name}");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync("/page");
|
var response = await client.GetAsync("/page");
|
||||||
|
|
@ -135,7 +150,11 @@ namespace Microsoft.AspNetCore.Localization.Routing
|
||||||
string expectedCulture,
|
string expectedCulture,
|
||||||
string expectedUICulture)
|
string expectedUICulture)
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRouter(routes =>
|
app.UseRouter(routes =>
|
||||||
|
|
@ -180,8 +199,11 @@ namespace Microsoft.AspNetCore.Localization.Routing
|
||||||
{
|
{
|
||||||
services.AddRouting();
|
services.AddRouting();
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync(requestUrl);
|
var response = await client.GetAsync(requestUrl);
|
||||||
|
|
|
||||||
|
|
@ -3,12 +3,14 @@
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.Builder;
|
using Microsoft.AspNetCore.Builder;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Localization;
|
using Microsoft.AspNetCore.Localization;
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Microsoft.Extensions.Localization;
|
using Microsoft.Extensions.Localization;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
|
|
@ -134,21 +136,25 @@ $@"<!doctype html>
|
||||||
await context.Response.WriteAsync($" <option value=\"pp-NOTREAL\">Made-up (Not a real anything)</option>");
|
await context.Response.WriteAsync($" <option value=\"pp-NOTREAL\">Made-up (Not a real anything)</option>");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Main(string[] args)
|
public static Task Main(string[] args)
|
||||||
{
|
{
|
||||||
var config = new ConfigurationBuilder()
|
var config = new ConfigurationBuilder()
|
||||||
.AddCommandLine(args)
|
.AddCommandLine(args)
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
var host = new WebHostBuilder()
|
var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
.ConfigureLogging(factory => factory.AddConsole())
|
.ConfigureLogging(factory => factory.AddConsole())
|
||||||
.UseKestrel()
|
.UseKestrel()
|
||||||
.UseConfiguration(config)
|
.UseConfiguration(config)
|
||||||
.UseIISIntegration()
|
.UseIISIntegration()
|
||||||
.UseStartup<Startup>()
|
.UseStartup<Startup>();
|
||||||
|
})
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
host.Run();
|
return host.RunAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ using System.Threading.Tasks;
|
||||||
using LocalizationSample;
|
using LocalizationSample;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.TestHost;
|
using Microsoft.AspNetCore.TestHost;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Localization.FunctionalTests
|
namespace Microsoft.AspNetCore.Localization.FunctionalTests
|
||||||
|
|
@ -19,8 +20,17 @@ namespace Microsoft.AspNetCore.Localization.FunctionalTests
|
||||||
public async Task LocalizationSampleSmokeTest()
|
public async Task LocalizationSampleSmokeTest()
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var webHostBuilder = new WebHostBuilder().UseStartup(typeof(Startup));
|
using var host = new HostBuilder()
|
||||||
var testHost = new TestServer(webHostBuilder);
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
|
.UseStartup(typeof(Startup));
|
||||||
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var testHost = host.GetTestServer();
|
||||||
var locale = "fr-FR";
|
var locale = "fr-FR";
|
||||||
var client = testHost.CreateClient();
|
var client = testHost.CreateClient();
|
||||||
var request = new HttpRequestMessage(HttpMethod.Get, "My/Resources");
|
var request = new HttpRequestMessage(HttpMethod.Get, "My/Resources");
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ using System.Threading.Tasks;
|
||||||
using LocalizationWebsite;
|
using LocalizationWebsite;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.TestHost;
|
using Microsoft.AspNetCore.TestHost;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Localization.FunctionalTests
|
namespace Microsoft.AspNetCore.Localization.FunctionalTests
|
||||||
|
|
@ -97,8 +98,17 @@ namespace Microsoft.AspNetCore.Localization.FunctionalTests
|
||||||
|
|
||||||
private async Task RunTest(Type startupType, string culture, string expected)
|
private async Task RunTest(Type startupType, string culture, string expected)
|
||||||
{
|
{
|
||||||
var webHostBuilder = new WebHostBuilder().UseStartup(startupType);
|
using var host = new HostBuilder()
|
||||||
var testHost = new TestServer(webHostBuilder);
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
|
.UseStartup(startupType);
|
||||||
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var testHost = host.GetTestServer();
|
||||||
|
|
||||||
var client = testHost.CreateClient();
|
var client = testHost.CreateClient();
|
||||||
var request = new HttpRequestMessage();
|
var request = new HttpRequestMessage();
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ using Microsoft.AspNetCore.Builder;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Localization;
|
using Microsoft.AspNetCore.Localization;
|
||||||
using Microsoft.AspNetCore.TestHost;
|
using Microsoft.AspNetCore.TestHost;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
namespace Microsoft.Extensions.Localization
|
namespace Microsoft.Extensions.Localization
|
||||||
|
|
@ -17,7 +18,11 @@ namespace Microsoft.Extensions.Localization
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task GetFallbackLanguage_ReturnsFirstNonNullCultureFromSupportedCultureList()
|
public async Task GetFallbackLanguage_ReturnsFirstNonNullCultureFromSupportedCultureList()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRequestLocalization(new RequestLocalizationOptions
|
app.UseRequestLocalization(new RequestLocalizationOptions
|
||||||
|
|
@ -37,8 +42,11 @@ namespace Microsoft.Extensions.Localization
|
||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
client.DefaultRequestHeaders.AcceptLanguage.ParseAdd("jp,ar-SA,en-US");
|
client.DefaultRequestHeaders.AcceptLanguage.ParseAdd("jp,ar-SA,en-US");
|
||||||
|
|
@ -51,7 +59,11 @@ namespace Microsoft.Extensions.Localization
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task GetFallbackLanguage_ReturnsFromSupportedCulture_AcceptLanguageListContainsSupportedCultures()
|
public async Task GetFallbackLanguage_ReturnsFromSupportedCulture_AcceptLanguageListContainsSupportedCultures()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRequestLocalization(new RequestLocalizationOptions
|
app.UseRequestLocalization(new RequestLocalizationOptions
|
||||||
|
|
@ -71,8 +83,11 @@ namespace Microsoft.Extensions.Localization
|
||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
client.DefaultRequestHeaders.AcceptLanguage.ParseAdd("en-GB,ar-SA,en-US");
|
client.DefaultRequestHeaders.AcceptLanguage.ParseAdd("en-GB,ar-SA,en-US");
|
||||||
|
|
@ -84,7 +99,11 @@ namespace Microsoft.Extensions.Localization
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task GetFallbackLanguage_ReturnsDefault_AcceptLanguageListDoesnotContainSupportedCultures()
|
public async Task GetFallbackLanguage_ReturnsDefault_AcceptLanguageListDoesnotContainSupportedCultures()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRequestLocalization(new RequestLocalizationOptions
|
app.UseRequestLocalization(new RequestLocalizationOptions
|
||||||
|
|
@ -104,8 +123,11 @@ namespace Microsoft.Extensions.Localization
|
||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
client.DefaultRequestHeaders.AcceptLanguage.ParseAdd("en-GB,ar-MA,en-US");
|
client.DefaultRequestHeaders.AcceptLanguage.ParseAdd("en-GB,ar-MA,en-US");
|
||||||
|
|
@ -118,7 +140,11 @@ namespace Microsoft.Extensions.Localization
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task OmitDefaultRequestCultureShouldNotThrowNullReferenceException_And_ShouldGetTheRightCulture()
|
public async Task OmitDefaultRequestCultureShouldNotThrowNullReferenceException_And_ShouldGetTheRightCulture()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRequestLocalization(new RequestLocalizationOptions
|
app.UseRequestLocalization(new RequestLocalizationOptions
|
||||||
|
|
@ -143,8 +169,11 @@ namespace Microsoft.Extensions.Localization
|
||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
client.DefaultRequestHeaders.AcceptLanguage.ParseAdd("en-GB,ar-YE,en-US");
|
client.DefaultRequestHeaders.AcceptLanguage.ParseAdd("en-GB,ar-YE,en-US");
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Localization;
|
using Microsoft.AspNetCore.Localization;
|
||||||
using Microsoft.AspNetCore.TestHost;
|
using Microsoft.AspNetCore.TestHost;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Microsoft.Extensions.Logging.Testing;
|
using Microsoft.Extensions.Logging.Testing;
|
||||||
using Microsoft.Net.Http.Headers;
|
using Microsoft.Net.Http.Headers;
|
||||||
|
|
@ -21,7 +22,11 @@ namespace Microsoft.Extensions.Localization
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task GetCultureInfoFromPersistentCookie()
|
public async Task GetCultureInfoFromPersistentCookie()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
var options = new RequestLocalizationOptions
|
var options = new RequestLocalizationOptions
|
||||||
|
|
@ -51,8 +56,11 @@ namespace Microsoft.Extensions.Localization
|
||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var culture = new CultureInfo("ar-SA");
|
var culture = new CultureInfo("ar-SA");
|
||||||
|
|
@ -67,7 +75,11 @@ namespace Microsoft.Extensions.Localization
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task GetDefaultCultureInfoIfCultureKeysAreMissingOrInvalid()
|
public async Task GetDefaultCultureInfoIfCultureKeysAreMissingOrInvalid()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
var options = new RequestLocalizationOptions
|
var options = new RequestLocalizationOptions
|
||||||
|
|
@ -96,8 +108,11 @@ namespace Microsoft.Extensions.Localization
|
||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
|
|
@ -109,7 +124,11 @@ namespace Microsoft.Extensions.Localization
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task GetDefaultCultureInfoIfCookieDoesNotExist()
|
public async Task GetDefaultCultureInfoIfCookieDoesNotExist()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
var options = new RequestLocalizationOptions
|
var options = new RequestLocalizationOptions
|
||||||
|
|
@ -138,8 +157,11 @@ namespace Microsoft.Extensions.Localization
|
||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync(string.Empty);
|
var response = await client.GetAsync(string.Empty);
|
||||||
|
|
@ -153,7 +175,11 @@ namespace Microsoft.Extensions.Localization
|
||||||
TestSink.EnableWithTypeName<RequestLocalizationMiddleware>,
|
TestSink.EnableWithTypeName<RequestLocalizationMiddleware>,
|
||||||
TestSink.EnableWithTypeName<RequestLocalizationMiddleware>);
|
TestSink.EnableWithTypeName<RequestLocalizationMiddleware>);
|
||||||
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
var options = new RequestLocalizationOptions
|
var options = new RequestLocalizationOptions
|
||||||
|
|
@ -180,8 +206,11 @@ namespace Microsoft.Extensions.Localization
|
||||||
{
|
{
|
||||||
services.AddSingleton(typeof(ILoggerFactory), loggerFactory);
|
services.AddSingleton(typeof(ILoggerFactory), loggerFactory);
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var culture = "??";
|
var culture = "??";
|
||||||
|
|
@ -206,7 +235,11 @@ namespace Microsoft.Extensions.Localization
|
||||||
TestSink.EnableWithTypeName<RequestLocalizationMiddleware>,
|
TestSink.EnableWithTypeName<RequestLocalizationMiddleware>,
|
||||||
TestSink.EnableWithTypeName<RequestLocalizationMiddleware>);
|
TestSink.EnableWithTypeName<RequestLocalizationMiddleware>);
|
||||||
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
var options = new RequestLocalizationOptions
|
var options = new RequestLocalizationOptions
|
||||||
|
|
@ -233,8 +266,11 @@ namespace Microsoft.Extensions.Localization
|
||||||
{
|
{
|
||||||
services.AddSingleton(typeof(ILoggerFactory), loggerFactory);
|
services.AddSingleton(typeof(ILoggerFactory), loggerFactory);
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var culture = "ar-YE";
|
var culture = "ar-YE";
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Localization;
|
using Microsoft.AspNetCore.Localization;
|
||||||
using Microsoft.AspNetCore.TestHost;
|
using Microsoft.AspNetCore.TestHost;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
namespace Microsoft.Extensions.Localization
|
namespace Microsoft.Extensions.Localization
|
||||||
|
|
@ -19,7 +20,11 @@ namespace Microsoft.Extensions.Localization
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task CustomRequestCultureProviderThatGetsCultureInfoFromUrl()
|
public async Task CustomRequestCultureProviderThatGetsCultureInfoFromUrl()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
var options = new RequestLocalizationOptions
|
var options = new RequestLocalizationOptions
|
||||||
|
|
@ -49,8 +54,11 @@ namespace Microsoft.Extensions.Localization
|
||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync("/ar/page");
|
var response = await client.GetAsync("/ar/page");
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ using Microsoft.AspNetCore.Builder;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Localization;
|
using Microsoft.AspNetCore.Localization;
|
||||||
using Microsoft.AspNetCore.TestHost;
|
using Microsoft.AspNetCore.TestHost;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
namespace Microsoft.Extensions.Localization
|
namespace Microsoft.Extensions.Localization
|
||||||
|
|
@ -17,7 +18,11 @@ namespace Microsoft.Extensions.Localization
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task GetCultureInfoFromQueryString()
|
public async Task GetCultureInfoFromQueryString()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRequestLocalization(new RequestLocalizationOptions
|
app.UseRequestLocalization(new RequestLocalizationOptions
|
||||||
|
|
@ -41,8 +46,11 @@ namespace Microsoft.Extensions.Localization
|
||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync("/page?culture=ar-SA&ui-culture=ar-YE");
|
var response = await client.GetAsync("/page?culture=ar-SA&ui-culture=ar-YE");
|
||||||
|
|
@ -52,7 +60,11 @@ namespace Microsoft.Extensions.Localization
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task GetDefaultCultureInfoIfCultureKeysAreMissing()
|
public async Task GetDefaultCultureInfoIfCultureKeysAreMissing()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRequestLocalization(new RequestLocalizationOptions
|
app.UseRequestLocalization(new RequestLocalizationOptions
|
||||||
|
|
@ -68,8 +80,11 @@ namespace Microsoft.Extensions.Localization
|
||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync("/page");
|
var response = await client.GetAsync("/page");
|
||||||
|
|
@ -79,7 +94,11 @@ namespace Microsoft.Extensions.Localization
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task GetDefaultCultureInfoIfCultureIsInSupportedCultureList()
|
public async Task GetDefaultCultureInfoIfCultureIsInSupportedCultureList()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRequestLocalization(new RequestLocalizationOptions
|
app.UseRequestLocalization(new RequestLocalizationOptions
|
||||||
|
|
@ -102,8 +121,11 @@ namespace Microsoft.Extensions.Localization
|
||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync("/page?culture=ar-XY&ui-culture=ar-SA");
|
var response = await client.GetAsync("/page?culture=ar-XY&ui-culture=ar-SA");
|
||||||
|
|
@ -113,7 +135,11 @@ namespace Microsoft.Extensions.Localization
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task GetDefaultCultureInfoIfUICultureIsNotInSupportedList()
|
public async Task GetDefaultCultureInfoIfUICultureIsNotInSupportedList()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRequestLocalization(new RequestLocalizationOptions
|
app.UseRequestLocalization(new RequestLocalizationOptions
|
||||||
|
|
@ -136,8 +162,11 @@ namespace Microsoft.Extensions.Localization
|
||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync("/page?culture=ar-SA&ui-culture=ar-XY");
|
var response = await client.GetAsync("/page?culture=ar-SA&ui-culture=ar-XY");
|
||||||
|
|
@ -147,7 +176,11 @@ namespace Microsoft.Extensions.Localization
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task GetSameCultureInfoIfCultureKeyIsMissing()
|
public async Task GetSameCultureInfoIfCultureKeyIsMissing()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRequestLocalization(new RequestLocalizationOptions
|
app.UseRequestLocalization(new RequestLocalizationOptions
|
||||||
|
|
@ -171,8 +204,11 @@ namespace Microsoft.Extensions.Localization
|
||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync("/page?ui-culture=ar-SA");
|
var response = await client.GetAsync("/page?ui-culture=ar-SA");
|
||||||
|
|
@ -182,7 +218,11 @@ namespace Microsoft.Extensions.Localization
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task GetSameCultureInfoIfUICultureKeyIsMissing()
|
public async Task GetSameCultureInfoIfUICultureKeyIsMissing()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRequestLocalization(new RequestLocalizationOptions
|
app.UseRequestLocalization(new RequestLocalizationOptions
|
||||||
|
|
@ -206,8 +246,11 @@ namespace Microsoft.Extensions.Localization
|
||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync("/page?culture=ar-SA");
|
var response = await client.GetAsync("/page?culture=ar-SA");
|
||||||
|
|
@ -217,7 +260,11 @@ namespace Microsoft.Extensions.Localization
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task GetCultureInfoFromQueryStringWithCustomKeys()
|
public async Task GetCultureInfoFromQueryStringWithCustomKeys()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
var options = new RequestLocalizationOptions
|
var options = new RequestLocalizationOptions
|
||||||
|
|
@ -246,8 +293,11 @@ namespace Microsoft.Extensions.Localization
|
||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync("/page?c=ar-SA&uic=ar-YE");
|
var response = await client.GetAsync("/page?c=ar-SA&uic=ar-YE");
|
||||||
|
|
@ -257,7 +307,11 @@ namespace Microsoft.Extensions.Localization
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task GetTheRightCultureInfoRegardlessOfCultureNameCasing()
|
public async Task GetTheRightCultureInfoRegardlessOfCultureNameCasing()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
var options = new RequestLocalizationOptions
|
var options = new RequestLocalizationOptions
|
||||||
|
|
@ -287,8 +341,11 @@ namespace Microsoft.Extensions.Localization
|
||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync("/page?c=FR&uic=FR");
|
var response = await client.GetAsync("/page?c=FR&uic=FR");
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,26 @@
|
||||||
// Copyright (c) .NET Foundation. All rights reserved.
|
// 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.
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace LocalizationWebsite
|
namespace LocalizationWebsite
|
||||||
{
|
{
|
||||||
public static class Program
|
public static class Program
|
||||||
{
|
{
|
||||||
public static void Main(string[] args)
|
public static Task Main(string[] args)
|
||||||
{
|
{
|
||||||
var config = new ConfigurationBuilder()
|
var config = new ConfigurationBuilder()
|
||||||
.AddCommandLine(args)
|
.AddCommandLine(args)
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
var host = new WebHostBuilder()
|
var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
.ConfigureLogging((_, factory) =>
|
.ConfigureLogging((_, factory) =>
|
||||||
{
|
{
|
||||||
factory.AddConsole();
|
factory.AddConsole();
|
||||||
|
|
@ -23,10 +28,11 @@ namespace LocalizationWebsite
|
||||||
})
|
})
|
||||||
.UseKestrel()
|
.UseKestrel()
|
||||||
.UseConfiguration(config)
|
.UseConfiguration(config)
|
||||||
.UseStartup("LocalizationWebsite")
|
.UseStartup("LocalizationWebsite");
|
||||||
|
})
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
host.Run();
|
return host.RunAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,12 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.Builder;
|
using Microsoft.AspNetCore.Builder;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Microsoft.Extensions.DiagnosticAdapter;
|
using Microsoft.Extensions.DiagnosticAdapter;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace MiddlewareAnaysisSample
|
namespace MiddlewareAnaysisSample
|
||||||
|
|
@ -79,9 +81,12 @@ namespace MiddlewareAnaysisSample
|
||||||
// Note there's always a default 404 middleware at the end of the pipeline.
|
// Note there's always a default 404 middleware at the end of the pipeline.
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Main(string[] args)
|
public static Task Main(string[] args)
|
||||||
{
|
{
|
||||||
var host = new WebHostBuilder()
|
var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
.ConfigureLogging((_, factory) =>
|
.ConfigureLogging((_, factory) =>
|
||||||
{
|
{
|
||||||
factory.AddConsole();
|
factory.AddConsole();
|
||||||
|
|
@ -89,10 +94,10 @@ namespace MiddlewareAnaysisSample
|
||||||
})
|
})
|
||||||
.UseKestrel()
|
.UseKestrel()
|
||||||
.UseIISIntegration()
|
.UseIISIntegration()
|
||||||
.UseStartup<Startup>()
|
.UseStartup<Startup>();
|
||||||
.Build();
|
}).Build();
|
||||||
|
|
||||||
host.Run();
|
return host.RunAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
public class TestDiagnosticListener
|
public class TestDiagnosticListener
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ using Microsoft.AspNetCore.Builder;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.TestHost;
|
using Microsoft.AspNetCore.TestHost;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.MiddlewareAnalysis
|
namespace Microsoft.AspNetCore.MiddlewareAnalysis
|
||||||
|
|
@ -19,7 +20,11 @@ namespace Microsoft.AspNetCore.MiddlewareAnalysis
|
||||||
{
|
{
|
||||||
DiagnosticListener diagnosticListener = null;
|
DiagnosticListener diagnosticListener = null;
|
||||||
|
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
diagnosticListener = app.ApplicationServices.GetRequiredService<DiagnosticListener>();
|
diagnosticListener = app.ApplicationServices.GetRequiredService<DiagnosticListener>();
|
||||||
|
|
@ -31,7 +36,11 @@ namespace Microsoft.AspNetCore.MiddlewareAnalysis
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.ConfigureServices(services => services.AddMiddlewareAnalysis());
|
.ConfigureServices(services => services.AddMiddlewareAnalysis());
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var listener = new TestDiagnosticListener();
|
var listener = new TestDiagnosticListener();
|
||||||
diagnosticListener.SubscribeWithAdapter(listener);
|
diagnosticListener.SubscribeWithAdapter(listener);
|
||||||
|
|
|
||||||
|
|
@ -3,11 +3,13 @@
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.Builder;
|
using Microsoft.AspNetCore.Builder;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.NodeServices;
|
using Microsoft.AspNetCore.NodeServices;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace NodeServicesExamples
|
namespace NodeServicesExamples
|
||||||
|
|
@ -58,9 +60,12 @@ namespace NodeServicesExamples
|
||||||
}
|
}
|
||||||
#pragma warning restore 0618
|
#pragma warning restore 0618
|
||||||
|
|
||||||
public static void Main(string[] args)
|
public static Task Main(string[] args)
|
||||||
{
|
{
|
||||||
var host = new WebHostBuilder()
|
var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
.ConfigureLogging(factory =>
|
.ConfigureLogging(factory =>
|
||||||
{
|
{
|
||||||
factory.AddConsole();
|
factory.AddConsole();
|
||||||
|
|
@ -69,10 +74,10 @@ namespace NodeServicesExamples
|
||||||
.UseContentRoot(Directory.GetCurrentDirectory())
|
.UseContentRoot(Directory.GetCurrentDirectory())
|
||||||
.UseIISIntegration()
|
.UseIISIntegration()
|
||||||
.UseKestrel()
|
.UseKestrel()
|
||||||
.UseStartup<Startup>()
|
.UseStartup<Startup>();
|
||||||
.Build();
|
}).Build();
|
||||||
|
|
||||||
host.Run();
|
return host.RunAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,12 @@
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.Builder;
|
using Microsoft.AspNetCore.Builder;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Microsoft.Net.Http.Headers;
|
using Microsoft.Net.Http.Headers;
|
||||||
|
|
||||||
namespace ResponseCachingSample
|
namespace ResponseCachingSample
|
||||||
|
|
@ -34,16 +36,19 @@ namespace ResponseCachingSample
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Main(string[] args)
|
public static Task Main(string[] args)
|
||||||
{
|
{
|
||||||
var host = new WebHostBuilder()
|
var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
.UseKestrel()
|
.UseKestrel()
|
||||||
.UseContentRoot(Directory.GetCurrentDirectory())
|
.UseContentRoot(Directory.GetCurrentDirectory())
|
||||||
.UseIISIntegration()
|
.UseIISIntegration()
|
||||||
.UseStartup<Startup>()
|
.UseStartup<Startup>();
|
||||||
.Build();
|
}).Build();
|
||||||
|
|
||||||
host.Run();
|
return host.RunAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
|
|
||||||
foreach (var builder in builders)
|
foreach (var builder in builders)
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(builder))
|
using var host = builder.Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var initialResponse = await client.SendAsync(TestUtils.CreateRequest(method, ""));
|
var initialResponse = await client.SendAsync(TestUtils.CreateRequest(method, ""));
|
||||||
|
|
@ -42,7 +46,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
|
|
||||||
foreach (var builder in builders)
|
foreach (var builder in builders)
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(builder))
|
using var host = builder.Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var initialResponse = await client.SendAsync(TestUtils.CreateRequest(method, ""));
|
var initialResponse = await client.SendAsync(TestUtils.CreateRequest(method, ""));
|
||||||
|
|
@ -60,7 +68,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
|
|
||||||
foreach (var builder in builders)
|
foreach (var builder in builders)
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(builder))
|
using var host = builder.Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var initialResponse = await client.PostAsync("", new StringContent(string.Empty));
|
var initialResponse = await client.PostAsync("", new StringContent(string.Empty));
|
||||||
|
|
@ -78,7 +90,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
|
|
||||||
foreach (var builder in builders)
|
foreach (var builder in builders)
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(builder))
|
using var host = builder.Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var subsequentResponse = await client.SendAsync(new HttpRequestMessage(HttpMethod.Head, ""));
|
var subsequentResponse = await client.SendAsync(new HttpRequestMessage(HttpMethod.Head, ""));
|
||||||
|
|
@ -96,7 +112,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
|
|
||||||
foreach (var builder in builders)
|
foreach (var builder in builders)
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(builder))
|
using var host = builder.Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var initialResponse = await client.SendAsync(new HttpRequestMessage(HttpMethod.Get, ""));
|
var initialResponse = await client.SendAsync(new HttpRequestMessage(HttpMethod.Get, ""));
|
||||||
|
|
@ -116,7 +136,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
|
|
||||||
foreach (var builder in builders)
|
foreach (var builder in builders)
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(builder))
|
using var host = builder.Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
|
|
@ -145,7 +169,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
|
|
||||||
foreach (var builder in builders)
|
foreach (var builder in builders)
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(builder))
|
using var host = builder.Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
|
|
@ -174,7 +202,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
|
|
||||||
foreach (var builder in builders)
|
foreach (var builder in builders)
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(builder))
|
using var host = builder.Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var initialResponse = await client.SendAsync(TestUtils.CreateRequest(method, "path"));
|
var initialResponse = await client.SendAsync(TestUtils.CreateRequest(method, "path"));
|
||||||
|
|
@ -194,7 +226,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
|
|
||||||
foreach (var builder in builders)
|
foreach (var builder in builders)
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(builder))
|
using var host = builder.Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var initialResponse = await client.SendAsync(TestUtils.CreateRequest(method, "?Expires=0"));
|
var initialResponse = await client.SendAsync(TestUtils.CreateRequest(method, "?Expires=0"));
|
||||||
|
|
@ -214,7 +250,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
|
|
||||||
foreach (var builder in builders)
|
foreach (var builder in builders)
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(builder))
|
using var host = builder.Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("abc");
|
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("abc");
|
||||||
|
|
@ -233,7 +273,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
|
|
||||||
foreach (var builder in builders)
|
foreach (var builder in builders)
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(builder))
|
using var host = builder.Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
client.DefaultRequestHeaders.From = "user@example.com";
|
client.DefaultRequestHeaders.From = "user@example.com";
|
||||||
|
|
@ -252,7 +296,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
|
|
||||||
foreach (var builder in builders)
|
foreach (var builder in builders)
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(builder))
|
using var host = builder.Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
client.DefaultRequestHeaders.From = "user@example.com";
|
client.DefaultRequestHeaders.From = "user@example.com";
|
||||||
|
|
@ -272,7 +320,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
|
|
||||||
foreach (var builder in builders)
|
foreach (var builder in builders)
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(builder))
|
using var host = builder.Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var initialResponse = await client.GetAsync("?query=value");
|
var initialResponse = await client.GetAsync("?query=value");
|
||||||
|
|
@ -290,7 +342,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
|
|
||||||
foreach (var builder in builders)
|
foreach (var builder in builders)
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(builder))
|
using var host = builder.Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var initialResponse = await client.GetAsync("?querya=valuea&queryb=valueb");
|
var initialResponse = await client.GetAsync("?querya=valuea&queryb=valueb");
|
||||||
|
|
@ -308,7 +364,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
|
|
||||||
foreach (var builder in builders)
|
foreach (var builder in builders)
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(builder))
|
using var host = builder.Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var initialResponse = await client.GetAsync("?querya=valuea&queryb=valueb");
|
var initialResponse = await client.GetAsync("?querya=valuea&queryb=valueb");
|
||||||
|
|
@ -326,7 +386,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
|
|
||||||
foreach (var builder in builders)
|
foreach (var builder in builders)
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(builder))
|
using var host = builder.Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var initialResponse = await client.GetAsync("?QueryA=ValueA&QueryB=ValueB");
|
var initialResponse = await client.GetAsync("?QueryA=ValueA&QueryB=ValueB");
|
||||||
|
|
@ -344,7 +408,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
|
|
||||||
foreach (var builder in builders)
|
foreach (var builder in builders)
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(builder))
|
using var host = builder.Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var initialResponse = await client.GetAsync("?QueryA=ValueA&QueryB=ValueB");
|
var initialResponse = await client.GetAsync("?QueryA=ValueA&QueryB=ValueB");
|
||||||
|
|
@ -362,7 +430,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
|
|
||||||
foreach (var builder in builders)
|
foreach (var builder in builders)
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(builder))
|
using var host = builder.Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var initialResponse = await client.GetAsync("?query=value");
|
var initialResponse = await client.GetAsync("?query=value");
|
||||||
|
|
@ -380,7 +452,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
|
|
||||||
foreach (var builder in builders)
|
foreach (var builder in builders)
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(builder))
|
using var host = builder.Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var initialResponse = await client.GetAsync("?querya=valuea&queryb=valueb");
|
var initialResponse = await client.GetAsync("?querya=valuea&queryb=valueb");
|
||||||
|
|
@ -398,7 +474,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
|
|
||||||
foreach (var builder in builders)
|
foreach (var builder in builders)
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(builder))
|
using var host = builder.Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var initialResponse = await client.GetAsync("?querya=valuea&queryb=valueb");
|
var initialResponse = await client.GetAsync("?querya=valuea&queryb=valueb");
|
||||||
|
|
@ -416,7 +496,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
|
|
||||||
foreach (var builder in builders)
|
foreach (var builder in builders)
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(builder))
|
using var host = builder.Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var initialResponse = await client.GetAsync("");
|
var initialResponse = await client.GetAsync("");
|
||||||
|
|
@ -438,7 +522,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
|
|
||||||
foreach (var builder in builders)
|
foreach (var builder in builders)
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(builder))
|
using var host = builder.Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var initialResponse = await client.GetAsync("");
|
var initialResponse = await client.GetAsync("");
|
||||||
|
|
@ -461,7 +549,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
|
|
||||||
foreach (var builder in builders)
|
foreach (var builder in builders)
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(builder))
|
using var host = builder.Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var initialResponse = await client.GetAsync("");
|
var initialResponse = await client.GetAsync("");
|
||||||
|
|
@ -479,7 +571,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
|
|
||||||
foreach (var builder in builders)
|
foreach (var builder in builders)
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(builder))
|
using var host = builder.Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var initialResponse = await client.GetAsync("");
|
var initialResponse = await client.GetAsync("");
|
||||||
|
|
@ -501,7 +597,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
|
|
||||||
foreach (var builder in builders)
|
foreach (var builder in builders)
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(builder))
|
using var host = builder.Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
client.DefaultRequestHeaders.CacheControl = new System.Net.Http.Headers.CacheControlHeaderValue()
|
client.DefaultRequestHeaders.CacheControl = new System.Net.Http.Headers.CacheControlHeaderValue()
|
||||||
|
|
@ -523,7 +623,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
|
|
||||||
foreach (var builder in builders)
|
foreach (var builder in builders)
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(builder))
|
using var host = builder.Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var initialResponse = await client.GetAsync("");
|
var initialResponse = await client.GetAsync("");
|
||||||
|
|
@ -546,7 +650,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
|
|
||||||
foreach (var builder in builders)
|
foreach (var builder in builders)
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(builder))
|
using var host = builder.Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var initialResponse = await client.GetAsync("?Expires=90");
|
var initialResponse = await client.GetAsync("?Expires=90");
|
||||||
|
|
@ -567,7 +675,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
|
|
||||||
foreach (var builder in builders)
|
foreach (var builder in builders)
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(builder))
|
using var host = builder.Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var initialResponse = await client.GetAsync("");
|
var initialResponse = await client.GetAsync("");
|
||||||
|
|
@ -591,7 +703,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
|
|
||||||
foreach (var builder in builders)
|
foreach (var builder in builders)
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(builder))
|
using var host = builder.Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var initialResponse = await client.GetAsync("?Expires=90");
|
var initialResponse = await client.GetAsync("?Expires=90");
|
||||||
|
|
@ -612,7 +728,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
|
|
||||||
foreach (var builder in builders)
|
foreach (var builder in builders)
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(builder))
|
using var host = builder.Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var initialResponse = await client.GetAsync("");
|
var initialResponse = await client.GetAsync("");
|
||||||
|
|
@ -634,7 +754,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
|
|
||||||
foreach (var builder in builders)
|
foreach (var builder in builders)
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(builder))
|
using var host = builder.Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var initialResponse = await client.GetAsync("");
|
var initialResponse = await client.GetAsync("");
|
||||||
|
|
@ -655,7 +779,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
|
|
||||||
foreach (var builder in builders)
|
foreach (var builder in builders)
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(builder))
|
using var host = builder.Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var initialResponse = await client.GetAsync("");
|
var initialResponse = await client.GetAsync("");
|
||||||
|
|
@ -676,7 +804,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
|
|
||||||
foreach (var builder in builders)
|
foreach (var builder in builders)
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(builder))
|
using var host = builder.Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var initialResponse = await client.GetAsync("/path");
|
var initialResponse = await client.GetAsync("/path");
|
||||||
|
|
@ -694,7 +826,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
|
|
||||||
foreach (var builder in builders)
|
foreach (var builder in builders)
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(builder))
|
using var host = builder.Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
client.DefaultRequestHeaders.From = "user@example.com";
|
client.DefaultRequestHeaders.From = "user@example.com";
|
||||||
|
|
@ -716,7 +852,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
|
|
||||||
foreach (var builder in builders)
|
foreach (var builder in builders)
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(builder))
|
using var host = builder.Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
client.DefaultRequestHeaders.From = "user@example.com";
|
client.DefaultRequestHeaders.From = "user@example.com";
|
||||||
|
|
@ -747,7 +887,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
|
|
||||||
foreach (var builder in builders)
|
foreach (var builder in builders)
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(builder))
|
using var host = builder.Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
client.DefaultRequestHeaders.From = "user@example.com";
|
client.DefaultRequestHeaders.From = "user@example.com";
|
||||||
|
|
@ -778,7 +922,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
|
|
||||||
foreach (var builder in builders)
|
foreach (var builder in builders)
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(builder))
|
using var host = builder.Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var initialResponse = await client.SendAsync(TestUtils.CreateRequest("HEAD", "?contentLength=10"));
|
var initialResponse = await client.SendAsync(TestUtils.CreateRequest("HEAD", "?contentLength=10"));
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,9 @@ using Microsoft.AspNetCore.Builder;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Http.Features;
|
using Microsoft.AspNetCore.Http.Features;
|
||||||
|
using Microsoft.AspNetCore.TestHost;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Microsoft.Extensions.Logging.Abstractions;
|
using Microsoft.Extensions.Logging.Abstractions;
|
||||||
using Microsoft.Extensions.Logging.Testing;
|
using Microsoft.Extensions.Logging.Testing;
|
||||||
|
|
@ -116,7 +118,7 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
return new ResponseCachingKeyProvider(new DefaultObjectPoolProvider(), Options.Create(options));
|
return new ResponseCachingKeyProvider(new DefaultObjectPoolProvider(), Options.Create(options));
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static IEnumerable<IWebHostBuilder> CreateBuildersWithResponseCaching(
|
internal static IEnumerable<IHostBuilder> CreateBuildersWithResponseCaching(
|
||||||
Action<IApplicationBuilder> configureDelegate = null,
|
Action<IApplicationBuilder> configureDelegate = null,
|
||||||
ResponseCachingOptions options = null,
|
ResponseCachingOptions options = null,
|
||||||
Action<HttpContext> contextAction = null)
|
Action<HttpContext> contextAction = null)
|
||||||
|
|
@ -141,7 +143,7 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private static IEnumerable<IWebHostBuilder> CreateBuildersWithResponseCaching(
|
private static IEnumerable<IHostBuilder> CreateBuildersWithResponseCaching(
|
||||||
Action<IApplicationBuilder> configureDelegate = null,
|
Action<IApplicationBuilder> configureDelegate = null,
|
||||||
ResponseCachingOptions options = null,
|
ResponseCachingOptions options = null,
|
||||||
IEnumerable<RequestDelegate> requestDelegates = null)
|
IEnumerable<RequestDelegate> requestDelegates = null)
|
||||||
|
|
@ -162,7 +164,11 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
foreach (var requestDelegate in requestDelegates)
|
foreach (var requestDelegate in requestDelegates)
|
||||||
{
|
{
|
||||||
// Test with in memory ResponseCache
|
// Test with in memory ResponseCache
|
||||||
yield return new WebHostBuilder()
|
yield return new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddResponseCaching(responseCachingOptions =>
|
services.AddResponseCaching(responseCachingOptions =>
|
||||||
|
|
@ -181,6 +187,7 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
||||||
app.UseResponseCaching();
|
app.UseResponseCaching();
|
||||||
app.Run(requestDelegate);
|
app.Run(requestDelegate);
|
||||||
});
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Http.Features;
|
using Microsoft.AspNetCore.Http.Features;
|
||||||
using Microsoft.AspNetCore.ResponseCompression;
|
using Microsoft.AspNetCore.ResponseCompression;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace ResponseCompressionSample
|
namespace ResponseCompressionSample
|
||||||
|
|
@ -71,19 +72,22 @@ namespace ResponseCompressionSample
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Main(string[] args)
|
public static Task Main(string[] args)
|
||||||
{
|
{
|
||||||
var host = new WebHostBuilder()
|
var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
.UseKestrel()
|
.UseKestrel()
|
||||||
.ConfigureLogging(factory =>
|
.ConfigureLogging(factory =>
|
||||||
{
|
{
|
||||||
factory.AddConsole()
|
factory.AddConsole()
|
||||||
.SetMinimumLevel(LogLevel.Debug);
|
.SetMinimumLevel(LogLevel.Debug);
|
||||||
})
|
})
|
||||||
.UseStartup<Startup>()
|
.UseStartup<Startup>();
|
||||||
.Build();
|
}).Build();
|
||||||
|
|
||||||
host.Run();
|
return host.RunAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ using Microsoft.AspNetCore.Http.Features;
|
||||||
using Microsoft.AspNetCore.TestHost;
|
using Microsoft.AspNetCore.TestHost;
|
||||||
using Microsoft.AspNetCore.Testing;
|
using Microsoft.AspNetCore.Testing;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Microsoft.Extensions.Logging.Testing;
|
using Microsoft.Extensions.Logging.Testing;
|
||||||
using Microsoft.Net.Http.Headers;
|
using Microsoft.Net.Http.Headers;
|
||||||
|
|
@ -134,7 +135,11 @@ namespace Microsoft.AspNetCore.ResponseCompression.Tests
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task GZipCompressionProvider_OptionsSetInDI_Compress()
|
public async Task GZipCompressionProvider_OptionsSetInDI_Compress()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.Configure<GzipCompressionProviderOptions>(options => options.Level = CompressionLevel.NoCompression);
|
services.Configure<GzipCompressionProviderOptions>(options => options.Level = CompressionLevel.NoCompression);
|
||||||
|
|
@ -150,8 +155,11 @@ namespace Microsoft.AspNetCore.ResponseCompression.Tests
|
||||||
return context.Response.WriteAsync(new string('a', 100));
|
return context.Response.WriteAsync(new string('a', 100));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
||||||
|
|
@ -286,7 +294,11 @@ namespace Microsoft.AspNetCore.ResponseCompression.Tests
|
||||||
[InlineData("text/plain2")]
|
[InlineData("text/plain2")]
|
||||||
public async Task NoBody_NotCompressed(string contentType)
|
public async Task NoBody_NotCompressed(string contentType)
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddResponseCompression();
|
services.AddResponseCompression();
|
||||||
|
|
@ -301,8 +313,11 @@ namespace Microsoft.AspNetCore.ResponseCompression.Tests
|
||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
||||||
|
|
@ -413,7 +428,11 @@ namespace Microsoft.AspNetCore.ResponseCompression.Tests
|
||||||
TestSink.EnableWithTypeName<ResponseCompressionProvider>);
|
TestSink.EnableWithTypeName<ResponseCompressionProvider>);
|
||||||
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
||||||
|
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddSingleton<ILoggerFactory>(loggerFactory);
|
services.AddSingleton<ILoggerFactory>(loggerFactory);
|
||||||
|
|
@ -432,11 +451,12 @@ namespace Microsoft.AspNetCore.ResponseCompression.Tests
|
||||||
return context.Response.WriteAsync(new string('a', 100));
|
return context.Response.WriteAsync(new string('a', 100));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder)
|
await host.StartAsync();
|
||||||
{
|
|
||||||
BaseAddress = new Uri("https://localhost/")
|
var server = host.GetTestServer();
|
||||||
};
|
server.BaseAddress = new Uri("https://localhost/");
|
||||||
|
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
|
|
@ -469,7 +489,11 @@ namespace Microsoft.AspNetCore.ResponseCompression.Tests
|
||||||
TestSink.EnableWithTypeName<ResponseCompressionProvider>);
|
TestSink.EnableWithTypeName<ResponseCompressionProvider>);
|
||||||
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
||||||
|
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddSingleton<ILoggerFactory>(loggerFactory);
|
services.AddSingleton<ILoggerFactory>(loggerFactory);
|
||||||
|
|
@ -490,11 +514,12 @@ namespace Microsoft.AspNetCore.ResponseCompression.Tests
|
||||||
return context.Response.WriteAsync(new string('a', 100));
|
return context.Response.WriteAsync(new string('a', 100));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder)
|
await host.StartAsync();
|
||||||
{
|
|
||||||
BaseAddress = new Uri("https://localhost/")
|
var server = host.GetTestServer();
|
||||||
};
|
server.BaseAddress = new Uri("https://localhost/");
|
||||||
|
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
|
|
@ -527,7 +552,11 @@ namespace Microsoft.AspNetCore.ResponseCompression.Tests
|
||||||
TestSink.EnableWithTypeName<ResponseCompressionProvider>);
|
TestSink.EnableWithTypeName<ResponseCompressionProvider>);
|
||||||
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
||||||
|
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddSingleton<ILoggerFactory>(loggerFactory);
|
services.AddSingleton<ILoggerFactory>(loggerFactory);
|
||||||
|
|
@ -548,11 +577,12 @@ namespace Microsoft.AspNetCore.ResponseCompression.Tests
|
||||||
return context.Response.WriteAsync(new string('a', 100));
|
return context.Response.WriteAsync(new string('a', 100));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder)
|
await host.StartAsync();
|
||||||
{
|
|
||||||
BaseAddress = new Uri("https://localhost/")
|
var server = host.GetTestServer();
|
||||||
};
|
server.BaseAddress = new Uri("https://localhost/");
|
||||||
|
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
|
|
@ -580,7 +610,11 @@ namespace Microsoft.AspNetCore.ResponseCompression.Tests
|
||||||
{
|
{
|
||||||
var responseReceived = new TaskCompletionSource<int>(TaskCreationOptions.RunContinuationsAsynchronously);
|
var responseReceived = new TaskCompletionSource<int>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||||
|
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddResponseCompression();
|
services.AddResponseCompression();
|
||||||
|
|
@ -597,11 +631,12 @@ namespace Microsoft.AspNetCore.ResponseCompression.Tests
|
||||||
await context.Response.WriteAsync(new string('a', 100));
|
await context.Response.WriteAsync(new string('a', 100));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder)
|
await host.StartAsync();
|
||||||
{
|
|
||||||
AllowSynchronousIO = true // needed for synchronous flush
|
var server = host.GetTestServer();
|
||||||
};
|
server.AllowSynchronousIO = true; // needed for synchronous flush
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
||||||
|
|
@ -621,7 +656,11 @@ namespace Microsoft.AspNetCore.ResponseCompression.Tests
|
||||||
{
|
{
|
||||||
var responseReceived = new TaskCompletionSource<int>(TaskCreationOptions.RunContinuationsAsynchronously);
|
var responseReceived = new TaskCompletionSource<int>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||||
|
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddResponseCompression();
|
services.AddResponseCompression();
|
||||||
|
|
@ -638,8 +677,11 @@ namespace Microsoft.AspNetCore.ResponseCompression.Tests
|
||||||
await context.Response.WriteAsync(new string('a', 100));
|
await context.Response.WriteAsync(new string('a', 100));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
||||||
|
|
@ -659,7 +701,11 @@ namespace Microsoft.AspNetCore.ResponseCompression.Tests
|
||||||
{
|
{
|
||||||
var responseReceived = new TaskCompletionSource<int>(TaskCreationOptions.RunContinuationsAsynchronously);
|
var responseReceived = new TaskCompletionSource<int>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||||
|
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddResponseCompression();
|
services.AddResponseCompression();
|
||||||
|
|
@ -683,8 +729,11 @@ namespace Microsoft.AspNetCore.ResponseCompression.Tests
|
||||||
context.Response.Body.Write(new byte[90], 0, 90);
|
context.Response.Body.Write(new byte[90], 0, 90);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
||||||
|
|
@ -711,7 +760,11 @@ namespace Microsoft.AspNetCore.ResponseCompression.Tests
|
||||||
{
|
{
|
||||||
var responseReceived = new TaskCompletionSource<int>(TaskCreationOptions.RunContinuationsAsynchronously);
|
var responseReceived = new TaskCompletionSource<int>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||||
|
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddResponseCompression();
|
services.AddResponseCompression();
|
||||||
|
|
@ -729,8 +782,11 @@ namespace Microsoft.AspNetCore.ResponseCompression.Tests
|
||||||
await context.Response.WriteAsync(new string('a', 90));
|
await context.Response.WriteAsync(new string('a', 90));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
||||||
|
|
@ -764,7 +820,11 @@ namespace Microsoft.AspNetCore.ResponseCompression.Tests
|
||||||
new TaskCompletionSource<int>(TaskCreationOptions.RunContinuationsAsynchronously),
|
new TaskCompletionSource<int>(TaskCreationOptions.RunContinuationsAsynchronously),
|
||||||
};
|
};
|
||||||
|
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddResponseCompression();
|
services.AddResponseCompression();
|
||||||
|
|
@ -792,8 +852,11 @@ namespace Microsoft.AspNetCore.ResponseCompression.Tests
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
||||||
|
|
@ -827,7 +890,11 @@ namespace Microsoft.AspNetCore.ResponseCompression.Tests
|
||||||
new TaskCompletionSource<int>(TaskCreationOptions.RunContinuationsAsynchronously),
|
new TaskCompletionSource<int>(TaskCreationOptions.RunContinuationsAsynchronously),
|
||||||
};
|
};
|
||||||
|
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddResponseCompression();
|
services.AddResponseCompression();
|
||||||
|
|
@ -849,8 +916,11 @@ namespace Microsoft.AspNetCore.ResponseCompression.Tests
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
||||||
|
|
@ -876,7 +946,11 @@ namespace Microsoft.AspNetCore.ResponseCompression.Tests
|
||||||
{
|
{
|
||||||
FakeSendFileFeature fakeSendFile = null;
|
FakeSendFileFeature fakeSendFile = null;
|
||||||
|
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddResponseCompression();
|
services.AddResponseCompression();
|
||||||
|
|
@ -900,8 +974,11 @@ namespace Microsoft.AspNetCore.ResponseCompression.Tests
|
||||||
return sendFile.SendFileAsync("testfile1kb.txt", 0, null, CancellationToken.None);
|
return sendFile.SendFileAsync("testfile1kb.txt", 0, null, CancellationToken.None);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
||||||
|
|
@ -919,7 +996,11 @@ namespace Microsoft.AspNetCore.ResponseCompression.Tests
|
||||||
{
|
{
|
||||||
FakeSendFileFeature fakeSendFile = null;
|
FakeSendFileFeature fakeSendFile = null;
|
||||||
|
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddResponseCompression();
|
services.AddResponseCompression();
|
||||||
|
|
@ -943,8 +1024,11 @@ namespace Microsoft.AspNetCore.ResponseCompression.Tests
|
||||||
return sendFile.SendFileAsync("testfile1kb.txt", 0, null, CancellationToken.None);
|
return sendFile.SendFileAsync("testfile1kb.txt", 0, null, CancellationToken.None);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
||||||
|
|
@ -962,7 +1046,11 @@ namespace Microsoft.AspNetCore.ResponseCompression.Tests
|
||||||
{
|
{
|
||||||
FakeSendFileFeature fakeSendFile = null;
|
FakeSendFileFeature fakeSendFile = null;
|
||||||
|
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddResponseCompression();
|
services.AddResponseCompression();
|
||||||
|
|
@ -986,8 +1074,11 @@ namespace Microsoft.AspNetCore.ResponseCompression.Tests
|
||||||
await feature.SendFileAsync("testfile1kb.txt", 0, null, CancellationToken.None);
|
await feature.SendFileAsync("testfile1kb.txt", 0, null, CancellationToken.None);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
||||||
|
|
@ -1006,7 +1097,11 @@ namespace Microsoft.AspNetCore.ResponseCompression.Tests
|
||||||
{
|
{
|
||||||
var responseReceived = new TaskCompletionSource<int>(TaskCreationOptions.RunContinuationsAsynchronously);
|
var responseReceived = new TaskCompletionSource<int>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||||
|
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddResponseCompression();
|
services.AddResponseCompression();
|
||||||
|
|
@ -1029,8 +1124,11 @@ namespace Microsoft.AspNetCore.ResponseCompression.Tests
|
||||||
await context.Response.WriteAsync(new string('a', 90));
|
await context.Response.WriteAsync(new string('a', 90));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
||||||
|
|
@ -1063,7 +1161,11 @@ namespace Microsoft.AspNetCore.ResponseCompression.Tests
|
||||||
TestSink.EnableWithTypeName<ResponseCompressionProvider>);
|
TestSink.EnableWithTypeName<ResponseCompressionProvider>);
|
||||||
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
||||||
|
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddResponseCompression(configure ?? (_ => { }));
|
services.AddResponseCompression(configure ?? (_ => { }));
|
||||||
|
|
@ -1080,8 +1182,11 @@ namespace Microsoft.AspNetCore.ResponseCompression.Tests
|
||||||
return context.Response.WriteAsync(new string('a', uncompressedBodyLength));
|
return context.Response.WriteAsync(new string('a', uncompressedBodyLength));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder);
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
|
|
||||||
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
var request = new HttpRequestMessage(HttpMethod.Get, "");
|
||||||
|
|
@ -1090,7 +1195,9 @@ namespace Microsoft.AspNetCore.ResponseCompression.Tests
|
||||||
request.Headers.AcceptEncoding.Add(System.Net.Http.Headers.StringWithQualityHeaderValue.Parse(requestAcceptEncodings[i]));
|
request.Headers.AcceptEncoding.Add(System.Net.Http.Headers.StringWithQualityHeaderValue.Parse(requestAcceptEncodings[i]));
|
||||||
}
|
}
|
||||||
|
|
||||||
return (await client.SendAsync(request), sink.Writes.ToList());
|
var response = await client.SendAsync(request);
|
||||||
|
|
||||||
|
return (response, sink.Writes.ToList());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CheckResponseCompressed(HttpResponseMessage response, int expectedBodyLength, string expectedEncoding)
|
private void CheckResponseCompressed(HttpResponseMessage response, int expectedBodyLength, string expectedEncoding)
|
||||||
|
|
|
||||||
|
|
@ -3,11 +3,13 @@
|
||||||
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.Builder;
|
using Microsoft.AspNetCore.Builder;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Rewrite;
|
using Microsoft.AspNetCore.Rewrite;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
|
|
||||||
namespace RewriteSample
|
namespace RewriteSample
|
||||||
{
|
{
|
||||||
|
|
@ -42,9 +44,12 @@ namespace RewriteSample
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Main(string[] args)
|
public static Task Main(string[] args)
|
||||||
{
|
{
|
||||||
var host = new WebHostBuilder()
|
var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
.UseKestrel(options =>
|
.UseKestrel(options =>
|
||||||
{
|
{
|
||||||
options.Listen(IPAddress.Loopback, 5000);
|
options.Listen(IPAddress.Loopback, 5000);
|
||||||
|
|
@ -55,10 +60,10 @@ namespace RewriteSample
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.UseStartup<Startup>()
|
.UseStartup<Startup>()
|
||||||
.UseContentRoot(Directory.GetCurrentDirectory())
|
.UseContentRoot(Directory.GetCurrentDirectory());
|
||||||
.Build();
|
}).Build();
|
||||||
|
|
||||||
host.Run();
|
return host.RunAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ using Microsoft.AspNetCore.Builder;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.TestHost;
|
using Microsoft.AspNetCore.TestHost;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Rewrite.Tests.ModRewrite
|
namespace Microsoft.AspNetCore.Rewrite.Tests.ModRewrite
|
||||||
|
|
@ -19,13 +20,21 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.ModRewrite
|
||||||
public async Task Invoke_RewritePathWhenMatching()
|
public async Task Invoke_RewritePathWhenMatching()
|
||||||
{
|
{
|
||||||
var options = new RewriteOptions().AddApacheModRewrite(new StringReader("RewriteRule /hey/(.*) /$1 "));
|
var options = new RewriteOptions().AddApacheModRewrite(new StringReader("RewriteRule /hey/(.*) /$1 "));
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
app.Run(context => context.Response.WriteAsync(context.Request.Path));
|
app.Run(context => context.Response.WriteAsync(context.Request.Path));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetStringAsync("/hey/hello");
|
var response = await server.CreateClient().GetStringAsync("/hey/hello");
|
||||||
|
|
||||||
|
|
@ -37,13 +46,21 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.ModRewrite
|
||||||
{
|
{
|
||||||
var options = new RewriteOptions().AddApacheModRewrite(new StringReader("RewriteRule /hey/(.*) /$1 [L]"))
|
var options = new RewriteOptions().AddApacheModRewrite(new StringReader("RewriteRule /hey/(.*) /$1 [L]"))
|
||||||
.AddApacheModRewrite(new StringReader("RewriteRule /hello /what"));
|
.AddApacheModRewrite(new StringReader("RewriteRule /hello /what"));
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
app.Run(context => context.Response.WriteAsync(context.Request.Path));
|
app.Run(context => context.Response.WriteAsync(context.Request.Path));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetStringAsync("/hey/hello");
|
var response = await server.CreateClient().GetStringAsync("/hey/hello");
|
||||||
|
|
||||||
|
|
@ -55,13 +72,21 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.ModRewrite
|
||||||
{
|
{
|
||||||
var options = new RewriteOptions().AddApacheModRewrite(new StringReader("RewriteRule /hey/(.*) /$1"))
|
var options = new RewriteOptions().AddApacheModRewrite(new StringReader("RewriteRule /hey/(.*) /$1"))
|
||||||
.AddApacheModRewrite(new StringReader("RewriteRule /hello /what"));
|
.AddApacheModRewrite(new StringReader("RewriteRule /hello /what"));
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
app.Run(context => context.Response.WriteAsync(context.Request.Path));
|
app.Run(context => context.Response.WriteAsync(context.Request.Path));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetStringAsync("/hey/hello");
|
var response = await server.CreateClient().GetStringAsync("/hey/hello");
|
||||||
|
|
||||||
|
|
@ -72,13 +97,21 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.ModRewrite
|
||||||
public async Task Invoke_ShouldIgnoreComments()
|
public async Task Invoke_ShouldIgnoreComments()
|
||||||
{
|
{
|
||||||
var options = new RewriteOptions().AddApacheModRewrite(new StringReader("#RewriteRule ^/hey/(.*) /$1 "));
|
var options = new RewriteOptions().AddApacheModRewrite(new StringReader("#RewriteRule ^/hey/(.*) /$1 "));
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
app.Run(context => context.Response.WriteAsync(context.Request.Path));
|
app.Run(context => context.Response.WriteAsync(context.Request.Path));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetStringAsync("/hey/hello");
|
var response = await server.CreateClient().GetStringAsync("/hey/hello");
|
||||||
|
|
||||||
|
|
@ -89,13 +122,21 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.ModRewrite
|
||||||
public async Task Invoke_ShouldRewriteHomepage()
|
public async Task Invoke_ShouldRewriteHomepage()
|
||||||
{
|
{
|
||||||
var options = new RewriteOptions().AddApacheModRewrite(new StringReader(@"RewriteRule ^/$ /homepage.html"));
|
var options = new RewriteOptions().AddApacheModRewrite(new StringReader(@"RewriteRule ^/$ /homepage.html"));
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
app.Run(context => context.Response.WriteAsync(context.Request.Path));
|
app.Run(context => context.Response.WriteAsync(context.Request.Path));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetStringAsync("http://www.foo.org/");
|
var response = await server.CreateClient().GetStringAsync("http://www.foo.org/");
|
||||||
|
|
||||||
|
|
@ -106,13 +147,21 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.ModRewrite
|
||||||
public async Task Invoke_ShouldIgnorePorts()
|
public async Task Invoke_ShouldIgnorePorts()
|
||||||
{
|
{
|
||||||
var options = new RewriteOptions().AddApacheModRewrite(new StringReader(@"RewriteRule ^/$ /homepage.html"));
|
var options = new RewriteOptions().AddApacheModRewrite(new StringReader(@"RewriteRule ^/$ /homepage.html"));
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
app.Run(context => context.Response.WriteAsync(context.Request.Path));
|
app.Run(context => context.Response.WriteAsync(context.Request.Path));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetStringAsync("http://www.foo.org:42/");
|
var response = await server.CreateClient().GetStringAsync("http://www.foo.org:42/");
|
||||||
|
|
||||||
|
|
@ -123,13 +172,21 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.ModRewrite
|
||||||
public async Task Invoke_HandleNegatedRewriteRules()
|
public async Task Invoke_HandleNegatedRewriteRules()
|
||||||
{
|
{
|
||||||
var options = new RewriteOptions().AddApacheModRewrite(new StringReader(@"RewriteRule !^/$ /homepage.html"));
|
var options = new RewriteOptions().AddApacheModRewrite(new StringReader(@"RewriteRule !^/$ /homepage.html"));
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
app.Run(context => context.Response.WriteAsync(context.Request.Path));
|
app.Run(context => context.Response.WriteAsync(context.Request.Path));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetStringAsync("http://www.foo.org/");
|
var response = await server.CreateClient().GetStringAsync("http://www.foo.org/");
|
||||||
|
|
||||||
|
|
@ -142,13 +199,21 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.ModRewrite
|
||||||
public async Task Invoke_BackReferencesShouldBeApplied(string url, string rule, string expected)
|
public async Task Invoke_BackReferencesShouldBeApplied(string url, string rule, string expected)
|
||||||
{
|
{
|
||||||
var options = new RewriteOptions().AddApacheModRewrite(new StringReader(rule));
|
var options = new RewriteOptions().AddApacheModRewrite(new StringReader(rule));
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
app.Run(context => context.Response.WriteAsync(context.Request.Path));
|
app.Run(context => context.Response.WriteAsync(context.Request.Path));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetStringAsync(url);
|
var response = await server.CreateClient().GetStringAsync(url);
|
||||||
|
|
||||||
|
|
@ -165,13 +230,21 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.ModRewrite
|
||||||
public async Task Invoke_ShouldHandleFlagNoCase(string url, string rule, string expected)
|
public async Task Invoke_ShouldHandleFlagNoCase(string url, string rule, string expected)
|
||||||
{
|
{
|
||||||
var options = new RewriteOptions().AddApacheModRewrite(new StringReader(rule));
|
var options = new RewriteOptions().AddApacheModRewrite(new StringReader(rule));
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
app.Run(context => context.Response.WriteAsync(context.Request.Path));
|
app.Run(context => context.Response.WriteAsync(context.Request.Path));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetStringAsync(url);
|
var response = await server.CreateClient().GetStringAsync(url);
|
||||||
|
|
||||||
|
|
@ -183,13 +256,21 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.ModRewrite
|
||||||
{
|
{
|
||||||
var options = new RewriteOptions()
|
var options = new RewriteOptions()
|
||||||
.AddApacheModRewrite(new StringReader(@"RewriteRule (.+) http://www.example.com$1/"));
|
.AddApacheModRewrite(new StringReader(@"RewriteRule (.+) http://www.example.com$1/"));
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
app.Run(context => context.Response.WriteAsync(context.Request.Path));
|
app.Run(context => context.Response.WriteAsync(context.Request.Path));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetStringAsync("http://www.foo.org/blog/2016-jun");
|
var response = await server.CreateClient().GetStringAsync("http://www.foo.org/blog/2016-jun");
|
||||||
|
|
||||||
|
|
@ -201,13 +282,21 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.ModRewrite
|
||||||
{
|
{
|
||||||
var options = new RewriteOptions()
|
var options = new RewriteOptions()
|
||||||
.AddApacheModRewrite(new StringReader(@"RewriteRule (.+) http://www.example.com$1/"));
|
.AddApacheModRewrite(new StringReader(@"RewriteRule (.+) http://www.example.com$1/"));
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
app.Run(context => context.Response.WriteAsync(context.Request.Scheme + "://" + context.Request.Host.Host + context.Request.Path + context.Request.QueryString));
|
app.Run(context => context.Response.WriteAsync(context.Request.Scheme + "://" + context.Request.Host.Host + context.Request.Path + context.Request.QueryString));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetStringAsync("http://www.foo.org/blog/2016-jun");
|
var response = await server.CreateClient().GetStringAsync("http://www.foo.org/blog/2016-jun");
|
||||||
|
|
||||||
|
|
@ -219,13 +308,21 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.ModRewrite
|
||||||
{
|
{
|
||||||
var options = new RewriteOptions()
|
var options = new RewriteOptions()
|
||||||
.AddApacheModRewrite(new StringReader(@"RewriteRule (.+) http://www.example.com$1/"));
|
.AddApacheModRewrite(new StringReader(@"RewriteRule (.+) http://www.example.com$1/"));
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
app.Run(context => context.Response.WriteAsync(context.Request.Scheme + "://" + context.Request.Host.Host + context.Request.Path + context.Request.QueryString));
|
app.Run(context => context.Response.WriteAsync(context.Request.Scheme + "://" + context.Request.Host.Host + context.Request.Path + context.Request.QueryString));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetStringAsync("http://www.foo.org/blog/2016-jun");
|
var response = await server.CreateClient().GetStringAsync("http://www.foo.org/blog/2016-jun");
|
||||||
|
|
||||||
|
|
@ -238,13 +335,21 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.ModRewrite
|
||||||
{
|
{
|
||||||
var options = new RewriteOptions()
|
var options = new RewriteOptions()
|
||||||
.AddApacheModRewrite(new StringReader("RewriteCond %{REQUEST_URI} /foo/ \nRewriteCond %{HTTPS} !on \nRewriteRule ^(.*)$ https://www.example.com$1 [R=301,L]"));
|
.AddApacheModRewrite(new StringReader("RewriteCond %{REQUEST_URI} /foo/ \nRewriteCond %{HTTPS} !on \nRewriteRule ^(.*)$ https://www.example.com$1 [R=301,L]"));
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
app.Run(context => context.Response.WriteAsync(context.Request.Scheme + "://" + context.Request.Host.Host + context.Request.Path + context.Request.QueryString));
|
app.Run(context => context.Response.WriteAsync(context.Request.Scheme + "://" + context.Request.Host.Host + context.Request.Path + context.Request.QueryString));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync(input);
|
var response = await server.CreateClient().GetAsync(input);
|
||||||
|
|
||||||
|
|
@ -258,13 +363,21 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.ModRewrite
|
||||||
{
|
{
|
||||||
var options = new RewriteOptions()
|
var options = new RewriteOptions()
|
||||||
.AddApacheModRewrite(new StringReader("RewriteRule ^(.*)$ $1 [R=301,L]"));
|
.AddApacheModRewrite(new StringReader("RewriteRule ^(.*)$ $1 [R=301,L]"));
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
app.Run(context => context.Response.WriteAsync(context.Request.Scheme + "://" + context.Request.Host.Host + context.Request.Path + context.Request.QueryString));
|
app.Run(context => context.Response.WriteAsync(context.Request.Scheme + "://" + context.Request.Host.Host + context.Request.Path + context.Request.QueryString));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync(input);
|
var response = await server.CreateClient().GetAsync(input);
|
||||||
|
|
||||||
|
|
@ -278,13 +391,21 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.ModRewrite
|
||||||
{
|
{
|
||||||
var options = new RewriteOptions()
|
var options = new RewriteOptions()
|
||||||
.AddApacheModRewrite(new StringReader("RewriteRule ^(.*)$ $1 [L]"));
|
.AddApacheModRewrite(new StringReader("RewriteRule ^(.*)$ $1 [L]"));
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
app.Run(context => context.Response.WriteAsync(context.Request.Path + context.Request.QueryString));
|
app.Run(context => context.Response.WriteAsync(context.Request.Path + context.Request.QueryString));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetStringAsync(input);
|
var response = await server.CreateClient().GetStringAsync(input);
|
||||||
Assert.Equal("/", response);
|
Assert.Equal("/", response);
|
||||||
|
|
@ -294,7 +415,11 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.ModRewrite
|
||||||
public async Task Invoke_CaptureEmptyStringInRegexAssertLocationHeaderContainsPathBase()
|
public async Task Invoke_CaptureEmptyStringInRegexAssertLocationHeaderContainsPathBase()
|
||||||
{
|
{
|
||||||
var options = new RewriteOptions().AddApacheModRewrite(new StringReader(@"RewriteRule ^(.*)$ $1 [R=301,L]"));
|
var options = new RewriteOptions().AddApacheModRewrite(new StringReader(@"RewriteRule ^(.*)$ $1 [R=301,L]"));
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
|
|
@ -302,7 +427,12 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.ModRewrite
|
||||||
context.Request.Path +
|
context.Request.Path +
|
||||||
context.Request.QueryString));
|
context.Request.QueryString));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder) { BaseAddress = new Uri("http://localhost:5000/foo") };
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
server.BaseAddress = new Uri("http://localhost:5000/foo");
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync("");
|
var response = await server.CreateClient().GetAsync("");
|
||||||
|
|
||||||
|
|
@ -315,15 +445,24 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.ModRewrite
|
||||||
var options = new RewriteOptions().AddApacheModRewrite(new StringReader(@"RewriteCond %{REQUEST_URI} /home
|
var options = new RewriteOptions().AddApacheModRewrite(new StringReader(@"RewriteCond %{REQUEST_URI} /home
|
||||||
RewriteCond %{QUERY_STRING} report_id=(.+)
|
RewriteCond %{QUERY_STRING} report_id=(.+)
|
||||||
RewriteRule (.*) http://localhost:80/home/report/%1 [R=301,L,QSD]"));
|
RewriteRule (.*) http://localhost:80/home/report/%1 [R=301,L,QSD]"));
|
||||||
var builder = new WebHostBuilder().Configure(app =>
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
app.Run(context => context.Response.WriteAsync(
|
app.Run(context => context.Response.WriteAsync(
|
||||||
context.Request.Path +
|
context.Request.Path +
|
||||||
context.Request.QueryString));
|
context.Request.QueryString));
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
var server = new TestServer(builder) { BaseAddress = new Uri("http://localhost:5000/foo") };
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
server.BaseAddress = new Uri("http://localhost:5000/foo");
|
||||||
var response = await server.CreateClient().GetAsync("/home?report_id=123");
|
var response = await server.CreateClient().GetAsync("/home?report_id=123");
|
||||||
|
|
||||||
Assert.Equal("http://localhost:80/home/report/123", response.Headers.Location.OriginalString);
|
Assert.Equal("http://localhost:80/home/report/123", response.Headers.Location.OriginalString);
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ using Microsoft.AspNetCore.Rewrite.IISUrlRewrite;
|
||||||
using Microsoft.AspNetCore.Rewrite.UrlActions;
|
using Microsoft.AspNetCore.Rewrite.UrlActions;
|
||||||
using Microsoft.AspNetCore.Rewrite.UrlMatches;
|
using Microsoft.AspNetCore.Rewrite.UrlMatches;
|
||||||
using Microsoft.AspNetCore.TestHost;
|
using Microsoft.AspNetCore.TestHost;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Microsoft.Net.Http.Headers;
|
using Microsoft.Net.Http.Headers;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
|
|
@ -33,13 +34,21 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.UrlRewrite
|
||||||
</rule>
|
</rule>
|
||||||
</rules>
|
</rules>
|
||||||
</rewrite>"));
|
</rewrite>"));
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
app.Run(context => context.Response.WriteAsync(context.Response.Headers[HeaderNames.Location]));
|
app.Run(context => context.Response.WriteAsync(context.Response.Headers[HeaderNames.Location]));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync("article/10/hey");
|
var response = await server.CreateClient().GetAsync("article/10/hey");
|
||||||
|
|
||||||
|
|
@ -57,13 +66,21 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.UrlRewrite
|
||||||
</rule>
|
</rule>
|
||||||
</rules>
|
</rules>
|
||||||
</rewrite>"));
|
</rewrite>"));
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
app.Run(context => context.Response.WriteAsync(context.Request.Path + context.Request.QueryString));
|
app.Run(context => context.Response.WriteAsync(context.Request.Path + context.Request.QueryString));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetStringAsync("/article/10/hey");
|
var response = await server.CreateClient().GetStringAsync("/article/10/hey");
|
||||||
|
|
||||||
|
|
@ -85,13 +102,21 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.UrlRewrite
|
||||||
</rule>
|
</rule>
|
||||||
</rules>
|
</rules>
|
||||||
</rewrite>"));
|
</rewrite>"));
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
app.Run(context => context.Response.WriteAsync(context.Request.Path + context.Request.QueryString));
|
app.Run(context => context.Response.WriteAsync(context.Request.Path + context.Request.QueryString));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetStringAsync("page.asp?p2=321&p1=123");
|
var response = await server.CreateClient().GetStringAsync("page.asp?p2=321&p1=123");
|
||||||
|
|
||||||
|
|
@ -109,13 +134,21 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.UrlRewrite
|
||||||
</rule>
|
</rule>
|
||||||
</rules>
|
</rules>
|
||||||
</rewrite>"));
|
</rewrite>"));
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
app.Run(context => context.Response.WriteAsync(context.Response.Headers[HeaderNames.Location]));
|
app.Run(context => context.Response.WriteAsync(context.Response.Headers[HeaderNames.Location]));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync("HElLo");
|
var response = await server.CreateClient().GetAsync("HElLo");
|
||||||
|
|
||||||
|
|
@ -137,12 +170,20 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.UrlRewrite
|
||||||
</rule>
|
</rule>
|
||||||
</rules>
|
</rules>
|
||||||
</rewrite>"));
|
</rewrite>"));
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync("hey/hello/");
|
var response = await server.CreateClient().GetAsync("hey/hello/");
|
||||||
|
|
||||||
|
|
@ -164,12 +205,20 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.UrlRewrite
|
||||||
</rule>
|
</rule>
|
||||||
</rules>
|
</rules>
|
||||||
</rewrite>"));
|
</rewrite>"));
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync("hey/hello");
|
var response = await server.CreateClient().GetAsync("hey/hello");
|
||||||
|
|
||||||
|
|
@ -190,12 +239,20 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.UrlRewrite
|
||||||
</rule>
|
</rule>
|
||||||
</rules>
|
</rules>
|
||||||
</rewrite>"));
|
</rewrite>"));
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync(new Uri("http://example.com"));
|
var response = await server.CreateClient().GetAsync(new Uri("http://example.com"));
|
||||||
|
|
||||||
|
|
@ -216,7 +273,11 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.UrlRewrite
|
||||||
</rule>
|
</rule>
|
||||||
</rules>
|
</rules>
|
||||||
</rewrite>"));
|
</rewrite>"));
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
|
|
@ -227,7 +288,11 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.UrlRewrite
|
||||||
context.Request.Path +
|
context.Request.Path +
|
||||||
context.Request.QueryString));
|
context.Request.QueryString));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetStringAsync(new Uri("http://example.com"));
|
var response = await server.CreateClient().GetStringAsync(new Uri("http://example.com"));
|
||||||
|
|
||||||
|
|
@ -245,7 +310,11 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.UrlRewrite
|
||||||
</rule>
|
</rule>
|
||||||
</rules>
|
</rules>
|
||||||
</rewrite>"));
|
</rewrite>"));
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
|
|
@ -256,7 +325,11 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.UrlRewrite
|
||||||
context.Request.Path +
|
context.Request.Path +
|
||||||
context.Request.QueryString));
|
context.Request.QueryString));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetStringAsync(new Uri("http://example.com/"));
|
var response = await server.CreateClient().GetStringAsync(new Uri("http://example.com/"));
|
||||||
|
|
||||||
|
|
@ -274,7 +347,11 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.UrlRewrite
|
||||||
</rule>
|
</rule>
|
||||||
</rules>
|
</rules>
|
||||||
</rewrite>"));
|
</rewrite>"));
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
|
|
@ -285,7 +362,11 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.UrlRewrite
|
||||||
context.Request.Path +
|
context.Request.Path +
|
||||||
context.Request.QueryString));
|
context.Request.QueryString));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync(new Uri("http://example.com/"));
|
var response = await server.CreateClient().GetAsync(new Uri("http://example.com/"));
|
||||||
|
|
||||||
|
|
@ -303,7 +384,11 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.UrlRewrite
|
||||||
</rule>
|
</rule>
|
||||||
</rules>
|
</rules>
|
||||||
</rewrite>"));
|
</rewrite>"));
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
|
|
@ -311,7 +396,11 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.UrlRewrite
|
||||||
context.Request.Path +
|
context.Request.Path +
|
||||||
context.Request.QueryString));
|
context.Request.QueryString));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetStringAsync(new Uri("http://example.com/"));
|
var response = await server.CreateClient().GetStringAsync(new Uri("http://example.com/"));
|
||||||
|
|
||||||
|
|
@ -329,7 +418,11 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.UrlRewrite
|
||||||
</rule>
|
</rule>
|
||||||
</rules>
|
</rules>
|
||||||
</rewrite>"));
|
</rewrite>"));
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
|
|
@ -337,7 +430,12 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.UrlRewrite
|
||||||
context.Request.Path +
|
context.Request.Path +
|
||||||
context.Request.QueryString));
|
context.Request.QueryString));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder) { BaseAddress = new Uri("http://localhost:5000/foo") };
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
server.BaseAddress = new Uri("http://localhost:5000/foo");
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync("");
|
var response = await server.CreateClient().GetAsync("");
|
||||||
|
|
||||||
|
|
@ -362,12 +460,20 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.UrlRewrite
|
||||||
</rule>
|
</rule>
|
||||||
</rules>
|
</rules>
|
||||||
</rewrite>"));
|
</rewrite>"));
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync("hey/hello");
|
var response = await server.CreateClient().GetAsync("hey/hello");
|
||||||
|
|
||||||
|
|
@ -390,12 +496,20 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.UrlRewrite
|
||||||
</rule>
|
</rule>
|
||||||
</rules>
|
</rules>
|
||||||
</rewrite>"));
|
</rewrite>"));
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync("article/23?p1=123&p2=abc");
|
var response = await server.CreateClient().GetAsync("article/23?p1=123&p2=abc");
|
||||||
|
|
||||||
|
|
@ -418,12 +532,20 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.UrlRewrite
|
||||||
</rule>
|
</rule>
|
||||||
</rules>
|
</rules>
|
||||||
</rewrite>"));
|
</rewrite>"));
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync("article/23?p1=123&p2=abc");
|
var response = await server.CreateClient().GetAsync("article/23?p1=123&p2=abc");
|
||||||
|
|
||||||
|
|
@ -447,12 +569,20 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.UrlRewrite
|
||||||
</rule>
|
</rule>
|
||||||
</rules>
|
</rules>
|
||||||
</rewrite>"));
|
</rewrite>"));
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var ex = await Assert.ThrowsAsync<IndexOutOfRangeException>(() => server.CreateClient().GetAsync("article/23?p1=123&p2=abc"));
|
var ex = await Assert.ThrowsAsync<IndexOutOfRangeException>(() => server.CreateClient().GetAsync("article/23?p1=123&p2=abc"));
|
||||||
|
|
||||||
|
|
@ -475,13 +605,21 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.UrlRewrite
|
||||||
</globalRules>
|
</globalRules>
|
||||||
</rewrite>";
|
</rewrite>";
|
||||||
var options = new RewriteOptions().AddIISUrlRewrite(new StringReader(xml));
|
var options = new RewriteOptions().AddIISUrlRewrite(new StringReader(xml));
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
app.Run(context => context.Response.WriteAsync(context.Request.GetEncodedUrl()));
|
app.Run(context => context.Response.WriteAsync(context.Request.GetEncodedUrl()));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
// act
|
// act
|
||||||
var response = await server.CreateClient().GetStringAsync($"http://localhost/{Guid.NewGuid()}/foo/bar");
|
var response = await server.CreateClient().GetStringAsync($"http://localhost/{Guid.NewGuid()}/foo/bar");
|
||||||
|
|
@ -512,13 +650,21 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.UrlRewrite
|
||||||
</rewriteMap>
|
</rewriteMap>
|
||||||
</rewriteMaps>
|
</rewriteMaps>
|
||||||
</rewrite>"));
|
</rewrite>"));
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
app.Run(context => context.Response.WriteAsync(context.Request.GetEncodedUrl()));
|
app.Run(context => context.Response.WriteAsync(context.Request.GetEncodedUrl()));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetStringAsync(new Uri(requestUri));
|
var response = await server.CreateClient().GetStringAsync(new Uri(requestUri));
|
||||||
|
|
||||||
|
|
@ -536,12 +682,20 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.UrlRewrite
|
||||||
</rule>
|
</rule>
|
||||||
</rules>
|
</rules>
|
||||||
</rewrite>"));
|
</rewrite>"));
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync("article/10/hey");
|
var response = await server.CreateClient().GetAsync("article/10/hey");
|
||||||
var content = await response.Content.ReadAsStringAsync();
|
var content = await response.Content.ReadAsStringAsync();
|
||||||
|
|
@ -583,13 +737,21 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.UrlRewrite
|
||||||
ruleBuilder.AddUrlAction(action);
|
ruleBuilder.AddUrlAction(action);
|
||||||
|
|
||||||
var options = new RewriteOptions().Add(ruleBuilder.Build());
|
var options = new RewriteOptions().Add(ruleBuilder.Build());
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
app.Run(context => context.Response.WriteAsync(context.Request.GetEncodedUrl()));
|
app.Run(context => context.Response.WriteAsync(context.Request.GetEncodedUrl()));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
// act
|
// act
|
||||||
var response = await server.CreateClient().GetStringAsync("http://localhost/foo/bar");
|
var response = await server.CreateClient().GetStringAsync("http://localhost/foo/bar");
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.TestHost;
|
using Microsoft.AspNetCore.TestHost;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Rewrite.Tests.CodeRules
|
namespace Microsoft.AspNetCore.Rewrite.Tests.CodeRules
|
||||||
|
|
@ -18,7 +19,11 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.CodeRules
|
||||||
public async Task CheckRewritePath()
|
public async Task CheckRewritePath()
|
||||||
{
|
{
|
||||||
var options = new RewriteOptions().AddRewrite("(.*)", "http://example.com/$1", skipRemainingRules: false);
|
var options = new RewriteOptions().AddRewrite("(.*)", "http://example.com/$1", skipRemainingRules: false);
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
|
|
@ -29,7 +34,11 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.CodeRules
|
||||||
context.Request.Path +
|
context.Request.Path +
|
||||||
context.Request.QueryString));
|
context.Request.QueryString));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetStringAsync("foo");
|
var response = await server.CreateClient().GetStringAsync("foo");
|
||||||
|
|
||||||
|
|
@ -40,12 +49,20 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.CodeRules
|
||||||
public async Task CheckRedirectPath()
|
public async Task CheckRedirectPath()
|
||||||
{
|
{
|
||||||
var options = new RewriteOptions().AddRedirect("(.*)", "http://example.com/$1", statusCode: StatusCodes.Status301MovedPermanently);
|
var options = new RewriteOptions().AddRedirect("(.*)", "http://example.com/$1", statusCode: StatusCodes.Status301MovedPermanently);
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync("foo");
|
var response = await server.CreateClient().GetAsync("foo");
|
||||||
|
|
||||||
|
|
@ -55,7 +72,11 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.CodeRules
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task RewriteRulesCanComeFromConfigureOptions()
|
public async Task RewriteRulesCanComeFromConfigureOptions()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.Configure<RewriteOptions>(options =>
|
services.Configure<RewriteOptions>(options =>
|
||||||
|
|
@ -67,7 +88,11 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.CodeRules
|
||||||
{
|
{
|
||||||
app.UseRewriter();
|
app.UseRewriter();
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync("foo");
|
var response = await server.CreateClient().GetAsync("foo");
|
||||||
|
|
||||||
|
|
@ -78,12 +103,20 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.CodeRules
|
||||||
public async Task CheckRedirectPathWithQueryString()
|
public async Task CheckRedirectPathWithQueryString()
|
||||||
{
|
{
|
||||||
var options = new RewriteOptions().AddRedirect("(.*)", "http://example.com/$1", statusCode: StatusCodes.Status301MovedPermanently);
|
var options = new RewriteOptions().AddRedirect("(.*)", "http://example.com/$1", statusCode: StatusCodes.Status301MovedPermanently);
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync("foo?bar=1");
|
var response = await server.CreateClient().GetAsync("foo?bar=1");
|
||||||
|
|
||||||
|
|
@ -98,12 +131,20 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.CodeRules
|
||||||
public async Task CheckRedirectToHttps(int statusCode)
|
public async Task CheckRedirectToHttps(int statusCode)
|
||||||
{
|
{
|
||||||
var options = new RewriteOptions().AddRedirectToHttps(statusCode: statusCode);
|
var options = new RewriteOptions().AddRedirectToHttps(statusCode: statusCode);
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync(new Uri("http://example.com"));
|
var response = await server.CreateClient().GetAsync(new Uri("http://example.com"));
|
||||||
|
|
||||||
|
|
@ -115,12 +156,20 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.CodeRules
|
||||||
public async Task CheckPermanentRedirectToHttps()
|
public async Task CheckPermanentRedirectToHttps()
|
||||||
{
|
{
|
||||||
var options = new RewriteOptions().AddRedirectToHttpsPermanent();
|
var options = new RewriteOptions().AddRedirectToHttpsPermanent();
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync(new Uri("http://example.com"));
|
var response = await server.CreateClient().GetAsync(new Uri("http://example.com"));
|
||||||
|
|
||||||
|
|
@ -134,12 +183,20 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.CodeRules
|
||||||
public async Task CheckRedirectToHttpsWithSslPort(int sslPort, string expected)
|
public async Task CheckRedirectToHttpsWithSslPort(int sslPort, string expected)
|
||||||
{
|
{
|
||||||
var options = new RewriteOptions().AddRedirectToHttps(statusCode: StatusCodes.Status301MovedPermanently, sslPort: sslPort);
|
var options = new RewriteOptions().AddRedirectToHttps(statusCode: StatusCodes.Status301MovedPermanently, sslPort: sslPort);
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync(new Uri("http://example.com"));
|
var response = await server.CreateClient().GetAsync(new Uri("http://example.com"));
|
||||||
|
|
||||||
|
|
@ -155,12 +212,20 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.CodeRules
|
||||||
public async Task CheckRedirectToWwwWithStatusCode(int statusCode)
|
public async Task CheckRedirectToWwwWithStatusCode(int statusCode)
|
||||||
{
|
{
|
||||||
var options = new RewriteOptions().AddRedirectToWww(statusCode: statusCode);
|
var options = new RewriteOptions().AddRedirectToWww(statusCode: statusCode);
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync(new Uri("https://example.com"));
|
var response = await server.CreateClient().GetAsync(new Uri("https://example.com"));
|
||||||
|
|
||||||
|
|
@ -176,12 +241,20 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.CodeRules
|
||||||
public async Task CheckRedirectToWww(string requestUri, string redirectUri)
|
public async Task CheckRedirectToWww(string requestUri, string redirectUri)
|
||||||
{
|
{
|
||||||
var options = new RewriteOptions().AddRedirectToWww();
|
var options = new RewriteOptions().AddRedirectToWww();
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync(new Uri(requestUri));
|
var response = await server.CreateClient().GetAsync(new Uri(requestUri));
|
||||||
|
|
||||||
|
|
@ -193,12 +266,20 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.CodeRules
|
||||||
public async Task CheckPermanentRedirectToWww()
|
public async Task CheckPermanentRedirectToWww()
|
||||||
{
|
{
|
||||||
var options = new RewriteOptions().AddRedirectToWwwPermanent();
|
var options = new RewriteOptions().AddRedirectToWwwPermanent();
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync(new Uri("https://example.com"));
|
var response = await server.CreateClient().GetAsync(new Uri("https://example.com"));
|
||||||
|
|
||||||
|
|
@ -220,12 +301,20 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.CodeRules
|
||||||
public async Task CheckNoRedirectToWww(string requestUri)
|
public async Task CheckNoRedirectToWww(string requestUri)
|
||||||
{
|
{
|
||||||
var options = new RewriteOptions().AddRedirectToWww();
|
var options = new RewriteOptions().AddRedirectToWww();
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync(new Uri(requestUri));
|
var response = await server.CreateClient().GetAsync(new Uri(requestUri));
|
||||||
|
|
||||||
|
|
@ -240,12 +329,20 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.CodeRules
|
||||||
public async Task CheckRedirectToNonWwwWithStatusCode(int statusCode)
|
public async Task CheckRedirectToNonWwwWithStatusCode(int statusCode)
|
||||||
{
|
{
|
||||||
var options = new RewriteOptions().AddRedirectToNonWww(statusCode: statusCode);
|
var options = new RewriteOptions().AddRedirectToNonWww(statusCode: statusCode);
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync(new Uri("https://www.example.com"));
|
var response = await server.CreateClient().GetAsync(new Uri("https://www.example.com"));
|
||||||
|
|
||||||
|
|
@ -261,12 +358,20 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.CodeRules
|
||||||
public async Task CheckRedirectToNonWww(string requestUri, string redirectUri)
|
public async Task CheckRedirectToNonWww(string requestUri, string redirectUri)
|
||||||
{
|
{
|
||||||
var options = new RewriteOptions().AddRedirectToNonWww();
|
var options = new RewriteOptions().AddRedirectToNonWww();
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync(new Uri(requestUri));
|
var response = await server.CreateClient().GetAsync(new Uri(requestUri));
|
||||||
|
|
||||||
|
|
@ -278,12 +383,20 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.CodeRules
|
||||||
public async Task CheckPermanentRedirectToNonWww()
|
public async Task CheckPermanentRedirectToNonWww()
|
||||||
{
|
{
|
||||||
var options = new RewriteOptions().AddRedirectToNonWwwPermanent();
|
var options = new RewriteOptions().AddRedirectToNonWwwPermanent();
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync(new Uri("https://www.example.com"));
|
var response = await server.CreateClient().GetAsync(new Uri("https://www.example.com"));
|
||||||
|
|
||||||
|
|
@ -295,12 +408,20 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.CodeRules
|
||||||
public async Task CheckIfEmptyStringRedirectCorrectly()
|
public async Task CheckIfEmptyStringRedirectCorrectly()
|
||||||
{
|
{
|
||||||
var options = new RewriteOptions().AddRedirect("(.*)", "$1", statusCode: StatusCodes.Status301MovedPermanently);
|
var options = new RewriteOptions().AddRedirect("(.*)", "$1", statusCode: StatusCodes.Status301MovedPermanently);
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync("");
|
var response = await server.CreateClient().GetAsync("");
|
||||||
Assert.Equal("/", response.Headers.Location.OriginalString);
|
Assert.Equal("/", response.Headers.Location.OriginalString);
|
||||||
|
|
@ -310,7 +431,11 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.CodeRules
|
||||||
public async Task CheckIfEmptyStringRewriteCorrectly()
|
public async Task CheckIfEmptyStringRewriteCorrectly()
|
||||||
{
|
{
|
||||||
var options = new RewriteOptions().AddRewrite("(.*)", "$1", skipRemainingRules: false);
|
var options = new RewriteOptions().AddRewrite("(.*)", "$1", skipRemainingRules: false);
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
|
|
@ -318,7 +443,11 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.CodeRules
|
||||||
context.Request.Path +
|
context.Request.Path +
|
||||||
context.Request.QueryString));
|
context.Request.QueryString));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetStringAsync("");
|
var response = await server.CreateClient().GetStringAsync("");
|
||||||
|
|
||||||
|
|
@ -329,7 +458,11 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.CodeRules
|
||||||
public async Task SettingPathBase()
|
public async Task SettingPathBase()
|
||||||
{
|
{
|
||||||
var options = new RewriteOptions().AddRedirect("(.*)", "$1");
|
var options = new RewriteOptions().AddRedirect("(.*)", "$1");
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
|
|
@ -337,7 +470,12 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.CodeRules
|
||||||
context.Request.Path +
|
context.Request.Path +
|
||||||
context.Request.QueryString));
|
context.Request.QueryString));
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder) { BaseAddress = new Uri("http://localhost:5000/foo") };
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
server.BaseAddress = new Uri("http://localhost:5000/foo");
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync("");
|
var response = await server.CreateClient().GetAsync("");
|
||||||
|
|
||||||
|
|
@ -353,12 +491,20 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.CodeRules
|
||||||
public async Task CheckNoRedirectToWwwInNonWhitelistedDomains(string requestUri)
|
public async Task CheckNoRedirectToWwwInNonWhitelistedDomains(string requestUri)
|
||||||
{
|
{
|
||||||
var options = new RewriteOptions().AddRedirectToWww("example2.com");
|
var options = new RewriteOptions().AddRedirectToWww("example2.com");
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync(new Uri(requestUri));
|
var response = await server.CreateClient().GetAsync(new Uri(requestUri));
|
||||||
|
|
||||||
|
|
@ -373,12 +519,20 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.CodeRules
|
||||||
public async Task CheckRedirectToWwwInWhitelistedDomains(string requestUri, string redirectUri)
|
public async Task CheckRedirectToWwwInWhitelistedDomains(string requestUri, string redirectUri)
|
||||||
{
|
{
|
||||||
var options = new RewriteOptions().AddRedirectToWww("example.com");
|
var options = new RewriteOptions().AddRedirectToWww("example.com");
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync(new Uri(requestUri));
|
var response = await server.CreateClient().GetAsync(new Uri(requestUri));
|
||||||
|
|
||||||
|
|
@ -390,12 +544,20 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.CodeRules
|
||||||
public async Task CheckPermanentRedirectToWwwInWhitelistedDomains()
|
public async Task CheckPermanentRedirectToWwwInWhitelistedDomains()
|
||||||
{
|
{
|
||||||
var options = new RewriteOptions().AddRedirectToWwwPermanent("example.com");
|
var options = new RewriteOptions().AddRedirectToWwwPermanent("example.com");
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync(new Uri("https://example.com"));
|
var response = await server.CreateClient().GetAsync(new Uri("https://example.com"));
|
||||||
|
|
||||||
|
|
@ -411,12 +573,20 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.CodeRules
|
||||||
public async Task CheckRedirectToWwwWithStatusCodeInWhitelistedDomains(int statusCode)
|
public async Task CheckRedirectToWwwWithStatusCodeInWhitelistedDomains(int statusCode)
|
||||||
{
|
{
|
||||||
var options = new RewriteOptions().AddRedirectToWww(statusCode: statusCode, "example.com");
|
var options = new RewriteOptions().AddRedirectToWww(statusCode: statusCode, "example.com");
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseRewriter(options);
|
app.UseRewriter(options);
|
||||||
});
|
});
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync(new Uri("https://example.com"));
|
var response = await server.CreateClient().GetAsync(new Uri("https://example.com"));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,12 @@
|
||||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.Builder;
|
using Microsoft.AspNetCore.Builder;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace SessionSample
|
namespace SessionSample
|
||||||
|
|
@ -81,16 +83,19 @@ namespace SessionSample
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Main(string[] args)
|
public static Task Main(string[] args)
|
||||||
{
|
{
|
||||||
var host = new WebHostBuilder()
|
var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
.ConfigureLogging(factory => factory.AddConsole())
|
.ConfigureLogging(factory => factory.AddConsole())
|
||||||
.UseKestrel()
|
.UseKestrel()
|
||||||
.UseIISIntegration()
|
.UseIISIntegration()
|
||||||
.UseStartup<Startup>()
|
.UseStartup<Startup>();
|
||||||
.Build();
|
}).Build();
|
||||||
|
|
||||||
host.Run();
|
return host.RunAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ using Microsoft.AspNetCore.TestHost;
|
||||||
using Microsoft.Extensions.Caching.Distributed;
|
using Microsoft.Extensions.Caching.Distributed;
|
||||||
using Microsoft.Extensions.Caching.Memory;
|
using Microsoft.Extensions.Caching.Memory;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Microsoft.Extensions.Internal;
|
using Microsoft.Extensions.Internal;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Microsoft.Extensions.Logging.Abstractions;
|
using Microsoft.Extensions.Logging.Abstractions;
|
||||||
|
|
@ -29,7 +30,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task ReadingEmptySessionDoesNotCreateCookie()
|
public async Task ReadingEmptySessionDoesNotCreateCookie()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseSession();
|
app.UseSession();
|
||||||
|
|
@ -45,8 +50,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
services.AddDistributedMemoryCache();
|
services.AddDistributedMemoryCache();
|
||||||
services.AddSession();
|
services.AddSession();
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync(string.Empty);
|
var response = await client.GetAsync(string.Empty);
|
||||||
|
|
@ -58,7 +66,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task SettingAValueCausesTheCookieToBeCreated()
|
public async Task SettingAValueCausesTheCookieToBeCreated()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseSession();
|
app.UseSession();
|
||||||
|
|
@ -75,8 +87,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
services.AddDistributedMemoryCache();
|
services.AddDistributedMemoryCache();
|
||||||
services.AddSession();
|
services.AddSession();
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync(string.Empty);
|
var response = await client.GetAsync(string.Empty);
|
||||||
|
|
@ -99,7 +114,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
string requestUri,
|
string requestUri,
|
||||||
bool shouldBeSecureOnly)
|
bool shouldBeSecureOnly)
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseSession(new SessionOptions
|
app.UseSession(new SessionOptions
|
||||||
|
|
@ -123,8 +142,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
services.AddDistributedMemoryCache();
|
services.AddDistributedMemoryCache();
|
||||||
services.AddSession();
|
services.AddSession();
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync(requestUri);
|
var response = await client.GetAsync(requestUri);
|
||||||
|
|
@ -145,7 +167,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task SessionCanBeAccessedOnTheNextRequest()
|
public async Task SessionCanBeAccessedOnTheNextRequest()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseSession();
|
app.UseSession();
|
||||||
|
|
@ -167,8 +193,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
services.AddDistributedMemoryCache();
|
services.AddDistributedMemoryCache();
|
||||||
services.AddSession();
|
services.AddSession();
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync("first");
|
var response = await client.GetAsync("first");
|
||||||
|
|
@ -187,7 +216,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task RemovedItemCannotBeAccessedAgain()
|
public async Task RemovedItemCannotBeAccessedAgain()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseSession();
|
app.UseSession();
|
||||||
|
|
@ -220,8 +253,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
services.AddDistributedMemoryCache();
|
services.AddDistributedMemoryCache();
|
||||||
services.AddSession();
|
services.AddSession();
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync("first");
|
var response = await client.GetAsync("first");
|
||||||
|
|
@ -239,7 +275,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task ClearedItemsCannotBeAccessedAgain()
|
public async Task ClearedItemsCannotBeAccessedAgain()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseSession();
|
app.UseSession();
|
||||||
|
|
@ -271,8 +311,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
services.AddDistributedMemoryCache();
|
services.AddDistributedMemoryCache();
|
||||||
services.AddSession();
|
services.AddSession();
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync("first");
|
var response = await client.GetAsync("first");
|
||||||
|
|
@ -294,7 +337,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
TestSink.EnableWithTypeName<DistributedSession>,
|
TestSink.EnableWithTypeName<DistributedSession>,
|
||||||
TestSink.EnableWithTypeName<DistributedSession>);
|
TestSink.EnableWithTypeName<DistributedSession>);
|
||||||
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseSession();
|
app.UseSession();
|
||||||
|
|
@ -310,8 +357,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
services.AddDistributedMemoryCache();
|
services.AddDistributedMemoryCache();
|
||||||
services.AddSession();
|
services.AddSession();
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync(string.Empty);
|
var response = await client.GetAsync(string.Empty);
|
||||||
|
|
@ -334,7 +384,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
TestSink.EnableWithTypeName<DistributedSession>,
|
TestSink.EnableWithTypeName<DistributedSession>,
|
||||||
TestSink.EnableWithTypeName<DistributedSession>);
|
TestSink.EnableWithTypeName<DistributedSession>);
|
||||||
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseSession();
|
app.UseSession();
|
||||||
|
|
@ -361,9 +415,12 @@ namespace Microsoft.AspNetCore.Session
|
||||||
services.AddDistributedMemoryCache();
|
services.AddDistributedMemoryCache();
|
||||||
services.AddSession(o => o.IdleTimeout = TimeSpan.FromMilliseconds(30));
|
services.AddSession(o => o.IdleTimeout = TimeSpan.FromMilliseconds(30));
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
string result;
|
string result;
|
||||||
using (var server = new TestServer(builder))
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync("first");
|
var response = await client.GetAsync("first");
|
||||||
|
|
@ -392,7 +449,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
public async Task RefreshesSession_WhenSessionData_IsNotModified()
|
public async Task RefreshesSession_WhenSessionData_IsNotModified()
|
||||||
{
|
{
|
||||||
var clock = new TestClock();
|
var clock = new TestClock();
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseSession();
|
app.UseSession();
|
||||||
|
|
@ -424,8 +485,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
services.AddSession(o => o.IdleTimeout = TimeSpan.FromMinutes(20));
|
services.AddSession(o => o.IdleTimeout = TimeSpan.FromMinutes(20));
|
||||||
services.Configure<MemoryCacheOptions>(o => o.Clock = clock);
|
services.Configure<MemoryCacheOptions>(o => o.Clock = clock);
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync("AddDataToSession");
|
var response = await client.GetAsync("AddDataToSession");
|
||||||
|
|
@ -450,7 +514,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task SessionFeature_IsUnregistered_WhenResponseGoingOut()
|
public async Task SessionFeature_IsUnregistered_WhenResponseGoingOut()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.Use(async (httpContext, next) =>
|
app.Use(async (httpContext, next) =>
|
||||||
|
|
@ -473,8 +541,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
services.AddDistributedMemoryCache();
|
services.AddDistributedMemoryCache();
|
||||||
services.AddSession();
|
services.AddSession();
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync(string.Empty);
|
var response = await client.GetAsync(string.Empty);
|
||||||
|
|
@ -485,7 +556,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task SessionFeature_IsUnregistered_WhenResponseGoingOut_AndAnUnhandledExcetionIsThrown()
|
public async Task SessionFeature_IsUnregistered_WhenResponseGoingOut_AndAnUnhandledExcetionIsThrown()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.Use(async (httpContext, next) =>
|
app.Use(async (httpContext, next) =>
|
||||||
|
|
@ -516,8 +591,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
services.AddDistributedMemoryCache();
|
services.AddDistributedMemoryCache();
|
||||||
services.AddSession();
|
services.AddSession();
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync(string.Empty);
|
var response = await client.GetAsync(string.Empty);
|
||||||
|
|
@ -527,7 +605,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task SessionKeys_AreCaseSensitive()
|
public async Task SessionKeys_AreCaseSensitive()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseSession();
|
app.UseSession();
|
||||||
|
|
@ -545,8 +627,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
services.AddDistributedMemoryCache();
|
services.AddDistributedMemoryCache();
|
||||||
services.AddSession();
|
services.AddSession();
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync(string.Empty);
|
var response = await client.GetAsync(string.Empty);
|
||||||
|
|
@ -561,7 +646,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
TestSink.EnableWithTypeName<DistributedSession>,
|
TestSink.EnableWithTypeName<DistributedSession>,
|
||||||
TestSink.EnableWithTypeName<DistributedSession>);
|
TestSink.EnableWithTypeName<DistributedSession>);
|
||||||
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseSession();
|
app.UseSession();
|
||||||
|
|
@ -583,8 +672,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
});
|
});
|
||||||
services.AddSession();
|
services.AddSession();
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync(string.Empty);
|
var response = await client.GetAsync(string.Empty);
|
||||||
|
|
@ -603,7 +695,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
TestSink.EnableWithTypeName<DistributedSession>,
|
TestSink.EnableWithTypeName<DistributedSession>,
|
||||||
TestSink.EnableWithTypeName<DistributedSession>);
|
TestSink.EnableWithTypeName<DistributedSession>);
|
||||||
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseSession();
|
app.UseSession();
|
||||||
|
|
@ -624,8 +720,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
});
|
});
|
||||||
services.AddSession();
|
services.AddSession();
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync(string.Empty);
|
var response = await client.GetAsync(string.Empty);
|
||||||
|
|
@ -644,7 +743,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
TestSink.EnableWithTypeName<DistributedSession>,
|
TestSink.EnableWithTypeName<DistributedSession>,
|
||||||
TestSink.EnableWithTypeName<DistributedSession>);
|
TestSink.EnableWithTypeName<DistributedSession>);
|
||||||
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseSession(new SessionOptions()
|
app.UseSession(new SessionOptions()
|
||||||
|
|
@ -665,8 +768,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
});
|
});
|
||||||
services.AddSession();
|
services.AddSession();
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync(string.Empty);
|
var response = await client.GetAsync(string.Empty);
|
||||||
|
|
@ -685,7 +791,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
TestSink.EnableWithTypeName<DistributedSession>,
|
TestSink.EnableWithTypeName<DistributedSession>,
|
||||||
TestSink.EnableWithTypeName<DistributedSession>);
|
TestSink.EnableWithTypeName<DistributedSession>);
|
||||||
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseSession();
|
app.UseSession();
|
||||||
|
|
@ -706,8 +816,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
});
|
});
|
||||||
services.AddSession();
|
services.AddSession();
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync(string.Empty);
|
var response = await client.GetAsync(string.Empty);
|
||||||
|
|
@ -732,7 +845,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
|| beginScopeContext.LoggerName.Equals(typeof(DistributedSession).FullName);
|
|| beginScopeContext.LoggerName.Equals(typeof(DistributedSession).FullName);
|
||||||
});
|
});
|
||||||
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseSession();
|
app.UseSession();
|
||||||
|
|
@ -751,8 +868,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
});
|
});
|
||||||
services.AddSession();
|
services.AddSession();
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync(string.Empty);
|
var response = await client.GetAsync(string.Empty);
|
||||||
|
|
@ -785,7 +905,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
|| beginScopeContext.LoggerName.Equals(typeof(DistributedSession).FullName);
|
|| beginScopeContext.LoggerName.Equals(typeof(DistributedSession).FullName);
|
||||||
});
|
});
|
||||||
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseSession(new SessionOptions()
|
app.UseSession(new SessionOptions()
|
||||||
|
|
@ -807,8 +931,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
});
|
});
|
||||||
services.AddSession();
|
services.AddSession();
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync(string.Empty);
|
var response = await client.GetAsync(string.Empty);
|
||||||
|
|
@ -844,7 +971,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
|| beginScopeContext.LoggerName.Equals(typeof(DistributedSession).FullName);
|
|| beginScopeContext.LoggerName.Equals(typeof(DistributedSession).FullName);
|
||||||
});
|
});
|
||||||
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseSession();
|
app.UseSession();
|
||||||
|
|
@ -866,8 +997,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
});
|
});
|
||||||
services.AddSession();
|
services.AddSession();
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync(string.Empty);
|
var response = await client.GetAsync(string.Empty);
|
||||||
|
|
@ -901,7 +1035,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
|| beginScopeContext.LoggerName.Equals(typeof(DistributedSession).FullName);
|
|| beginScopeContext.LoggerName.Equals(typeof(DistributedSession).FullName);
|
||||||
});
|
});
|
||||||
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseSession();
|
app.UseSession();
|
||||||
|
|
@ -924,8 +1062,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
});
|
});
|
||||||
services.AddSession();
|
services.AddSession();
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync(string.Empty);
|
var response = await client.GetAsync(string.Empty);
|
||||||
|
|
@ -950,7 +1091,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
TestSink.EnableWithTypeName<SessionMiddleware>,
|
TestSink.EnableWithTypeName<SessionMiddleware>,
|
||||||
TestSink.EnableWithTypeName<SessionMiddleware>);
|
TestSink.EnableWithTypeName<SessionMiddleware>);
|
||||||
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.UseSession();
|
app.UseSession();
|
||||||
|
|
@ -969,8 +1114,11 @@ namespace Microsoft.AspNetCore.Session
|
||||||
});
|
});
|
||||||
services.AddSession();
|
services.AddSession();
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = new TestServer(builder))
|
await host.StartAsync();
|
||||||
|
|
||||||
|
using (var server = host.GetTestServer())
|
||||||
{
|
{
|
||||||
var client = server.CreateClient();
|
var client = server.CreateClient();
|
||||||
var response = await client.GetAsync(string.Empty);
|
var response = await client.GetAsync(string.Empty);
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,10 @@
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.Builder;
|
using Microsoft.AspNetCore.Builder;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace StaticFilesSample
|
namespace StaticFilesSample
|
||||||
|
|
@ -25,9 +27,12 @@ namespace StaticFilesSample
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Main(string[] args)
|
public static Task Main(string[] args)
|
||||||
{
|
{
|
||||||
var host = new WebHostBuilder()
|
var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
.ConfigureLogging(factory =>
|
.ConfigureLogging(factory =>
|
||||||
{
|
{
|
||||||
factory.AddFilter("Console", level => level >= LogLevel.Debug);
|
factory.AddFilter("Console", level => level >= LogLevel.Debug);
|
||||||
|
|
@ -37,10 +42,10 @@ namespace StaticFilesSample
|
||||||
.UseKestrel()
|
.UseKestrel()
|
||||||
// .UseHttpSys()
|
// .UseHttpSys()
|
||||||
.UseIISIntegration()
|
.UseIISIntegration()
|
||||||
.UseStartup<Startup>()
|
.UseStartup<Startup>();
|
||||||
.Build();
|
}).Build();
|
||||||
|
|
||||||
host.Run();
|
return host.RunAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ using Microsoft.AspNetCore.Server.IntegrationTesting.Common;
|
||||||
using Microsoft.AspNetCore.Testing;
|
using Microsoft.AspNetCore.Testing;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Microsoft.Extensions.FileProviders;
|
using Microsoft.Extensions.FileProviders;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Microsoft.Extensions.Logging.Testing;
|
using Microsoft.Extensions.Logging.Testing;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
|
|
@ -25,13 +26,17 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task ReturnsFileForDefaultPattern()
|
public async Task ReturnsFileForDefaultPattern()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddRouting();
|
services.AddRouting();
|
||||||
services.AddSingleton(LoggerFactory);
|
services.AddSingleton(LoggerFactory);
|
||||||
})
|
})
|
||||||
.UseKestrel()
|
.UseKestrel()
|
||||||
|
.UseUrls(TestUrlHelper.GetTestUrl(ServerType.Kestrel))
|
||||||
.UseWebRoot(AppContext.BaseDirectory)
|
.UseWebRoot(AppContext.BaseDirectory)
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
|
|
@ -50,11 +55,12 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = builder.Start(TestUrlHelper.GetTestUrl(ServerType.Kestrel)))
|
await host.StartAsync();
|
||||||
{
|
|
||||||
var environment = server.Services.GetRequiredService<IWebHostEnvironment>();
|
var environment = host.Services.GetRequiredService<IWebHostEnvironment>();
|
||||||
using (var client = new HttpClient { BaseAddress = new Uri(Helpers.GetAddress(server)) })
|
using (var client = new HttpClient { BaseAddress = new Uri(Helpers.GetAddress(host)) })
|
||||||
{
|
{
|
||||||
var response = await client.GetAsync("hello");
|
var response = await client.GetAsync("hello");
|
||||||
var responseText = await response.Content.ReadAsStringAsync();
|
var responseText = await response.Content.ReadAsStringAsync();
|
||||||
|
|
@ -69,18 +75,21 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
AssertFileEquals(environment, "SubFolder/default.html", responseContent);
|
AssertFileEquals(environment, "SubFolder/default.html", responseContent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task ReturnsFileForCustomPattern()
|
public async Task ReturnsFileForCustomPattern()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddRouting();
|
services.AddRouting();
|
||||||
services.AddSingleton(LoggerFactory);
|
services.AddSingleton(LoggerFactory);
|
||||||
})
|
})
|
||||||
.UseKestrel()
|
.UseKestrel()
|
||||||
|
.UseUrls(TestUrlHelper.GetTestUrl(ServerType.Kestrel))
|
||||||
.UseWebRoot(AppContext.BaseDirectory)
|
.UseWebRoot(AppContext.BaseDirectory)
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
|
|
@ -95,11 +104,12 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
endpoints.MapFallbackToFile("/prefix/{*path:nonfile}", "TestDocument.txt");
|
endpoints.MapFallbackToFile("/prefix/{*path:nonfile}", "TestDocument.txt");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = builder.Start(TestUrlHelper.GetTestUrl(ServerType.Kestrel)))
|
await host.StartAsync();
|
||||||
{
|
|
||||||
var environment = server.Services.GetRequiredService<IWebHostEnvironment>();
|
var environment = host.Services.GetRequiredService<IWebHostEnvironment>();
|
||||||
using (var client = new HttpClient { BaseAddress = new Uri(Helpers.GetAddress(server)) })
|
using (var client = new HttpClient { BaseAddress = new Uri(Helpers.GetAddress(host)) })
|
||||||
{
|
{
|
||||||
var response = await client.GetAsync("hello");
|
var response = await client.GetAsync("hello");
|
||||||
var responseText = await response.Content.ReadAsStringAsync();
|
var responseText = await response.Content.ReadAsStringAsync();
|
||||||
|
|
@ -114,7 +124,6 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
AssertFileEquals(environment, "TestDocument.txt", responseContent);
|
AssertFileEquals(environment, "TestDocument.txt", responseContent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private static void AssertFileEquals(IWebHostEnvironment environment, string filePath, byte[] responseContent)
|
private static void AssertFileEquals(IWebHostEnvironment environment, string filePath, byte[] responseContent)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -3,15 +3,18 @@
|
||||||
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
|
using Microsoft.AspNetCore.Hosting.Server;
|
||||||
using Microsoft.AspNetCore.Hosting.Server.Features;
|
using Microsoft.AspNetCore.Hosting.Server.Features;
|
||||||
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.StaticFiles
|
namespace Microsoft.AspNetCore.StaticFiles
|
||||||
{
|
{
|
||||||
public static class Helpers
|
public static class Helpers
|
||||||
{
|
{
|
||||||
public static string GetAddress(IWebHost server)
|
public static string GetAddress(IHost server)
|
||||||
{
|
{
|
||||||
return server.ServerFeatures.Get<IServerAddressesFeature>().Addresses.First();
|
return server.Services.GetService<IServer>().Features.Get<IServerAddressesFeature>().Addresses.First();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ using Microsoft.AspNetCore.Server.IntegrationTesting;
|
||||||
using Microsoft.AspNetCore.Server.IntegrationTesting.Common;
|
using Microsoft.AspNetCore.Server.IntegrationTesting.Common;
|
||||||
using Microsoft.AspNetCore.Testing;
|
using Microsoft.AspNetCore.Testing;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Microsoft.Extensions.Logging.Testing;
|
using Microsoft.Extensions.Logging.Testing;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
|
|
@ -28,28 +29,36 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task ReturnsNotFoundWithoutWwwroot()
|
public async Task ReturnsNotFoundWithoutWwwroot()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
.ConfigureServices(services => services.AddSingleton(LoggerFactory))
|
.ConfigureServices(services => services.AddSingleton(LoggerFactory))
|
||||||
.UseKestrel()
|
.UseKestrel()
|
||||||
|
.UseUrls(TestUrlHelper.GetTestUrl(ServerType.Kestrel))
|
||||||
.Configure(app => app.UseStaticFiles());
|
.Configure(app => app.UseStaticFiles());
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = builder.Start(TestUrlHelper.GetTestUrl(ServerType.Kestrel)))
|
await host.StartAsync();
|
||||||
{
|
|
||||||
using (var client = new HttpClient { BaseAddress = new Uri(Helpers.GetAddress(server)) })
|
using (var client = new HttpClient { BaseAddress = new Uri(Helpers.GetAddress(host)) })
|
||||||
{
|
{
|
||||||
var response = await client.GetAsync("TestDocument.txt");
|
var response = await client.GetAsync("TestDocument.txt");
|
||||||
|
|
||||||
Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
|
Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task Endpoint_PassesThrough()
|
public async Task Endpoint_PassesThrough()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
.ConfigureServices(services => { services.AddSingleton(LoggerFactory); services.AddRouting(); })
|
.ConfigureServices(services => { services.AddSingleton(LoggerFactory); services.AddRouting(); })
|
||||||
.UseKestrel()
|
.UseKestrel()
|
||||||
|
.UseUrls(TestUrlHelper.GetTestUrl(ServerType.Kestrel))
|
||||||
.UseWebRoot(AppContext.BaseDirectory)
|
.UseWebRoot(AppContext.BaseDirectory)
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
|
|
@ -73,10 +82,11 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
|
|
||||||
app.UseEndpoints(endpoints => { });
|
app.UseEndpoints(endpoints => { });
|
||||||
});
|
});
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = builder.Start(TestUrlHelper.GetTestUrl(ServerType.Kestrel)))
|
await host.StartAsync();
|
||||||
{
|
|
||||||
using (var client = new HttpClient { BaseAddress = new Uri(Helpers.GetAddress(server)) })
|
using (var client = new HttpClient { BaseAddress = new Uri(Helpers.GetAddress(host)) })
|
||||||
{
|
{
|
||||||
var response = await client.GetAsync("TestDocument.txt");
|
var response = await client.GetAsync("TestDocument.txt");
|
||||||
|
|
||||||
|
|
@ -84,20 +94,24 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
Assert.Equal("Hi from endpoint.", await response.Content.ReadAsStringAsync());
|
Assert.Equal("Hi from endpoint.", await response.Content.ReadAsStringAsync());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task FoundFile_LastModifiedTrimsSeconds()
|
public async Task FoundFile_LastModifiedTrimsSeconds()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
.ConfigureServices(services => services.AddSingleton(LoggerFactory))
|
.ConfigureServices(services => services.AddSingleton(LoggerFactory))
|
||||||
.UseKestrel()
|
.UseKestrel()
|
||||||
|
.UseUrls(TestUrlHelper.GetTestUrl(ServerType.Kestrel))
|
||||||
.UseWebRoot(AppContext.BaseDirectory)
|
.UseWebRoot(AppContext.BaseDirectory)
|
||||||
.Configure(app => app.UseStaticFiles());
|
.Configure(app => app.UseStaticFiles());
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = builder.Start(TestUrlHelper.GetTestUrl(ServerType.Kestrel)))
|
await host.StartAsync();
|
||||||
{
|
|
||||||
using (var client = new HttpClient { BaseAddress = new Uri(Helpers.GetAddress(server)) })
|
using (var client = new HttpClient { BaseAddress = new Uri(Helpers.GetAddress(host)) })
|
||||||
{
|
{
|
||||||
var last = File.GetLastWriteTimeUtc(Path.Combine(AppContext.BaseDirectory, "TestDocument.txt"));
|
var last = File.GetLastWriteTimeUtc(Path.Combine(AppContext.BaseDirectory, "TestDocument.txt"));
|
||||||
var response = await client.GetAsync("TestDocument.txt");
|
var response = await client.GetAsync("TestDocument.txt");
|
||||||
|
|
@ -107,7 +121,6 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
Assert.Equal(response.Content.Headers.LastModified.Value, trimmed);
|
Assert.Equal(response.Content.Headers.LastModified.Value, trimmed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
[MemberData(nameof(ExistingFiles))]
|
[MemberData(nameof(ExistingFiles))]
|
||||||
|
|
@ -130,20 +143,25 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
|
|
||||||
private async Task FoundFile_Served(string baseUrl, string baseDir, string requestUrl)
|
private async Task FoundFile_Served(string baseUrl, string baseDir, string requestUrl)
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
.ConfigureServices(services => services.AddSingleton(LoggerFactory))
|
.ConfigureServices(services => services.AddSingleton(LoggerFactory))
|
||||||
.UseKestrel()
|
.UseKestrel()
|
||||||
|
.UseUrls(TestUrlHelper.GetTestUrl(ServerType.Kestrel))
|
||||||
.UseWebRoot(Path.Combine(AppContext.BaseDirectory, baseDir))
|
.UseWebRoot(Path.Combine(AppContext.BaseDirectory, baseDir))
|
||||||
.Configure(app => app.UseStaticFiles(new StaticFileOptions
|
.Configure(app => app.UseStaticFiles(new StaticFileOptions
|
||||||
{
|
{
|
||||||
RequestPath = new PathString(baseUrl),
|
RequestPath = new PathString(baseUrl),
|
||||||
}));
|
}));
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = builder.Start(TestUrlHelper.GetTestUrl(ServerType.Kestrel)))
|
await host.StartAsync();
|
||||||
{
|
|
||||||
var hostingEnvironment = server.Services.GetService<IWebHostEnvironment>();
|
|
||||||
|
|
||||||
using (var client = new HttpClient { BaseAddress = new Uri(Helpers.GetAddress(server)) })
|
var hostingEnvironment = host.Services.GetService<IWebHostEnvironment>();
|
||||||
|
|
||||||
|
using (var client = new HttpClient { BaseAddress = new Uri(Helpers.GetAddress(host)) })
|
||||||
{
|
{
|
||||||
var fileInfo = hostingEnvironment.WebRootFileProvider.GetFileInfo(Path.GetFileName(requestUrl));
|
var fileInfo = hostingEnvironment.WebRootFileProvider.GetFileInfo(Path.GetFileName(requestUrl));
|
||||||
var response = await client.GetAsync(requestUrl);
|
var response = await client.GetAsync(requestUrl);
|
||||||
|
|
@ -162,13 +180,15 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
[MemberData(nameof(ExistingFiles))]
|
[MemberData(nameof(ExistingFiles))]
|
||||||
public async Task HeadFile_HeadersButNotBodyServed(string baseUrl, string baseDir, string requestUrl)
|
public async Task HeadFile_HeadersButNotBodyServed(string baseUrl, string baseDir, string requestUrl)
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
.ConfigureServices(services => services.AddSingleton(LoggerFactory))
|
.ConfigureServices(services => services.AddSingleton(LoggerFactory))
|
||||||
.UseKestrel()
|
.UseKestrel()
|
||||||
.UseWebRoot(Path.Combine(AppContext.BaseDirectory, baseDir))
|
.UseWebRoot(Path.Combine(AppContext.BaseDirectory, baseDir))
|
||||||
|
|
@ -176,12 +196,13 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
{
|
{
|
||||||
RequestPath = new PathString(baseUrl),
|
RequestPath = new PathString(baseUrl),
|
||||||
}));
|
}));
|
||||||
|
}).Build();
|
||||||
|
|
||||||
using (var server = builder.Start(TestUrlHelper.GetTestUrl(ServerType.Kestrel)))
|
await host.StartAsync();
|
||||||
{
|
|
||||||
var hostingEnvironment = server.Services.GetService<IWebHostEnvironment>();
|
|
||||||
|
|
||||||
using (var client = new HttpClient { BaseAddress = new Uri(Helpers.GetAddress(server)) })
|
var hostingEnvironment = host.Services.GetService<IWebHostEnvironment>();
|
||||||
|
|
||||||
|
using (var client = new HttpClient { BaseAddress = new Uri(Helpers.GetAddress(host)) })
|
||||||
{
|
{
|
||||||
var fileInfo = hostingEnvironment.WebRootFileProvider.GetFileInfo(Path.GetFileName(requestUrl));
|
var fileInfo = hostingEnvironment.WebRootFileProvider.GetFileInfo(Path.GetFileName(requestUrl));
|
||||||
var request = new HttpRequestMessage(HttpMethod.Head, requestUrl);
|
var request = new HttpRequestMessage(HttpMethod.Head, requestUrl);
|
||||||
|
|
@ -193,7 +214,6 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
Assert.Empty((await response.Content.ReadAsByteArrayAsync()));
|
Assert.Empty((await response.Content.ReadAsByteArrayAsync()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static IEnumerable<object[]> ExistingFiles => new[]
|
public static IEnumerable<object[]> ExistingFiles => new[]
|
||||||
{
|
{
|
||||||
|
|
@ -226,7 +246,10 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
var requestCancelled = new TaskCompletionSource<int>(TaskCreationOptions.RunContinuationsAsynchronously);
|
var requestCancelled = new TaskCompletionSource<int>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||||
var responseComplete = new TaskCompletionSource<int>(TaskCreationOptions.RunContinuationsAsynchronously);
|
var responseComplete = new TaskCompletionSource<int>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
.ConfigureServices(services => services.AddSingleton(LoggerFactory))
|
.ConfigureServices(services => services.AddSingleton(LoggerFactory))
|
||||||
.UseWebRoot(Path.Combine(AppContext.BaseDirectory))
|
.UseWebRoot(Path.Combine(AppContext.BaseDirectory))
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
|
|
@ -247,21 +270,23 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
responseComplete.SetResult(0);
|
responseComplete.SetResult(0);
|
||||||
});
|
});
|
||||||
app.UseStaticFiles();
|
app.UseStaticFiles();
|
||||||
});
|
})
|
||||||
|
.UseUrls(TestUrlHelper.GetTestUrl(serverType));
|
||||||
|
|
||||||
if (serverType == ServerType.HttpSys)
|
if (serverType == ServerType.HttpSys)
|
||||||
{
|
{
|
||||||
builder.UseHttpSys();
|
webHostBuilder.UseHttpSys();
|
||||||
}
|
}
|
||||||
else if (serverType == ServerType.Kestrel)
|
else if (serverType == ServerType.Kestrel)
|
||||||
{
|
{
|
||||||
builder.UseKestrel();
|
webHostBuilder.UseKestrel();
|
||||||
}
|
}
|
||||||
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
using (var server = builder.Start(TestUrlHelper.GetTestUrl(serverType)))
|
|
||||||
{
|
|
||||||
// We don't use HttpClient here because it's disconnect behavior varies across platforms.
|
// We don't use HttpClient here because it's disconnect behavior varies across platforms.
|
||||||
var socket = SendSocketRequestAsync(Helpers.GetAddress(server), "/TestDocument1MB.txt");
|
var socket = SendSocketRequestAsync(Helpers.GetAddress(host), "/TestDocument1MB.txt");
|
||||||
await requestReceived.Task.TimeoutAfter(interval);
|
await requestReceived.Task.TimeoutAfter(interval);
|
||||||
|
|
||||||
socket.LingerState = new LingerOption(true, 0);
|
socket.LingerState = new LingerOption(true, 0);
|
||||||
|
|
@ -271,7 +296,6 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
await responseComplete.Task.TimeoutAfter(interval);
|
await responseComplete.Task.TimeoutAfter(interval);
|
||||||
Assert.Null(exception);
|
Assert.Null(exception);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private Socket SendSocketRequestAsync(string address, string path, string method = "GET")
|
private Socket SendSocketRequestAsync(string address, string path, string method = "GET")
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task ServerShouldReturnETag()
|
public async Task ServerShouldReturnETag()
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
|
|
||||||
HttpResponseMessage response = await server.CreateClient().GetAsync("http://localhost/SubFolder/extra.xml");
|
HttpResponseMessage response = await server.CreateClient().GetAsync("http://localhost/SubFolder/extra.xml");
|
||||||
Assert.NotNull(response.Headers.ETag);
|
Assert.NotNull(response.Headers.ETag);
|
||||||
|
|
@ -28,7 +29,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task SameETagShouldBeReturnedAgain()
|
public async Task SameETagShouldBeReturnedAgain()
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
|
|
||||||
HttpResponseMessage response1 = await server.CreateClient().GetAsync("http://localhost/SubFolder/extra.xml");
|
HttpResponseMessage response1 = await server.CreateClient().GetAsync("http://localhost/SubFolder/extra.xml");
|
||||||
HttpResponseMessage response2 = await server.CreateClient().GetAsync("http://localhost/SubFolder/extra.xml");
|
HttpResponseMessage response2 = await server.CreateClient().GetAsync("http://localhost/SubFolder/extra.xml");
|
||||||
|
|
@ -47,7 +49,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[MemberData(nameof(SupportedMethods))]
|
[MemberData(nameof(SupportedMethods))]
|
||||||
public async Task IfMatchShouldReturn412WhenNotListed(HttpMethod method)
|
public async Task IfMatchShouldReturn412WhenNotListed(HttpMethod method)
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
var req = new HttpRequestMessage(method, "http://localhost/SubFolder/extra.xml");
|
var req = new HttpRequestMessage(method, "http://localhost/SubFolder/extra.xml");
|
||||||
req.Headers.Add("If-Match", "\"fake\"");
|
req.Headers.Add("If-Match", "\"fake\"");
|
||||||
HttpResponseMessage resp = await server.CreateClient().SendAsync(req);
|
HttpResponseMessage resp = await server.CreateClient().SendAsync(req);
|
||||||
|
|
@ -58,7 +61,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[MemberData(nameof(SupportedMethods))]
|
[MemberData(nameof(SupportedMethods))]
|
||||||
public async Task IfMatchShouldBeServedWhenListed(HttpMethod method)
|
public async Task IfMatchShouldBeServedWhenListed(HttpMethod method)
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
HttpResponseMessage original = await server.CreateClient().GetAsync("http://localhost/SubFolder/extra.xml");
|
HttpResponseMessage original = await server.CreateClient().GetAsync("http://localhost/SubFolder/extra.xml");
|
||||||
|
|
||||||
var req = new HttpRequestMessage(method, "http://localhost/SubFolder/extra.xml");
|
var req = new HttpRequestMessage(method, "http://localhost/SubFolder/extra.xml");
|
||||||
|
|
@ -71,7 +75,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[MemberData(nameof(SupportedMethods))]
|
[MemberData(nameof(SupportedMethods))]
|
||||||
public async Task IfMatchShouldBeServedForAsterisk(HttpMethod method)
|
public async Task IfMatchShouldBeServedForAsterisk(HttpMethod method)
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
var req = new HttpRequestMessage(method, "http://localhost/SubFolder/extra.xml");
|
var req = new HttpRequestMessage(method, "http://localhost/SubFolder/extra.xml");
|
||||||
req.Headers.Add("If-Match", "*");
|
req.Headers.Add("If-Match", "*");
|
||||||
HttpResponseMessage resp = await server.CreateClient().SendAsync(req);
|
HttpResponseMessage resp = await server.CreateClient().SendAsync(req);
|
||||||
|
|
@ -82,7 +87,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[MemberData(nameof(UnsupportedMethods))]
|
[MemberData(nameof(UnsupportedMethods))]
|
||||||
public async Task IfMatchShouldBeIgnoredForUnsupportedMethods(HttpMethod method)
|
public async Task IfMatchShouldBeIgnoredForUnsupportedMethods(HttpMethod method)
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
var req = new HttpRequestMessage(method, "http://localhost/SubFolder/extra.xml");
|
var req = new HttpRequestMessage(method, "http://localhost/SubFolder/extra.xml");
|
||||||
req.Headers.Add("If-Match", "*");
|
req.Headers.Add("If-Match", "*");
|
||||||
HttpResponseMessage resp = await server.CreateClient().SendAsync(req);
|
HttpResponseMessage resp = await server.CreateClient().SendAsync(req);
|
||||||
|
|
@ -107,7 +113,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[MemberData(nameof(SupportedMethods))]
|
[MemberData(nameof(SupportedMethods))]
|
||||||
public async Task IfNoneMatchShouldReturn304ForMatching(HttpMethod method)
|
public async Task IfNoneMatchShouldReturn304ForMatching(HttpMethod method)
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
HttpResponseMessage resp1 = await server.CreateClient().GetAsync("http://localhost/SubFolder/extra.xml");
|
HttpResponseMessage resp1 = await server.CreateClient().GetAsync("http://localhost/SubFolder/extra.xml");
|
||||||
|
|
||||||
var req2 = new HttpRequestMessage(method, "http://localhost/SubFolder/extra.xml");
|
var req2 = new HttpRequestMessage(method, "http://localhost/SubFolder/extra.xml");
|
||||||
|
|
@ -120,7 +127,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[MemberData(nameof(SupportedMethods))]
|
[MemberData(nameof(SupportedMethods))]
|
||||||
public async Task IfNoneMatchAllShouldReturn304ForMatching(HttpMethod method)
|
public async Task IfNoneMatchAllShouldReturn304ForMatching(HttpMethod method)
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
HttpResponseMessage resp1 = await server.CreateClient().GetAsync("http://localhost/SubFolder/extra.xml");
|
HttpResponseMessage resp1 = await server.CreateClient().GetAsync("http://localhost/SubFolder/extra.xml");
|
||||||
|
|
||||||
var req2 = new HttpRequestMessage(method, "http://localhost/SubFolder/extra.xml");
|
var req2 = new HttpRequestMessage(method, "http://localhost/SubFolder/extra.xml");
|
||||||
|
|
@ -133,7 +141,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[MemberData(nameof(UnsupportedMethods))]
|
[MemberData(nameof(UnsupportedMethods))]
|
||||||
public async Task IfNoneMatchShouldBeIgnoredForNonTwoHundredAnd304Responses(HttpMethod method)
|
public async Task IfNoneMatchShouldBeIgnoredForNonTwoHundredAnd304Responses(HttpMethod method)
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
HttpResponseMessage resp1 = await server.CreateClient().GetAsync("http://localhost/SubFolder/extra.xml");
|
HttpResponseMessage resp1 = await server.CreateClient().GetAsync("http://localhost/SubFolder/extra.xml");
|
||||||
|
|
||||||
var req2 = new HttpRequestMessage(method, "http://localhost/SubFolder/extra.xml");
|
var req2 = new HttpRequestMessage(method, "http://localhost/SubFolder/extra.xml");
|
||||||
|
|
@ -156,7 +165,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[MemberData(nameof(SupportedMethods))]
|
[MemberData(nameof(SupportedMethods))]
|
||||||
public async Task ServerShouldReturnLastModified(HttpMethod method)
|
public async Task ServerShouldReturnLastModified(HttpMethod method)
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
|
|
||||||
HttpResponseMessage response = await server.CreateClient().SendAsync(
|
HttpResponseMessage response = await server.CreateClient().SendAsync(
|
||||||
new HttpRequestMessage(method, "http://localhost/SubFolder/extra.xml"));
|
new HttpRequestMessage(method, "http://localhost/SubFolder/extra.xml"));
|
||||||
|
|
@ -179,7 +189,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[MemberData(nameof(SupportedMethods))]
|
[MemberData(nameof(SupportedMethods))]
|
||||||
public async Task MatchingBothConditionsReturnsNotModified(HttpMethod method)
|
public async Task MatchingBothConditionsReturnsNotModified(HttpMethod method)
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
HttpResponseMessage resp1 = await server
|
HttpResponseMessage resp1 = await server
|
||||||
.CreateRequest("/SubFolder/extra.xml")
|
.CreateRequest("/SubFolder/extra.xml")
|
||||||
.SendAsync(method.Method);
|
.SendAsync(method.Method);
|
||||||
|
|
@ -198,7 +209,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[MemberData(nameof(SupportedMethods))]
|
[MemberData(nameof(SupportedMethods))]
|
||||||
public async Task MatchingAtLeastOneETagReturnsNotModified(HttpMethod method)
|
public async Task MatchingAtLeastOneETagReturnsNotModified(HttpMethod method)
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
HttpResponseMessage resp1 = await server
|
HttpResponseMessage resp1 = await server
|
||||||
.CreateRequest("/SubFolder/extra.xml")
|
.CreateRequest("/SubFolder/extra.xml")
|
||||||
.SendAsync(method.Method);
|
.SendAsync(method.Method);
|
||||||
|
|
@ -223,7 +235,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[MemberData(nameof(SupportedMethods))]
|
[MemberData(nameof(SupportedMethods))]
|
||||||
public async Task MissingEitherOrBothConditionsReturnsNormally(HttpMethod method)
|
public async Task MissingEitherOrBothConditionsReturnsNormally(HttpMethod method)
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
HttpResponseMessage resp1 = await server
|
HttpResponseMessage resp1 = await server
|
||||||
.CreateRequest("/SubFolder/extra.xml")
|
.CreateRequest("/SubFolder/extra.xml")
|
||||||
.SendAsync(method.Method);
|
.SendAsync(method.Method);
|
||||||
|
|
@ -271,7 +284,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[MemberData(nameof(SupportedMethods))]
|
[MemberData(nameof(SupportedMethods))]
|
||||||
public async Task InvalidIfModifiedSinceDateFormatGivesNormalGet(HttpMethod method)
|
public async Task InvalidIfModifiedSinceDateFormatGivesNormalGet(HttpMethod method)
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
|
|
||||||
HttpResponseMessage res = await server
|
HttpResponseMessage res = await server
|
||||||
.CreateRequest("/SubFolder/extra.xml")
|
.CreateRequest("/SubFolder/extra.xml")
|
||||||
|
|
@ -285,7 +299,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[MemberData(nameof(SupportedMethods))]
|
[MemberData(nameof(SupportedMethods))]
|
||||||
public async Task FutureIfModifiedSinceDateFormatGivesNormalGet(HttpMethod method)
|
public async Task FutureIfModifiedSinceDateFormatGivesNormalGet(HttpMethod method)
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
|
|
||||||
HttpResponseMessage res = await server
|
HttpResponseMessage res = await server
|
||||||
.CreateRequest("/SubFolder/extra.xml")
|
.CreateRequest("/SubFolder/extra.xml")
|
||||||
|
|
@ -306,7 +321,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[MemberData(nameof(SupportedMethods))]
|
[MemberData(nameof(SupportedMethods))]
|
||||||
public async Task IfModifiedSinceDateGreaterThanLastModifiedShouldReturn304(HttpMethod method)
|
public async Task IfModifiedSinceDateGreaterThanLastModifiedShouldReturn304(HttpMethod method)
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
|
|
||||||
HttpResponseMessage res1 = await server
|
HttpResponseMessage res1 = await server
|
||||||
.CreateRequest("/SubFolder/extra.xml")
|
.CreateRequest("/SubFolder/extra.xml")
|
||||||
|
|
@ -324,7 +340,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[MemberData(nameof(SupportedMethods))]
|
[MemberData(nameof(SupportedMethods))]
|
||||||
public async Task SupportsIfModifiedDateFormats(HttpMethod method)
|
public async Task SupportsIfModifiedDateFormats(HttpMethod method)
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
HttpResponseMessage res1 = await server
|
HttpResponseMessage res1 = await server
|
||||||
.CreateRequest("/SubFolder/extra.xml")
|
.CreateRequest("/SubFolder/extra.xml")
|
||||||
.SendAsync(method.Method);
|
.SendAsync(method.Method);
|
||||||
|
|
@ -351,7 +368,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[MemberData(nameof(SupportedMethods))]
|
[MemberData(nameof(SupportedMethods))]
|
||||||
public async Task IfModifiedSinceDateLessThanLastModifiedShouldReturn200(HttpMethod method)
|
public async Task IfModifiedSinceDateLessThanLastModifiedShouldReturn200(HttpMethod method)
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
|
|
||||||
HttpResponseMessage res1 = await server
|
HttpResponseMessage res1 = await server
|
||||||
.CreateRequest("/SubFolder/extra.xml")
|
.CreateRequest("/SubFolder/extra.xml")
|
||||||
|
|
@ -369,7 +387,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[MemberData(nameof(SupportedMethods))]
|
[MemberData(nameof(SupportedMethods))]
|
||||||
public async Task InvalidIfUnmodifiedSinceDateFormatGivesNormalGet(HttpMethod method)
|
public async Task InvalidIfUnmodifiedSinceDateFormatGivesNormalGet(HttpMethod method)
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
|
|
||||||
HttpResponseMessage res = await server
|
HttpResponseMessage res = await server
|
||||||
.CreateRequest("/SubFolder/extra.xml")
|
.CreateRequest("/SubFolder/extra.xml")
|
||||||
|
|
@ -383,7 +402,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[MemberData(nameof(SupportedMethods))]
|
[MemberData(nameof(SupportedMethods))]
|
||||||
public async Task FutureIfUnmodifiedSinceDateFormatGivesNormalGet(HttpMethod method)
|
public async Task FutureIfUnmodifiedSinceDateFormatGivesNormalGet(HttpMethod method)
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
|
|
||||||
HttpResponseMessage res = await server
|
HttpResponseMessage res = await server
|
||||||
.CreateRequest("/SubFolder/extra.xml")
|
.CreateRequest("/SubFolder/extra.xml")
|
||||||
|
|
@ -397,7 +417,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[MemberData(nameof(SupportedMethods))]
|
[MemberData(nameof(SupportedMethods))]
|
||||||
public async Task IfUnmodifiedSinceDateLessThanLastModifiedShouldReturn412(HttpMethod method)
|
public async Task IfUnmodifiedSinceDateLessThanLastModifiedShouldReturn412(HttpMethod method)
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
|
|
||||||
HttpResponseMessage res1 = await server
|
HttpResponseMessage res1 = await server
|
||||||
.CreateRequest("/SubFolder/extra.xml")
|
.CreateRequest("/SubFolder/extra.xml")
|
||||||
|
|
|
||||||
|
|
@ -24,10 +24,12 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
public async Task NullArguments()
|
public async Task NullArguments()
|
||||||
{
|
{
|
||||||
// No exception, default provided
|
// No exception, default provided
|
||||||
StaticFilesTestServer.Create(app => app.UseDefaultFiles(new DefaultFilesOptions { FileProvider = null }));
|
using (await StaticFilesTestServer.Create(app => app.UseDefaultFiles(new DefaultFilesOptions { FileProvider = null })))
|
||||||
|
{ }
|
||||||
|
|
||||||
// PathString(null) is OK.
|
// PathString(null) is OK.
|
||||||
var server = StaticFilesTestServer.Create(app => app.UseDefaultFiles((string)null));
|
using var host = await StaticFilesTestServer.Create(app => app.UseDefaultFiles((string)null));
|
||||||
|
using var server = host.GetTestServer();
|
||||||
var response = await server.CreateClient().GetAsync("/");
|
var response = await server.CreateClient().GetAsync("/");
|
||||||
Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
|
Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
|
||||||
}
|
}
|
||||||
|
|
@ -64,7 +66,7 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
{
|
{
|
||||||
using (var fileProvider = new PhysicalFileProvider(Path.Combine(AppContext.BaseDirectory, baseDir)))
|
using (var fileProvider = new PhysicalFileProvider(Path.Combine(AppContext.BaseDirectory, baseDir)))
|
||||||
{
|
{
|
||||||
var server = StaticFilesTestServer.Create(app =>
|
using var host = await StaticFilesTestServer.Create(app =>
|
||||||
{
|
{
|
||||||
app.UseDefaultFiles(new DefaultFilesOptions
|
app.UseDefaultFiles(new DefaultFilesOptions
|
||||||
{
|
{
|
||||||
|
|
@ -74,6 +76,7 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
});
|
});
|
||||||
app.Run(context => context.Response.WriteAsync(context.Request.Path.Value));
|
app.Run(context => context.Response.WriteAsync(context.Request.Path.Value));
|
||||||
});
|
});
|
||||||
|
using var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync(requestUrl);
|
var response = await server.CreateClient().GetAsync(requestUrl);
|
||||||
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
|
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
|
||||||
|
|
@ -86,7 +89,7 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
{
|
{
|
||||||
using (var fileProvider = new PhysicalFileProvider(Path.Combine(AppContext.BaseDirectory, ".")))
|
using (var fileProvider = new PhysicalFileProvider(Path.Combine(AppContext.BaseDirectory, ".")))
|
||||||
{
|
{
|
||||||
var server = StaticFilesTestServer.Create(
|
using var host = await StaticFilesTestServer.Create(
|
||||||
app =>
|
app =>
|
||||||
{
|
{
|
||||||
app.UseRouting();
|
app.UseRouting();
|
||||||
|
|
@ -113,6 +116,7 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
app.UseEndpoints(endpoints => { });
|
app.UseEndpoints(endpoints => { });
|
||||||
},
|
},
|
||||||
services => { services.AddDirectoryBrowser(); services.AddRouting(); });
|
services => { services.AddDirectoryBrowser(); services.AddRouting(); });
|
||||||
|
using var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateRequest("/SubFolder/").GetAsync();
|
var response = await server.CreateRequest("/SubFolder/").GetAsync();
|
||||||
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
|
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
|
||||||
|
|
@ -165,7 +169,7 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
{
|
{
|
||||||
using (var fileProvider = new PhysicalFileProvider(Path.Combine(AppContext.BaseDirectory, baseDir)))
|
using (var fileProvider = new PhysicalFileProvider(Path.Combine(AppContext.BaseDirectory, baseDir)))
|
||||||
{
|
{
|
||||||
var server = StaticFilesTestServer.Create(app =>
|
using var host = await StaticFilesTestServer.Create(app =>
|
||||||
{
|
{
|
||||||
app.UseDefaultFiles(new DefaultFilesOptions
|
app.UseDefaultFiles(new DefaultFilesOptions
|
||||||
{
|
{
|
||||||
|
|
@ -175,6 +179,7 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
});
|
});
|
||||||
app.Run(context => context.Response.WriteAsync(context.Request.Path.Value));
|
app.Run(context => context.Response.WriteAsync(context.Request.Path.Value));
|
||||||
});
|
});
|
||||||
|
using var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync(requestUrl);
|
var response = await server.CreateClient().GetAsync(requestUrl);
|
||||||
|
|
||||||
|
|
@ -211,11 +216,12 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
{
|
{
|
||||||
using (var fileProvider = new PhysicalFileProvider(Path.Combine(AppContext.BaseDirectory, baseDir)))
|
using (var fileProvider = new PhysicalFileProvider(Path.Combine(AppContext.BaseDirectory, baseDir)))
|
||||||
{
|
{
|
||||||
var server = StaticFilesTestServer.Create(app => app.UseDefaultFiles(new DefaultFilesOptions
|
using var host = await StaticFilesTestServer.Create(app => app.UseDefaultFiles(new DefaultFilesOptions
|
||||||
{
|
{
|
||||||
RequestPath = new PathString(baseUrl),
|
RequestPath = new PathString(baseUrl),
|
||||||
FileProvider = fileProvider
|
FileProvider = fileProvider
|
||||||
}));
|
}));
|
||||||
|
using var server = host.GetTestServer();
|
||||||
var response = await server.CreateRequest(requestUrl + queryString).GetAsync();
|
var response = await server.CreateRequest(requestUrl + queryString).GetAsync();
|
||||||
|
|
||||||
Assert.Equal(HttpStatusCode.Moved, response.StatusCode);
|
Assert.Equal(HttpStatusCode.Moved, response.StatusCode);
|
||||||
|
|
@ -265,12 +271,13 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
{
|
{
|
||||||
using (var fileProvider = new PhysicalFileProvider(Path.Combine(AppContext.BaseDirectory, baseDir)))
|
using (var fileProvider = new PhysicalFileProvider(Path.Combine(AppContext.BaseDirectory, baseDir)))
|
||||||
{
|
{
|
||||||
var server = StaticFilesTestServer.Create(app => app.UseDefaultFiles(new DefaultFilesOptions
|
using var host = await StaticFilesTestServer.Create(app => app.UseDefaultFiles(new DefaultFilesOptions
|
||||||
{
|
{
|
||||||
RequestPath = new PathString(baseUrl),
|
RequestPath = new PathString(baseUrl),
|
||||||
FileProvider = fileProvider,
|
FileProvider = fileProvider,
|
||||||
RedirectToAppendTrailingSlash = appendTrailingSlash
|
RedirectToAppendTrailingSlash = appendTrailingSlash
|
||||||
}));
|
}));
|
||||||
|
using var server = host.GetTestServer();
|
||||||
var response = await server.CreateRequest(requestUrl).GetAsync();
|
var response = await server.CreateRequest(requestUrl).GetAsync();
|
||||||
|
|
||||||
Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); // Passed through
|
Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); // Passed through
|
||||||
|
|
|
||||||
|
|
@ -21,10 +21,10 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
public class DirectoryBrowserMiddlewareTests
|
public class DirectoryBrowserMiddlewareTests
|
||||||
{
|
{
|
||||||
[Fact]
|
[Fact]
|
||||||
public void WorksWithoutEncoderRegistered()
|
public async Task WorksWithoutEncoderRegistered()
|
||||||
{
|
{
|
||||||
// No exception, uses HtmlEncoder.Default
|
// No exception, uses HtmlEncoder.Default
|
||||||
StaticFilesTestServer.Create(
|
using var host = await StaticFilesTestServer.Create(
|
||||||
app => app.UseDirectoryBrowser());
|
app => app.UseDirectoryBrowser());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -32,19 +32,24 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
public async Task NullArguments()
|
public async Task NullArguments()
|
||||||
{
|
{
|
||||||
// No exception, default provided
|
// No exception, default provided
|
||||||
StaticFilesTestServer.Create(
|
using (await StaticFilesTestServer.Create(
|
||||||
app => app.UseDirectoryBrowser(new DirectoryBrowserOptions { Formatter = null }),
|
app => app.UseDirectoryBrowser(new DirectoryBrowserOptions { Formatter = null }),
|
||||||
services => services.AddDirectoryBrowser());
|
services => services.AddDirectoryBrowser()))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
// No exception, default provided
|
// No exception, default provided
|
||||||
StaticFilesTestServer.Create(
|
using (await StaticFilesTestServer.Create(
|
||||||
app => app.UseDirectoryBrowser(new DirectoryBrowserOptions { FileProvider = null }),
|
app => app.UseDirectoryBrowser(new DirectoryBrowserOptions { FileProvider = null }),
|
||||||
services => services.AddDirectoryBrowser());
|
services => services.AddDirectoryBrowser()))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
// PathString(null) is OK.
|
// PathString(null) is OK.
|
||||||
var server = StaticFilesTestServer.Create(
|
using var host = await StaticFilesTestServer.Create(
|
||||||
app => app.UseDirectoryBrowser((string)null),
|
app => app.UseDirectoryBrowser((string)null),
|
||||||
services => services.AddDirectoryBrowser());
|
services => services.AddDirectoryBrowser());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync("/");
|
var response = await server.CreateClient().GetAsync("/");
|
||||||
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
|
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
|
||||||
|
|
@ -82,7 +87,7 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
{
|
{
|
||||||
using (var fileProvider = new PhysicalFileProvider(Path.Combine(AppContext.BaseDirectory, baseDir)))
|
using (var fileProvider = new PhysicalFileProvider(Path.Combine(AppContext.BaseDirectory, baseDir)))
|
||||||
{
|
{
|
||||||
var server = StaticFilesTestServer.Create(
|
using var host = await StaticFilesTestServer.Create(
|
||||||
app => app.UseDirectoryBrowser(new DirectoryBrowserOptions
|
app => app.UseDirectoryBrowser(new DirectoryBrowserOptions
|
||||||
{
|
{
|
||||||
RequestPath = new PathString(baseUrl),
|
RequestPath = new PathString(baseUrl),
|
||||||
|
|
@ -90,6 +95,7 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
RedirectToAppendTrailingSlash = appendTrailingSlash
|
RedirectToAppendTrailingSlash = appendTrailingSlash
|
||||||
}),
|
}),
|
||||||
services => services.AddDirectoryBrowser());
|
services => services.AddDirectoryBrowser());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
var response = await server.CreateRequest(requestUrl).GetAsync();
|
var response = await server.CreateRequest(requestUrl).GetAsync();
|
||||||
Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
|
Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
|
||||||
}
|
}
|
||||||
|
|
@ -100,7 +106,7 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
{
|
{
|
||||||
using (var fileProvider = new PhysicalFileProvider(Path.Combine(AppContext.BaseDirectory, ".")))
|
using (var fileProvider = new PhysicalFileProvider(Path.Combine(AppContext.BaseDirectory, ".")))
|
||||||
{
|
{
|
||||||
var server = StaticFilesTestServer.Create(
|
using var host = await StaticFilesTestServer.Create(
|
||||||
app =>
|
app =>
|
||||||
{
|
{
|
||||||
app.UseRouting();
|
app.UseRouting();
|
||||||
|
|
@ -128,6 +134,7 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
app.UseEndpoints(endpoints => { });
|
app.UseEndpoints(endpoints => { });
|
||||||
},
|
},
|
||||||
services => { services.AddDirectoryBrowser(); services.AddRouting(); });
|
services => { services.AddDirectoryBrowser(); services.AddRouting(); });
|
||||||
|
using var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateRequest("/").GetAsync();
|
var response = await server.CreateRequest("/").GetAsync();
|
||||||
Assert.Equal(HttpStatusCode.NotAcceptable, response.StatusCode);
|
Assert.Equal(HttpStatusCode.NotAcceptable, response.StatusCode);
|
||||||
|
|
@ -174,7 +181,7 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
{
|
{
|
||||||
using (var fileProvider = new PhysicalFileProvider(Path.Combine(AppContext.BaseDirectory, baseDir)))
|
using (var fileProvider = new PhysicalFileProvider(Path.Combine(AppContext.BaseDirectory, baseDir)))
|
||||||
{
|
{
|
||||||
var server = StaticFilesTestServer.Create(
|
using var host = await StaticFilesTestServer.Create(
|
||||||
app => app.UseDirectoryBrowser(new DirectoryBrowserOptions
|
app => app.UseDirectoryBrowser(new DirectoryBrowserOptions
|
||||||
{
|
{
|
||||||
RequestPath = new PathString(baseUrl),
|
RequestPath = new PathString(baseUrl),
|
||||||
|
|
@ -182,6 +189,7 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
RedirectToAppendTrailingSlash = appendTrailingSlash,
|
RedirectToAppendTrailingSlash = appendTrailingSlash,
|
||||||
}),
|
}),
|
||||||
services => services.AddDirectoryBrowser());
|
services => services.AddDirectoryBrowser());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
var response = await server.CreateRequest(requestUrl).GetAsync();
|
var response = await server.CreateRequest(requestUrl).GetAsync();
|
||||||
|
|
||||||
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
|
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
|
||||||
|
|
@ -217,13 +225,14 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
{
|
{
|
||||||
using (var fileProvider = new PhysicalFileProvider(Path.Combine(AppContext.BaseDirectory, baseDir)))
|
using (var fileProvider = new PhysicalFileProvider(Path.Combine(AppContext.BaseDirectory, baseDir)))
|
||||||
{
|
{
|
||||||
var server = StaticFilesTestServer.Create(
|
using var host = await StaticFilesTestServer.Create(
|
||||||
app => app.UseDirectoryBrowser(new DirectoryBrowserOptions
|
app => app.UseDirectoryBrowser(new DirectoryBrowserOptions
|
||||||
{
|
{
|
||||||
RequestPath = new PathString(baseUrl),
|
RequestPath = new PathString(baseUrl),
|
||||||
FileProvider = fileProvider
|
FileProvider = fileProvider
|
||||||
}),
|
}),
|
||||||
services => services.AddDirectoryBrowser());
|
services => services.AddDirectoryBrowser());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateRequest(requestUrl + queryString).GetAsync();
|
var response = await server.CreateRequest(requestUrl + queryString).GetAsync();
|
||||||
|
|
||||||
|
|
@ -266,7 +275,7 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
{
|
{
|
||||||
using (var fileProvider = new PhysicalFileProvider(Path.Combine(AppContext.BaseDirectory, baseDir)))
|
using (var fileProvider = new PhysicalFileProvider(Path.Combine(AppContext.BaseDirectory, baseDir)))
|
||||||
{
|
{
|
||||||
var server = StaticFilesTestServer.Create(
|
using var host = await StaticFilesTestServer.Create(
|
||||||
app => app.UseDirectoryBrowser(new DirectoryBrowserOptions
|
app => app.UseDirectoryBrowser(new DirectoryBrowserOptions
|
||||||
{
|
{
|
||||||
RequestPath = new PathString(baseUrl),
|
RequestPath = new PathString(baseUrl),
|
||||||
|
|
@ -274,6 +283,7 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
RedirectToAppendTrailingSlash = appendTrailingSlash
|
RedirectToAppendTrailingSlash = appendTrailingSlash
|
||||||
}),
|
}),
|
||||||
services => services.AddDirectoryBrowser());
|
services => services.AddDirectoryBrowser());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateRequest(requestUrl).PostAsync();
|
var response = await server.CreateRequest(requestUrl).PostAsync();
|
||||||
Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
|
Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
|
||||||
|
|
@ -313,7 +323,7 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
{
|
{
|
||||||
using (var fileProvider = new PhysicalFileProvider(Path.Combine(AppContext.BaseDirectory, baseDir)))
|
using (var fileProvider = new PhysicalFileProvider(Path.Combine(AppContext.BaseDirectory, baseDir)))
|
||||||
{
|
{
|
||||||
var server = StaticFilesTestServer.Create(
|
using var host = await StaticFilesTestServer.Create(
|
||||||
app => app.UseDirectoryBrowser(new DirectoryBrowserOptions
|
app => app.UseDirectoryBrowser(new DirectoryBrowserOptions
|
||||||
{
|
{
|
||||||
RequestPath = new PathString(baseUrl),
|
RequestPath = new PathString(baseUrl),
|
||||||
|
|
@ -321,6 +331,7 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
RedirectToAppendTrailingSlash = appendTrailingSlash
|
RedirectToAppendTrailingSlash = appendTrailingSlash
|
||||||
}),
|
}),
|
||||||
services => services.AddDirectoryBrowser());
|
services => services.AddDirectoryBrowser());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateRequest(requestUrl).SendAsync("HEAD");
|
var response = await server.CreateRequest(requestUrl).SendAsync("HEAD");
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task IfRangeWithCurrentEtagShouldServePartialContent()
|
public async Task IfRangeWithCurrentEtagShouldServePartialContent()
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
HttpResponseMessage original = await server.CreateClient().GetAsync("http://localhost/SubFolder/ranges.txt");
|
HttpResponseMessage original = await server.CreateClient().GetAsync("http://localhost/SubFolder/ranges.txt");
|
||||||
|
|
||||||
var req = new HttpRequestMessage(HttpMethod.Get, "http://localhost/SubFolder/ranges.txt");
|
var req = new HttpRequestMessage(HttpMethod.Get, "http://localhost/SubFolder/ranges.txt");
|
||||||
|
|
@ -39,7 +40,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task HEADIfRangeWithCurrentEtagShouldReturn200Ok()
|
public async Task HEADIfRangeWithCurrentEtagShouldReturn200Ok()
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
HttpResponseMessage original = await server.CreateClient().GetAsync("http://localhost/SubFolder/ranges.txt");
|
HttpResponseMessage original = await server.CreateClient().GetAsync("http://localhost/SubFolder/ranges.txt");
|
||||||
|
|
||||||
var req = new HttpRequestMessage(HttpMethod.Head, "http://localhost/SubFolder/ranges.txt");
|
var req = new HttpRequestMessage(HttpMethod.Head, "http://localhost/SubFolder/ranges.txt");
|
||||||
|
|
@ -59,7 +61,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task IfRangeWithCurrentDateShouldServePartialContent()
|
public async Task IfRangeWithCurrentDateShouldServePartialContent()
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
HttpResponseMessage original = await server.CreateClient().GetAsync("http://localhost/SubFolder/ranges.txt");
|
HttpResponseMessage original = await server.CreateClient().GetAsync("http://localhost/SubFolder/ranges.txt");
|
||||||
|
|
||||||
var req = new HttpRequestMessage(HttpMethod.Get, "http://localhost/SubFolder/ranges.txt");
|
var req = new HttpRequestMessage(HttpMethod.Get, "http://localhost/SubFolder/ranges.txt");
|
||||||
|
|
@ -75,7 +78,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task IfModifiedSinceWithPastDateShouldServePartialContent()
|
public async Task IfModifiedSinceWithPastDateShouldServePartialContent()
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
HttpResponseMessage original = await server.CreateClient().GetAsync("http://localhost/SubFolder/ranges.txt");
|
HttpResponseMessage original = await server.CreateClient().GetAsync("http://localhost/SubFolder/ranges.txt");
|
||||||
|
|
||||||
var req = new HttpRequestMessage(HttpMethod.Get, "http://localhost/SubFolder/ranges.txt");
|
var req = new HttpRequestMessage(HttpMethod.Get, "http://localhost/SubFolder/ranges.txt");
|
||||||
|
|
@ -91,7 +95,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task IfModifiedSinceWithCurrentDateShouldReturn304()
|
public async Task IfModifiedSinceWithCurrentDateShouldReturn304()
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
HttpResponseMessage original = await server.CreateClient().GetAsync("http://localhost/SubFolder/ranges.txt");
|
HttpResponseMessage original = await server.CreateClient().GetAsync("http://localhost/SubFolder/ranges.txt");
|
||||||
|
|
||||||
var req = new HttpRequestMessage(HttpMethod.Get, "http://localhost/SubFolder/ranges.txt");
|
var req = new HttpRequestMessage(HttpMethod.Get, "http://localhost/SubFolder/ranges.txt");
|
||||||
|
|
@ -107,7 +112,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task HEADIfRangeWithCurrentDateShouldReturn200Ok()
|
public async Task HEADIfRangeWithCurrentDateShouldReturn200Ok()
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
HttpResponseMessage original = await server.CreateClient().GetAsync("http://localhost/SubFolder/ranges.txt");
|
HttpResponseMessage original = await server.CreateClient().GetAsync("http://localhost/SubFolder/ranges.txt");
|
||||||
|
|
||||||
var req = new HttpRequestMessage(HttpMethod.Head, "http://localhost/SubFolder/ranges.txt");
|
var req = new HttpRequestMessage(HttpMethod.Head, "http://localhost/SubFolder/ranges.txt");
|
||||||
|
|
@ -127,7 +133,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task IfRangeWithOldEtagShouldServeFullContent()
|
public async Task IfRangeWithOldEtagShouldServeFullContent()
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
var req = new HttpRequestMessage(HttpMethod.Get, "http://localhost/SubFolder/ranges.txt");
|
var req = new HttpRequestMessage(HttpMethod.Get, "http://localhost/SubFolder/ranges.txt");
|
||||||
req.Headers.Add("If-Range", "\"OldEtag\"");
|
req.Headers.Add("If-Range", "\"OldEtag\"");
|
||||||
req.Headers.Add("Range", "bytes=0-10");
|
req.Headers.Add("Range", "bytes=0-10");
|
||||||
|
|
@ -143,7 +150,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task HEADIfRangeWithOldEtagShouldServeFullContent()
|
public async Task HEADIfRangeWithOldEtagShouldServeFullContent()
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
var req = new HttpRequestMessage(HttpMethod.Head, "http://localhost/SubFolder/ranges.txt");
|
var req = new HttpRequestMessage(HttpMethod.Head, "http://localhost/SubFolder/ranges.txt");
|
||||||
req.Headers.Add("If-Range", "\"OldEtag\"");
|
req.Headers.Add("If-Range", "\"OldEtag\"");
|
||||||
req.Headers.Add("Range", "bytes=0-10");
|
req.Headers.Add("Range", "bytes=0-10");
|
||||||
|
|
@ -159,7 +167,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task IfRangeWithOldDateShouldServeFullContent()
|
public async Task IfRangeWithOldDateShouldServeFullContent()
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
HttpResponseMessage original = await server.CreateClient().GetAsync("http://localhost/SubFolder/ranges.txt");
|
HttpResponseMessage original = await server.CreateClient().GetAsync("http://localhost/SubFolder/ranges.txt");
|
||||||
|
|
||||||
var req = new HttpRequestMessage(HttpMethod.Get, "http://localhost/SubFolder/ranges.txt");
|
var req = new HttpRequestMessage(HttpMethod.Get, "http://localhost/SubFolder/ranges.txt");
|
||||||
|
|
@ -177,7 +186,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task HEADIfRangeWithOldDateShouldServeFullContent()
|
public async Task HEADIfRangeWithOldDateShouldServeFullContent()
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
HttpResponseMessage original = await server.CreateClient().GetAsync("http://localhost/SubFolder/ranges.txt");
|
HttpResponseMessage original = await server.CreateClient().GetAsync("http://localhost/SubFolder/ranges.txt");
|
||||||
|
|
||||||
var req = new HttpRequestMessage(HttpMethod.Head, "http://localhost/SubFolder/ranges.txt");
|
var req = new HttpRequestMessage(HttpMethod.Head, "http://localhost/SubFolder/ranges.txt");
|
||||||
|
|
@ -196,7 +206,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task IfRangeWithoutRangeShouldServeFullContent()
|
public async Task IfRangeWithoutRangeShouldServeFullContent()
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
HttpResponseMessage original = await server.CreateClient().GetAsync("http://localhost/SubFolder/ranges.txt");
|
HttpResponseMessage original = await server.CreateClient().GetAsync("http://localhost/SubFolder/ranges.txt");
|
||||||
|
|
||||||
var req = new HttpRequestMessage(HttpMethod.Get, "http://localhost/SubFolder/ranges.txt");
|
var req = new HttpRequestMessage(HttpMethod.Get, "http://localhost/SubFolder/ranges.txt");
|
||||||
|
|
@ -222,7 +233,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task HEADIfRangeWithoutRangeShouldServeFullContent()
|
public async Task HEADIfRangeWithoutRangeShouldServeFullContent()
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
HttpResponseMessage original = await server.CreateClient().GetAsync("http://localhost/SubFolder/ranges.txt");
|
HttpResponseMessage original = await server.CreateClient().GetAsync("http://localhost/SubFolder/ranges.txt");
|
||||||
|
|
||||||
var req = new HttpRequestMessage(HttpMethod.Head, "http://localhost/SubFolder/ranges.txt");
|
var req = new HttpRequestMessage(HttpMethod.Head, "http://localhost/SubFolder/ranges.txt");
|
||||||
|
|
@ -256,7 +268,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[InlineData("-1001", "0-61", 62, "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")]
|
[InlineData("-1001", "0-61", 62, "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")]
|
||||||
public async Task SingleValidRangeShouldServePartialContent(string range, string expectedRange, int length, string expectedData)
|
public async Task SingleValidRangeShouldServePartialContent(string range, string expectedRange, int length, string expectedData)
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
var req = new HttpRequestMessage(HttpMethod.Get, "http://localhost/SubFolder/ranges.txt");
|
var req = new HttpRequestMessage(HttpMethod.Get, "http://localhost/SubFolder/ranges.txt");
|
||||||
req.Headers.Add("Range", "bytes=" + range);
|
req.Headers.Add("Range", "bytes=" + range);
|
||||||
HttpResponseMessage resp = await server.CreateClient().SendAsync(req);
|
HttpResponseMessage resp = await server.CreateClient().SendAsync(req);
|
||||||
|
|
@ -276,7 +289,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[InlineData("0-2", "0-0", 1, "A")]
|
[InlineData("0-2", "0-0", 1, "A")]
|
||||||
public async Task SingleValidRangeShouldServePartialContentSingleByteFile(string range, string expectedRange, int length, string expectedData)
|
public async Task SingleValidRangeShouldServePartialContentSingleByteFile(string range, string expectedRange, int length, string expectedData)
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
var req = new HttpRequestMessage(HttpMethod.Get, "http://localhost/SubFolder/SingleByte.txt");
|
var req = new HttpRequestMessage(HttpMethod.Get, "http://localhost/SubFolder/SingleByte.txt");
|
||||||
req.Headers.Add("Range", "bytes=" + range);
|
req.Headers.Add("Range", "bytes=" + range);
|
||||||
HttpResponseMessage resp = await server.CreateClient().SendAsync(req);
|
HttpResponseMessage resp = await server.CreateClient().SendAsync(req);
|
||||||
|
|
@ -296,7 +310,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[InlineData("0-2")]
|
[InlineData("0-2")]
|
||||||
public async Task SingleValidRangeShouldServeRequestedRangeNotSatisfiableEmptyFile(string range)
|
public async Task SingleValidRangeShouldServeRequestedRangeNotSatisfiableEmptyFile(string range)
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
var req = new HttpRequestMessage(HttpMethod.Get, "http://localhost/SubFolder/Empty.txt");
|
var req = new HttpRequestMessage(HttpMethod.Get, "http://localhost/SubFolder/Empty.txt");
|
||||||
req.Headers.Add("Range", "bytes=" + range);
|
req.Headers.Add("Range", "bytes=" + range);
|
||||||
HttpResponseMessage resp = await server.CreateClient().SendAsync(req);
|
HttpResponseMessage resp = await server.CreateClient().SendAsync(req);
|
||||||
|
|
@ -309,7 +324,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[InlineData("10-35")]
|
[InlineData("10-35")]
|
||||||
public async Task HEADSingleValidRangeShouldReturnOk(string range)
|
public async Task HEADSingleValidRangeShouldReturnOk(string range)
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
var req = new HttpRequestMessage(HttpMethod.Head, "http://localhost/SubFolder/ranges.txt");
|
var req = new HttpRequestMessage(HttpMethod.Head, "http://localhost/SubFolder/ranges.txt");
|
||||||
req.Headers.Add("Range", "bytes=" + range);
|
req.Headers.Add("Range", "bytes=" + range);
|
||||||
HttpResponseMessage resp = await server.CreateClient().SendAsync(req);
|
HttpResponseMessage resp = await server.CreateClient().SendAsync(req);
|
||||||
|
|
@ -326,7 +342,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[InlineData("-0")] // Suffix range must be non-zero
|
[InlineData("-0")] // Suffix range must be non-zero
|
||||||
public async Task SingleNotSatisfiableRange(string range)
|
public async Task SingleNotSatisfiableRange(string range)
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
var req = new HttpRequestMessage(HttpMethod.Get, "http://localhost/SubFolder/ranges.txt");
|
var req = new HttpRequestMessage(HttpMethod.Get, "http://localhost/SubFolder/ranges.txt");
|
||||||
req.Headers.TryAddWithoutValidation("Range", "bytes=" + range);
|
req.Headers.TryAddWithoutValidation("Range", "bytes=" + range);
|
||||||
HttpResponseMessage resp = await server.CreateClient().SendAsync(req);
|
HttpResponseMessage resp = await server.CreateClient().SendAsync(req);
|
||||||
|
|
@ -340,7 +357,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[InlineData("1000-1001")] // Out of range
|
[InlineData("1000-1001")] // Out of range
|
||||||
public async Task HEADSingleNotSatisfiableRangeReturnsOk(string range)
|
public async Task HEADSingleNotSatisfiableRangeReturnsOk(string range)
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
var req = new HttpRequestMessage(HttpMethod.Head, "http://localhost/SubFolder/ranges.txt");
|
var req = new HttpRequestMessage(HttpMethod.Head, "http://localhost/SubFolder/ranges.txt");
|
||||||
req.Headers.TryAddWithoutValidation("Range", "bytes=" + range);
|
req.Headers.TryAddWithoutValidation("Range", "bytes=" + range);
|
||||||
HttpResponseMessage resp = await server.CreateClient().SendAsync(req);
|
HttpResponseMessage resp = await server.CreateClient().SendAsync(req);
|
||||||
|
|
@ -359,7 +377,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[InlineData("a-b")]
|
[InlineData("a-b")]
|
||||||
public async Task SingleInvalidRangeIgnored(string range)
|
public async Task SingleInvalidRangeIgnored(string range)
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
var req = new HttpRequestMessage(HttpMethod.Get, "http://localhost/SubFolder/ranges.txt");
|
var req = new HttpRequestMessage(HttpMethod.Get, "http://localhost/SubFolder/ranges.txt");
|
||||||
req.Headers.TryAddWithoutValidation("Range", "bytes=" + range);
|
req.Headers.TryAddWithoutValidation("Range", "bytes=" + range);
|
||||||
HttpResponseMessage resp = await server.CreateClient().SendAsync(req);
|
HttpResponseMessage resp = await server.CreateClient().SendAsync(req);
|
||||||
|
|
@ -380,7 +399,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[InlineData("a-b")]
|
[InlineData("a-b")]
|
||||||
public async Task HEADSingleInvalidRangeIgnored(string range)
|
public async Task HEADSingleInvalidRangeIgnored(string range)
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
var req = new HttpRequestMessage(HttpMethod.Head, "http://localhost/SubFolder/ranges.txt");
|
var req = new HttpRequestMessage(HttpMethod.Head, "http://localhost/SubFolder/ranges.txt");
|
||||||
req.Headers.TryAddWithoutValidation("Range", "bytes=" + range);
|
req.Headers.TryAddWithoutValidation("Range", "bytes=" + range);
|
||||||
HttpResponseMessage resp = await server.CreateClient().SendAsync(req);
|
HttpResponseMessage resp = await server.CreateClient().SendAsync(req);
|
||||||
|
|
@ -400,7 +420,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[InlineData("0-0,6-6,8-8,2-2,4-4")]
|
[InlineData("0-0,6-6,8-8,2-2,4-4")]
|
||||||
public async Task MultipleValidRangesShouldServeFullContent(string ranges)
|
public async Task MultipleValidRangesShouldServeFullContent(string ranges)
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
var req = new HttpRequestMessage(HttpMethod.Get, "http://localhost/SubFolder/ranges.txt");
|
var req = new HttpRequestMessage(HttpMethod.Get, "http://localhost/SubFolder/ranges.txt");
|
||||||
req.Headers.Add("Range", "bytes=" + ranges);
|
req.Headers.Add("Range", "bytes=" + ranges);
|
||||||
HttpResponseMessage resp = await server.CreateClient().SendAsync(req);
|
HttpResponseMessage resp = await server.CreateClient().SendAsync(req);
|
||||||
|
|
@ -419,7 +440,8 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[InlineData("2-2,0-0")] // SHOULD send in the requested order.
|
[InlineData("2-2,0-0")] // SHOULD send in the requested order.
|
||||||
public async Task HEADMultipleValidRangesShouldServeFullContent(string range)
|
public async Task HEADMultipleValidRangesShouldServeFullContent(string range)
|
||||||
{
|
{
|
||||||
TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer());
|
using var host = await StaticFilesTestServer.Create(app => app.UseFileServer());
|
||||||
|
using var server = host.GetTestServer();
|
||||||
var req = new HttpRequestMessage(HttpMethod.Head, "http://localhost/SubFolder/ranges.txt");
|
var req = new HttpRequestMessage(HttpMethod.Head, "http://localhost/SubFolder/ranges.txt");
|
||||||
req.Headers.Add("Range", "bytes=" + range);
|
req.Headers.Add("Range", "bytes=" + range);
|
||||||
HttpResponseMessage resp = await server.CreateClient().SendAsync(req);
|
HttpResponseMessage resp = await server.CreateClient().SendAsync(req);
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ using Microsoft.AspNetCore.Http.Features;
|
||||||
using Microsoft.AspNetCore.TestHost;
|
using Microsoft.AspNetCore.TestHost;
|
||||||
using Microsoft.AspNetCore.Testing;
|
using Microsoft.AspNetCore.Testing;
|
||||||
using Microsoft.Extensions.FileProviders;
|
using Microsoft.Extensions.FileProviders;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Moq;
|
using Moq;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
|
|
@ -26,9 +27,17 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task ReturnsNotFoundWithoutWwwroot()
|
public async Task ReturnsNotFoundWithoutWwwroot()
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app => app.UseStaticFiles());
|
.Configure(app => app.UseStaticFiles());
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync("/ranges.txt");
|
var response = await server.CreateClient().GetAsync("/ranges.txt");
|
||||||
|
|
||||||
|
|
@ -47,10 +56,18 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app => app.UseStaticFiles(new StaticFileOptions { ServeUnknownFileTypes = true }))
|
.Configure(app => app.UseStaticFiles(new StaticFileOptions { ServeUnknownFileTypes = true }))
|
||||||
.UseWebRoot(AppContext.BaseDirectory);
|
.UseWebRoot(AppContext.BaseDirectory);
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync(Path.GetFileName(badLink));
|
var response = await server.CreateClient().GetAsync(Path.GetFileName(badLink));
|
||||||
|
|
||||||
|
|
@ -70,7 +87,11 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
mockSendFile.Setup(m => m.SendFileAsync(It.IsAny<string>(), It.IsAny<long>(), It.IsAny<long?>(), It.IsAny<CancellationToken>()))
|
mockSendFile.Setup(m => m.SendFileAsync(It.IsAny<string>(), It.IsAny<long>(), It.IsAny<long?>(), It.IsAny<CancellationToken>()))
|
||||||
.ThrowsAsync(new FileNotFoundException());
|
.ThrowsAsync(new FileNotFoundException());
|
||||||
mockSendFile.Setup(m => m.Stream).Returns(Stream.Null);
|
mockSendFile.Setup(m => m.Stream).Returns(Stream.Null);
|
||||||
var builder = new WebHostBuilder()
|
using var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.Configure(app =>
|
.Configure(app =>
|
||||||
{
|
{
|
||||||
app.Use(async (ctx, next) =>
|
app.Use(async (ctx, next) =>
|
||||||
|
|
@ -81,7 +102,11 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
app.UseStaticFiles(new StaticFileOptions { ServeUnknownFileTypes = true });
|
app.UseStaticFiles(new StaticFileOptions { ServeUnknownFileTypes = true });
|
||||||
})
|
})
|
||||||
.UseWebRoot(AppContext.BaseDirectory);
|
.UseWebRoot(AppContext.BaseDirectory);
|
||||||
var server = new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
|
||||||
|
var server = host.GetTestServer();
|
||||||
|
|
||||||
var response = await server.CreateClient().GetAsync("TestDocument.txt");
|
var response = await server.CreateClient().GetAsync("TestDocument.txt");
|
||||||
|
|
||||||
|
|
@ -94,10 +119,11 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
{
|
{
|
||||||
using (var fileProvider = new PhysicalFileProvider(AppContext.BaseDirectory))
|
using (var fileProvider = new PhysicalFileProvider(AppContext.BaseDirectory))
|
||||||
{
|
{
|
||||||
var server = StaticFilesTestServer.Create(app => app.UseStaticFiles(new StaticFileOptions
|
using var host = await StaticFilesTestServer.Create(app => app.UseStaticFiles(new StaticFileOptions
|
||||||
{
|
{
|
||||||
FileProvider = fileProvider
|
FileProvider = fileProvider
|
||||||
}));
|
}));
|
||||||
|
using var server = host.GetTestServer();
|
||||||
var fileInfo = fileProvider.GetFileInfo("TestDocument.txt");
|
var fileInfo = fileProvider.GetFileInfo("TestDocument.txt");
|
||||||
var response = await server.CreateRequest("TestDocument.txt").GetAsync();
|
var response = await server.CreateRequest("TestDocument.txt").GetAsync();
|
||||||
|
|
||||||
|
|
@ -112,13 +138,16 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
public async Task NullArguments()
|
public async Task NullArguments()
|
||||||
{
|
{
|
||||||
// No exception, default provided
|
// No exception, default provided
|
||||||
StaticFilesTestServer.Create(app => app.UseStaticFiles(new StaticFileOptions { ContentTypeProvider = null }));
|
using (await StaticFilesTestServer.Create(app => app.UseStaticFiles(new StaticFileOptions { ContentTypeProvider = null })))
|
||||||
|
{ }
|
||||||
|
|
||||||
// No exception, default provided
|
// No exception, default provided
|
||||||
StaticFilesTestServer.Create(app => app.UseStaticFiles(new StaticFileOptions { FileProvider = null }));
|
using (await StaticFilesTestServer.Create(app => app.UseStaticFiles(new StaticFileOptions { FileProvider = null })))
|
||||||
|
{ }
|
||||||
|
|
||||||
// PathString(null) is OK.
|
// PathString(null) is OK.
|
||||||
var server = StaticFilesTestServer.Create(app => app.UseStaticFiles((string)null));
|
using var host = await StaticFilesTestServer.Create(app => app.UseStaticFiles((string)null));
|
||||||
|
using var server = host.GetTestServer();
|
||||||
var response = await server.CreateClient().GetAsync("/");
|
var response = await server.CreateClient().GetAsync("/");
|
||||||
Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
|
Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
|
||||||
}
|
}
|
||||||
|
|
@ -146,11 +175,12 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
{
|
{
|
||||||
using (var fileProvider = new PhysicalFileProvider(Path.Combine(AppContext.BaseDirectory, baseDir)))
|
using (var fileProvider = new PhysicalFileProvider(Path.Combine(AppContext.BaseDirectory, baseDir)))
|
||||||
{
|
{
|
||||||
var server = StaticFilesTestServer.Create(app => app.UseStaticFiles(new StaticFileOptions
|
using var host = await StaticFilesTestServer.Create(app => app.UseStaticFiles(new StaticFileOptions
|
||||||
{
|
{
|
||||||
RequestPath = new PathString(baseUrl),
|
RequestPath = new PathString(baseUrl),
|
||||||
FileProvider = fileProvider
|
FileProvider = fileProvider
|
||||||
}));
|
}));
|
||||||
|
using var server = host.GetTestServer();
|
||||||
var fileInfo = fileProvider.GetFileInfo(Path.GetFileName(requestUrl));
|
var fileInfo = fileProvider.GetFileInfo(Path.GetFileName(requestUrl));
|
||||||
var response = await server.CreateRequest(requestUrl).GetAsync();
|
var response = await server.CreateRequest(requestUrl).GetAsync();
|
||||||
var responseContent = await response.Content.ReadAsByteArrayAsync();
|
var responseContent = await response.Content.ReadAsByteArrayAsync();
|
||||||
|
|
@ -176,11 +206,12 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
{
|
{
|
||||||
using (var fileProvider = new PhysicalFileProvider(Path.Combine(AppContext.BaseDirectory, baseDir)))
|
using (var fileProvider = new PhysicalFileProvider(Path.Combine(AppContext.BaseDirectory, baseDir)))
|
||||||
{
|
{
|
||||||
var server = StaticFilesTestServer.Create(app => app.UseStaticFiles(new StaticFileOptions
|
using var host = await StaticFilesTestServer.Create(app => app.UseStaticFiles(new StaticFileOptions
|
||||||
{
|
{
|
||||||
RequestPath = new PathString(baseUrl),
|
RequestPath = new PathString(baseUrl),
|
||||||
FileProvider = fileProvider
|
FileProvider = fileProvider
|
||||||
}));
|
}));
|
||||||
|
using var server = host.GetTestServer();
|
||||||
var fileInfo = fileProvider.GetFileInfo(Path.GetFileName(requestUrl));
|
var fileInfo = fileProvider.GetFileInfo(Path.GetFileName(requestUrl));
|
||||||
var response = await server.CreateRequest(requestUrl).SendAsync("HEAD");
|
var response = await server.CreateRequest(requestUrl).SendAsync("HEAD");
|
||||||
|
|
||||||
|
|
@ -235,11 +266,12 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
{
|
{
|
||||||
using (var fileProvider = new PhysicalFileProvider(Path.Combine(AppContext.BaseDirectory, baseDir)))
|
using (var fileProvider = new PhysicalFileProvider(Path.Combine(AppContext.BaseDirectory, baseDir)))
|
||||||
{
|
{
|
||||||
var server = StaticFilesTestServer.Create(app => app.UseStaticFiles(new StaticFileOptions
|
using var host = await StaticFilesTestServer.Create(app => app.UseStaticFiles(new StaticFileOptions
|
||||||
{
|
{
|
||||||
RequestPath = new PathString(baseUrl),
|
RequestPath = new PathString(baseUrl),
|
||||||
FileProvider = fileProvider
|
FileProvider = fileProvider
|
||||||
}));
|
}));
|
||||||
|
using var server = host.GetTestServer();
|
||||||
var response = await server.CreateRequest(requestUrl).SendAsync(method);
|
var response = await server.CreateRequest(requestUrl).SendAsync(method);
|
||||||
Assert.Null(response.Content.Headers.LastModified);
|
Assert.Null(response.Content.Headers.LastModified);
|
||||||
Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
|
Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
|
||||||
|
|
|
||||||
|
|
@ -4,17 +4,19 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.Builder;
|
using Microsoft.AspNetCore.Builder;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.TestHost;
|
using Microsoft.AspNetCore.TestHost;
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.StaticFiles
|
namespace Microsoft.AspNetCore.StaticFiles
|
||||||
{
|
{
|
||||||
public static class StaticFilesTestServer
|
public static class StaticFilesTestServer
|
||||||
{
|
{
|
||||||
public static TestServer Create(Action<IApplicationBuilder> configureApp, Action<IServiceCollection> configureServices = null)
|
public static async Task<IHost> Create(Action<IApplicationBuilder> configureApp, Action<IServiceCollection> configureServices = null)
|
||||||
{
|
{
|
||||||
Action<IServiceCollection> defaultConfigureServices = services => { };
|
Action<IServiceCollection> defaultConfigureServices = services => { };
|
||||||
var configuration = new ConfigurationBuilder()
|
var configuration = new ConfigurationBuilder()
|
||||||
|
|
@ -23,11 +25,18 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
new KeyValuePair<string, string>("webroot", ".")
|
new KeyValuePair<string, string>("webroot", ".")
|
||||||
})
|
})
|
||||||
.Build();
|
.Build();
|
||||||
var builder = new WebHostBuilder()
|
var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
|
.UseTestServer()
|
||||||
.UseConfiguration(configuration)
|
.UseConfiguration(configuration)
|
||||||
.Configure(configureApp)
|
.Configure(configureApp)
|
||||||
.ConfigureServices(configureServices ?? defaultConfigureServices);
|
.ConfigureServices(configureServices ?? defaultConfigureServices);
|
||||||
return new TestServer(builder);
|
}).Build();
|
||||||
|
|
||||||
|
await host.StartAsync();
|
||||||
|
return host;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,24 +1,26 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
|
|
||||||
namespace EchoApp
|
namespace EchoApp
|
||||||
{
|
{
|
||||||
public class Program
|
public class Program
|
||||||
{
|
{
|
||||||
public static void Main(string[] args)
|
public static Task Main(string[] args)
|
||||||
{
|
{
|
||||||
var host = new WebHostBuilder()
|
var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
.UseKestrel()
|
.UseKestrel()
|
||||||
.UseContentRoot(Directory.GetCurrentDirectory())
|
.UseContentRoot(Directory.GetCurrentDirectory())
|
||||||
.UseIISIntegration()
|
.UseIISIntegration()
|
||||||
.UseStartup<Startup>()
|
.UseStartup<Startup>();
|
||||||
|
})
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
host.Run();
|
return host.RunAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,34 +1,38 @@
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Runtime.Loader;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace AutobahnTestApp
|
namespace AutobahnTestApp
|
||||||
{
|
{
|
||||||
public class Program
|
public class Program
|
||||||
{
|
{
|
||||||
public static void Main(string[] args)
|
public static Task Main(string[] args)
|
||||||
{
|
{
|
||||||
var scenarioName = "Unknown";
|
var scenarioName = "Unknown";
|
||||||
var config = new ConfigurationBuilder()
|
var config = new ConfigurationBuilder()
|
||||||
.AddCommandLine(args)
|
.AddCommandLine(args)
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
var builder = new WebHostBuilder()
|
var builder = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
.ConfigureLogging(loggingBuilder => loggingBuilder.AddConsole())
|
.ConfigureLogging(loggingBuilder => loggingBuilder.AddConsole())
|
||||||
.UseConfiguration(config)
|
.UseConfiguration(config)
|
||||||
.UseContentRoot(Directory.GetCurrentDirectory())
|
.UseContentRoot(Directory.GetCurrentDirectory())
|
||||||
.UseIISIntegration()
|
.UseIISIntegration()
|
||||||
.UseStartup<Startup>();
|
.UseStartup<Startup>();
|
||||||
|
|
||||||
if (string.Equals(builder.GetSetting("server"), "Microsoft.AspNetCore.Server.HttpSys", System.StringComparison.Ordinal))
|
if (string.Equals(webHostBuilder.GetSetting("server"), "Microsoft.AspNetCore.Server.HttpSys", System.StringComparison.Ordinal))
|
||||||
{
|
{
|
||||||
scenarioName = "HttpSysServer";
|
scenarioName = "HttpSysServer";
|
||||||
Console.WriteLine("Using HttpSys server");
|
Console.WriteLine("Using HttpSys server");
|
||||||
builder.UseHttpSys();
|
webHostBuilder.UseHttpSys();
|
||||||
}
|
}
|
||||||
else if (!string.IsNullOrEmpty(Environment.GetEnvironmentVariable("ASPNETCORE_PORT")))
|
else if (!string.IsNullOrEmpty(Environment.GetEnvironmentVariable("ASPNETCORE_PORT")))
|
||||||
{
|
{
|
||||||
|
|
@ -36,13 +40,13 @@ namespace AutobahnTestApp
|
||||||
// The port will not yet be configured at this point, but will also not require HTTPS.
|
// The port will not yet be configured at this point, but will also not require HTTPS.
|
||||||
scenarioName = "AspNetCoreModule";
|
scenarioName = "AspNetCoreModule";
|
||||||
Console.WriteLine("Detected ANCM, using Kestrel");
|
Console.WriteLine("Detected ANCM, using Kestrel");
|
||||||
builder.UseKestrel();
|
webHostBuilder.UseKestrel();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Also check "server.urls" for back-compat.
|
// Also check "server.urls" for back-compat.
|
||||||
var urls = builder.GetSetting(WebHostDefaults.ServerUrlsKey) ?? builder.GetSetting("server.urls");
|
var urls = webHostBuilder.GetSetting(WebHostDefaults.ServerUrlsKey) ?? webHostBuilder.GetSetting("server.urls");
|
||||||
builder.UseSetting(WebHostDefaults.ServerUrlsKey, string.Empty);
|
webHostBuilder.UseSetting(WebHostDefaults.ServerUrlsKey, string.Empty);
|
||||||
|
|
||||||
Console.WriteLine($"Using Kestrel, URL: {urls}");
|
Console.WriteLine($"Using Kestrel, URL: {urls}");
|
||||||
|
|
||||||
|
|
@ -53,7 +57,7 @@ namespace AutobahnTestApp
|
||||||
|
|
||||||
var uri = new Uri(urls);
|
var uri = new Uri(urls);
|
||||||
|
|
||||||
builder.UseKestrel(options =>
|
webHostBuilder.UseKestrel(options =>
|
||||||
{
|
{
|
||||||
options.Listen(IPAddress.Loopback, uri.Port, listenOptions =>
|
options.Listen(IPAddress.Loopback, uri.Port, listenOptions =>
|
||||||
{
|
{
|
||||||
|
|
@ -71,6 +75,7 @@ namespace AutobahnTestApp
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
var host = builder.Build();
|
var host = builder.Build();
|
||||||
|
|
||||||
|
|
@ -80,7 +85,7 @@ namespace AutobahnTestApp
|
||||||
};
|
};
|
||||||
|
|
||||||
Console.WriteLine($"Starting Server for Scenario: {scenarioName}");
|
Console.WriteLine($"Starting Server for Scenario: {scenarioName}");
|
||||||
host.Run();
|
return host.RunAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
// 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 System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using Microsoft.AspNetCore.Hosting.Server;
|
||||||
|
using Microsoft.AspNetCore.Hosting.Server.Features;
|
||||||
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
|
|
||||||
|
namespace Microsoft.AspNetCore.Hosting
|
||||||
|
{
|
||||||
|
public static class IHostPortExtensions
|
||||||
|
{
|
||||||
|
public static int GetPort(this IHost host)
|
||||||
|
{
|
||||||
|
return host.GetPorts().First();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static IEnumerable<int> GetPorts(this IHost host)
|
||||||
|
{
|
||||||
|
return host.GetUris()
|
||||||
|
.Select(u => u.Port);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static IEnumerable<Uri> GetUris(this IHost host)
|
||||||
|
{
|
||||||
|
return host.Services.GetService<IServer>().Features.Get<IServerAddressesFeature>().Addresses
|
||||||
|
.Select(a => new Uri(a));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,30 +0,0 @@
|
||||||
// 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 System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using Microsoft.AspNetCore.Hosting.Server.Features;
|
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Hosting
|
|
||||||
{
|
|
||||||
public static class IWebHostPortExtensions
|
|
||||||
{
|
|
||||||
public static int GetPort(this IWebHost host)
|
|
||||||
{
|
|
||||||
return host.GetPorts().First();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static IEnumerable<int> GetPorts(this IWebHost host)
|
|
||||||
{
|
|
||||||
return host.GetUris()
|
|
||||||
.Select(u => u.Port);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static IEnumerable<Uri> GetUris(this IWebHost host)
|
|
||||||
{
|
|
||||||
return host.ServerFeatures.Get<IServerAddressesFeature>().Addresses
|
|
||||||
.Select(a => new Uri(a));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -9,6 +9,7 @@ using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.WebSockets.Test
|
namespace Microsoft.AspNetCore.WebSockets.Test
|
||||||
{
|
{
|
||||||
|
|
@ -48,7 +49,10 @@ namespace Microsoft.AspNetCore.WebSockets.Test
|
||||||
var config = configBuilder.Build();
|
var config = configBuilder.Build();
|
||||||
config["server.urls"] = $"http://127.0.0.1:0";
|
config["server.urls"] = $"http://127.0.0.1:0";
|
||||||
|
|
||||||
var host = new WebHostBuilder()
|
var host = new HostBuilder()
|
||||||
|
.ConfigureWebHost(webHostBuilder =>
|
||||||
|
{
|
||||||
|
webHostBuilder
|
||||||
.ConfigureServices(s =>
|
.ConfigureServices(s =>
|
||||||
{
|
{
|
||||||
s.AddWebSockets(configure);
|
s.AddWebSockets(configure);
|
||||||
|
|
@ -56,8 +60,8 @@ namespace Microsoft.AspNetCore.WebSockets.Test
|
||||||
})
|
})
|
||||||
.UseConfiguration(config)
|
.UseConfiguration(config)
|
||||||
.UseKestrel()
|
.UseKestrel()
|
||||||
.Configure(startup)
|
.Configure(startup);
|
||||||
.Build();
|
}).Build();
|
||||||
|
|
||||||
host.Start();
|
host.Start();
|
||||||
port = host.GetPort();
|
port = host.GetPort();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue