public async void GetDefaultCultureInfoIfCultureKeysAreMissing() { var builder = new WebApplicationBuilder() .Configure(app => { app.UseRequestLocalization(new RequestLocalizationOptions { DefaultRequestCulture = new RequestCulture("en-US") }); app.Run(context => { var requestCultureFeature = context.Features.Get<IRequestCultureFeature>(); var requestCulture = requestCultureFeature.RequestCulture; Assert.Equal("en-US", requestCulture.Culture.Name); Assert.Equal("en-US", requestCulture.UICulture.Name); return Task.FromResult(0); }); }); using (var server = new TestServer(builder)) { var client = server.CreateClient(); var response = await client.GetAsync("/page"); } }
public static void Main(string[] args) { if (Environment.GetEnvironmentVariable("ASPNET_ENV") == "Debug") { // Build an ASP.NET 5 web application that serves as the communication listener. var webApp = new WebApplicationBuilder().UseConfiguration(WebApplicationConfiguration.GetDefault()) .ConfigureLogging(factory => { factory.AddConsole(); }) .UseStartup<Startup>() .Build(); // Replace the address with the one dynamically allocated by Service Fabric. webApp.GetAddresses().Clear(); webApp.GetAddresses().Add(ListeningAddress); webApp.Run(); Thread.Sleep(Timeout.Infinite); } else { using (var fabricRuntime = FabricRuntime.Create()) { fabricRuntime.RegisterServiceType("MicroserviceTemplateType", typeof(MicroserviceTemplate)); Thread.Sleep(Timeout.Infinite); } } }
public async Task XForwardedForOverrideBadIpDoesntChangeRemoteIp() { var assertsExecuted = false; var builder = new WebApplicationBuilder() .Configure(app => { app.UseOverrideHeaders(new OverrideHeaderOptions { ForwardedOptions = ForwardedHeaders.XForwardedFor }); app.Run(context => { Assert.Null(context.Connection.RemoteIpAddress); assertsExecuted = true; return Task.FromResult(0); }); }); var server = new TestServer(builder); var req = new HttpRequestMessage(HttpMethod.Get, ""); req.Headers.Add("X-Forwarded-For", "BAD-IP"); await server.CreateClient().SendAsync(req); Assert.True(assertsExecuted); }
public async Task CustomServiceProviderSetsApplicationServices() { var builder = new WebApplicationBuilder().UseStartup<CustomContainerStartup>(); var server = new TestServer(builder); string result = await server.CreateClient().GetStringAsync("/path"); Assert.Equal("ApplicationServicesEqual:True", result); }
public static void Main(string[] args) { var application = new WebApplicationBuilder() .UseServer("Microsoft.AspNet.Server.Kestrel") // Set the server manually .UseApplicationBasePath(Directory.GetCurrentDirectory()) // Override the application base with the current directory .UseUrls("http://*:1000", "https://*:902") .UseEnvironment("Development") .UseWebRoot("public") .ConfigureServices(services => { // Configure services that the application can see services.AddSingleton<IMyCustomService, MyCustomService>(); }) .Configure(app => { // Write the application inline, this won't call any startup class in the assembly app.Use(next => context => { return next(context); }); }) .Build(); application.Run(); }
public async Task BufferResponseWithManualContentLength_NotReplaced() { var builder = new WebApplicationBuilder() .Configure(app => { app.UseResponseBuffering(); app.Run(async context => { context.Response.ContentLength = 12; Assert.False(context.Response.HasStarted); Assert.True(context.Response.Body.CanSeek); await context.Response.WriteAsync("Hello World"); Assert.False(context.Response.HasStarted); Assert.True(context.Response.Body.CanSeek); }); }); var server = new TestServer(builder); var response = await server.CreateClient().GetAsync(""); response.EnsureSuccessStatusCode(); Assert.Equal("Hello World", await response.Content.ReadAsStringAsync()); IEnumerable<string> values; Assert.True(response.Content.Headers.TryGetValues("Content-Length", out values)); Assert.Equal("12", values.FirstOrDefault()); }
public async Task CorsRequest_MatchPolicy_SetsResponseHeaders() { // Arrange var appBuilder = new WebApplicationBuilder() .Configure(app => { app.UseCors(builder => builder.WithOrigins("http://localhost:5001") .WithMethods("PUT") .WithHeaders("Header1") .WithExposedHeaders("AllowedHeader")); app.Run(async context => { await context.Response.WriteAsync("Cross origin response"); }); }) .ConfigureServices(services => services.AddCors()); using (var server = new TestServer(appBuilder)) { // Act // Actual request. var response = await server.CreateRequest("/") .AddHeader(CorsConstants.Origin, "http://localhost:5001") .SendAsync("PUT"); // Assert response.EnsureSuccessStatusCode(); Assert.Equal(2, response.Headers.Count()); Assert.Equal("Cross origin response", await response.Content.ReadAsStringAsync()); Assert.Equal("http://localhost:5001", response.Headers.GetValues(CorsConstants.AccessControlAllowOrigin).FirstOrDefault()); Assert.Equal("AllowedHeader", response.Headers.GetValues(CorsConstants.AccessControlExposeHeaders).FirstOrDefault()); } }
public async Task RegisterAddresses_Success(string addressInput, string[] testUrls) { var config = new ConfigurationBuilder() .AddInMemoryCollection(new Dictionary<string, string> { { "server.urls", addressInput } }) .Build(); var applicationBuilder = new WebApplicationBuilder() .UseConfiguration(config) .UseServerFactory("Microsoft.AspNet.Server.Kestrel") .Configure(ConfigureEchoAddress); using (var app = applicationBuilder.Build().Start()) { using (var client = new HttpClient()) { foreach (var testUrl in testUrls) { var responseText = await client.GetStringAsync(testUrl); Assert.Equal(testUrl, responseText); } } } }
public async void GetFallbackLanguage_ReturnsFromSupportedCulture_AcceptLanguageListContainsSupportedCultures() { var builder = new WebApplicationBuilder() .Configure(app => { app.UseRequestLocalization(new RequestLocalizationOptions { DefaultRequestCulture = new RequestCulture("fr-FR"), SupportedCultures = new List<CultureInfo> { new CultureInfo("ar-SA"), new CultureInfo("en-US") } }); app.Run(context => { var requestCultureFeature = context.Features.Get<IRequestCultureFeature>(); var requestCulture = requestCultureFeature.RequestCulture; Assert.Equal("ar-SA", requestCulture.Culture.Name); return Task.FromResult(0); }); }); using (var server = new TestServer(builder)) { var client = server.CreateClient(); client.DefaultRequestHeaders.AcceptLanguage.ParseAdd("en-GB,ar-SA,en-US"); var count = client.DefaultRequestHeaders.AcceptLanguage.Count; var response = await client.GetAsync(string.Empty); } }
public async void GetCultureInfoFromQueryString() { var builder = new WebApplicationBuilder() .Configure(app => { app.UseRequestLocalization(new RequestLocalizationOptions { DefaultRequestCulture = new RequestCulture("en-US"), SupportedCultures = new List<CultureInfo> { new CultureInfo("ar-SA") }, SupportedUICultures = new List<CultureInfo> { new CultureInfo("ar-YE") } }); app.Run(context => { var requestCultureFeature = context.Features.Get<IRequestCultureFeature>(); var requestCulture = requestCultureFeature.RequestCulture; Assert.Equal("ar-SA", requestCulture.Culture.Name); Assert.Equal("ar-YE", requestCulture.UICulture.Name); return Task.FromResult(0); }); }); using (var server = new TestServer(builder)) { var client = server.CreateClient(); var response = await client.GetAsync("/page?culture=ar-SA&ui-culture=ar-YE"); } }
public static void Main(string[] args) { var application = new WebApplicationBuilder() .UseConfiguration(WebApplicationConfiguration.GetDefault(args)) .UseStartup<Startup>() .Build(); application.Run(); }
// Entry point for the application. public static void Main(string[] args) { var app = new WebApplicationBuilder() .UseServer("Microsoft.AspNet.Server.Kestrel") .UseConfiguration(WebApplicationConfiguration.GetDefault(args)) .UseStartup<Startup>() .Build(); app.Run(); }
public async Task ReturnsNotFoundWithoutWwwroot() { var builder = new WebApplicationBuilder() .Configure(app => app.UseStaticFiles()); var server = new TestServer(builder); var response = await server.CreateClient().GetAsync("/ranges.txt"); Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); }
// Entry point for the application. public static void Main(string[] args) { var app = new WebApplicationBuilder() .UseServer("Microsoft.AspNet.Server.Kestrel") .UseUrls("http://localhost:3333") .UseStartup<Startup>() .Build(); app.Run(); }
public async Task LargeDownload() { var config = new ConfigurationBuilder() .AddInMemoryCollection(new Dictionary<string, string> { { "server.urls", "http://localhost:8792/" } }) .Build(); var applicationBuilder = new WebApplicationBuilder() .UseConfiguration(config) .UseServerFactory("Microsoft.AspNet.Server.Kestrel") .Configure(app => { app.Run(async context => { var bytes = new byte[1024]; for (int i = 0; i < bytes.Length; i++) { bytes[i] = (byte)i; } context.Response.ContentLength = bytes.Length * 1024; for (int i = 0; i < 1024; i++) { await context.Response.Body.WriteAsync(bytes, 0, bytes.Length); } }); }); using (var app = applicationBuilder.Build().Start()) { using (var client = new HttpClient()) { var response = await client.GetAsync("http://localhost:8792/"); response.EnsureSuccessStatusCode(); var responseBody = await response.Content.ReadAsStreamAsync(); // Read the full response body var total = 0; var bytes = new byte[1024]; var count = await responseBody.ReadAsync(bytes, 0, bytes.Length); while (count > 0) { for (int i = 0; i < count; i++) { Assert.Equal(total % 256, bytes[i]); total++; } count = await responseBody.ReadAsync(bytes, 0, bytes.Length); } } } }
public void AddRequestHeader() { var builder = new WebApplicationBuilder().Configure(app => { }); var server = new TestServer(builder); server.CreateRequest("/") .AddHeader("Host", "MyHost:90") .And(request => { Assert.Equal("MyHost:90", request.Headers.Host.ToString()); }); }
// Entry point for the application. public static void Main(string[] args) { var config = WebApplicationConfiguration.GetDefault(args); var application = new WebApplicationBuilder() .UseConfiguration(config) .UseStartup<StartupHelloWorld>() .Build(); application.Run(); }
// Entry point for the application. public static void Main(string[] args) { var config = WebApplicationConfiguration.GetDefault(args); var application = new WebApplicationBuilder() .UseConfiguration(config) .UseStartup<StartupConfigureAddresses>() .UseUrls("http://localhost:5000", "http://localhost:5001") .Build(); application.Run(); }
public static void Main(string[] args) { var hostingConfiguration = WebApplicationConfiguration.GetDefault(args); var app = new WebApplicationBuilder() .UseConfiguration(hostingConfiguration) .UseEnvironment(EnvironmentName.Development) .UseStartup<Startup>() .Build(); app.Run(); }
public void AddContentHeaders() { var builder = new WebApplicationBuilder().Configure(app => { }); var server = new TestServer(builder); server.CreateRequest("/") .AddHeader("Content-Type", "Test/Value") .And(request => { Assert.NotNull(request.Content); Assert.Equal("Test/Value", request.Content.Headers.ContentType.ToString()); }); }
public static TestServer Create(Action<IApplicationBuilder> configureApp, Action<IServiceCollection> configureServices = null) { var configurationBuilder = new ConfigurationBuilder(); configurationBuilder.AddInMemoryCollection(new [] { new KeyValuePair<string, string>("webroot", ".") }); var builder = new WebApplicationBuilder() .UseConfiguration(configurationBuilder.Build()) .Configure(configureApp) .ConfigureServices(configureServices); return new TestServer(builder); }
public async Task LargeUpload() { var config = new ConfigurationBuilder() .AddInMemoryCollection(new Dictionary<string, string> { { "server.urls", "http://localhost:8791/" } }) .Build(); var applicationBuilder = new WebApplicationBuilder() .UseConfiguration(config) .UseServerFactory("Microsoft.AspNet.Server.Kestrel") .Configure(app => { app.Run(async context => { // Read the full request body var total = 0; var bytes = new byte[1024]; var count = await context.Request.Body.ReadAsync(bytes, 0, bytes.Length); while (count > 0) { for (int i = 0; i < count; i++) { Assert.Equal(total % 256, bytes[i]); total++; } count = await context.Request.Body.ReadAsync(bytes, 0, bytes.Length); } await context.Response.WriteAsync(total.ToString(CultureInfo.InvariantCulture)); }); }); using (var app = applicationBuilder.Build().Start()) { using (var client = new HttpClient()) { var bytes = new byte[1024 * 1024]; for (int i = 0; i < bytes.Length; i++) { bytes[i] = (byte)i; } var response = await client.PostAsync("http://localhost:8791/", new ByteArrayContent(bytes)); response.EnsureSuccessStatusCode(); var sizeString = await response.Content.ReadAsStringAsync(); Assert.Equal(sizeString, bytes.Length.ToString(CultureInfo.InvariantCulture)); } } }
protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners() { // Build an ASP.NET 5 web application that serves as the communication listener. var webApp = new WebApplicationBuilder().UseConfiguration(WebApplicationConfiguration.GetDefault()) .UseStartup<Startup>() .Build(); // Replace the address with the one dynamically allocated by Service Fabric. string listeningAddress = AspNetCommunicationListener.GetListeningAddress(ServiceInitializationParameters, "ServiceDeployerTypeEndpoint"); webApp.GetAddresses().Clear(); webApp.GetAddresses().Add(listeningAddress); return new[] { new ServiceInstanceListener(_ => new AspNetCommunicationListener(webApp)) }; }
public static void Main(string[] args) { var application = new WebApplicationBuilder() .UseConfiguration(WebApplicationConfiguration.GetDefault(args)) .UseStartup<Startup>() .Build(); // The following section should be used to demo sockets //var addresses = application.GetAddresses(); //addresses.Clear(); //addresses.Add("http://unix:/tmp/kestrel-test.sock"); application.Run(); }
public async Task RequestServicesAutoCreated() { var builder = new WebApplicationBuilder().Configure(app => { app.Run(context => { return context.Response.WriteAsync("RequestServices:" + (context.RequestServices != null)); }); }); var server = new TestServer(builder); string result = await server.CreateClient().GetStringAsync("/path"); Assert.Equal("RequestServices:True", result); }
public async Task CustomRouting_NameSpaceRouting() { // Arrange var builder = new WebApplicationBuilder().UseStartup(typeof(NamespaceRouting.Startup)); var client = new TestServer(builder).CreateClient(); // Act var result = await client.GetAsync("MySite/Inventory/Products/List"); // Assert Assert.Equal(HttpStatusCode.OK, result.StatusCode); var contentString = await result.Content.ReadAsStringAsync(); Assert.Contains("Hello from ProductsController", contentString); }
protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners() { // Build an ASP.NET 5 web application that serves as the communication listener. var webApp = new WebApplicationBuilder().UseConfiguration(WebApplicationConfiguration.GetDefault()) .UseStartup<Startup>() .Build(); // Replace the address with the one dynamically allocated by Service Fabric. var endpoint = ServiceInitializationParameters.CodePackageActivationContext.GetEndpoint("GatewayTypeEndpoint"); webApp.GetAddresses().Clear(); webApp.GetAddresses().Add($"{endpoint.Protocol}://+:{endpoint.Port}"); return new[] { new ServiceInstanceListener(_ => new AspNetCommunicationListener(webApp)) }; }
// Entry point for the application. public static void Main(string[] args) { var config = WebApplicationConfiguration.GetDefault(args); var application = new WebApplicationBuilder() .UseConfiguration(config) .UseStartup<StartupBlockingOnStart>() .Build(); using (application) { application.Start(); Console.ReadLine(); } }
public async Task GetAsyncWorks() { // Arrange var expected = "GET Response"; RequestDelegate appDelegate = ctx => ctx.Response.WriteAsync(expected); var builder = new WebApplicationBuilder().Configure(app => app.Run(appDelegate)); var server = new TestServer(builder); var client = server.CreateClient(); // Act var actual = await client.GetStringAsync("http://localhost:12345"); // Assert Assert.Equal(expected, actual); }
public static IDisposable CreateServer(Func<HttpContext, Task> app) { Action<IApplicationBuilder> startup = builder => { builder.Use(async (ct, next) => { try { // Kestrel does not return proper error responses: // https://github.com/aspnet/KestrelHttpServer/issues/43 await next(); } catch (Exception ex) { if (ct.Response.HasStarted) { throw; } ct.Response.StatusCode = 500; ct.Response.Headers.Clear(); await ct.Response.WriteAsync(ex.ToString()); } }); builder.UseWebSockets(); builder.Run(c => app(c)); }; var configBuilder = new ConfigurationBuilder(); configBuilder.AddInMemoryCollection(); var config = configBuilder.Build(); config["server.urls"] = "http://localhost:54321"; var application = new WebApplicationBuilder() .UseConfiguration(config) .UseServer("Microsoft.AspNet.Server.Kestrel") .Configure(startup) .Build(); application.Start(); return application; }