diff --git a/samples/LocalizationSample/Startup.cs b/samples/LocalizationSample/Startup.cs index a86f92ff06..d2f4392c55 100644 --- a/samples/LocalizationSample/Startup.cs +++ b/samples/LocalizationSample/Startup.cs @@ -5,6 +5,7 @@ using System; using System.Collections.Generic; using System.Globalization; using Microsoft.AspNet.Builder; +using Microsoft.AspNet.Hosting; using Microsoft.AspNet.Http; using Microsoft.AspNet.Http.Features; using Microsoft.AspNet.Localization; @@ -162,5 +163,15 @@ $@" await context.Response.WriteAsync($" "); await context.Response.WriteAsync($" "); } + + public static void Main(string[] args) + { + var application = new WebApplicationBuilder() + .UseConfiguration(WebApplicationConfiguration.GetDefault(args)) + .UseStartup() + .Build(); + + application.Run(); + } } } diff --git a/samples/LocalizationSample/hosting.json b/samples/LocalizationSample/hosting.json new file mode 100644 index 0000000000..f8ef14574d --- /dev/null +++ b/samples/LocalizationSample/hosting.json @@ -0,0 +1,3 @@ +{ + "server": "Microsoft.AspNet.Server.Kestrel" +} diff --git a/samples/LocalizationSample/project.json b/samples/LocalizationSample/project.json index 92ab455287..edb765cc3d 100644 --- a/samples/LocalizationSample/project.json +++ b/samples/LocalizationSample/project.json @@ -1,5 +1,4 @@ { - "webroot": "wwwroot", "version": "1.0.0-*", "dependencies": { @@ -8,8 +7,12 @@ "Microsoft.AspNet.Server.Kestrel": "1.0.0-*" }, + "compilationOptions": { + "emitEntryPoint": true + }, + "commands": { - "web": "Microsoft.AspNet.Server.Kestrel" + "web": "LocalizationSample" }, "frameworks": { diff --git a/test/Microsoft.AspNet.Localization.Tests/AcceptLanguageHeaderRequestCultureProviderTest.cs b/test/Microsoft.AspNet.Localization.Tests/AcceptLanguageHeaderRequestCultureProviderTest.cs index d5d9ba20cf..4704573e43 100644 --- a/test/Microsoft.AspNet.Localization.Tests/AcceptLanguageHeaderRequestCultureProviderTest.cs +++ b/test/Microsoft.AspNet.Localization.Tests/AcceptLanguageHeaderRequestCultureProviderTest.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Globalization; using System.Threading.Tasks; using Microsoft.AspNet.Builder; +using Microsoft.AspNet.Hosting; using Microsoft.AspNet.Http.Features; using Microsoft.AspNet.Localization; using Microsoft.AspNet.TestHost; @@ -17,26 +18,29 @@ namespace Microsoft.Extensions.Localization.Tests [Fact] public async void GetFallbackLanguage_ReturnsFirstNonNullCultureFromSupportedCultureList() { - using (var server = TestServer.Create(app => - { - var options = new RequestLocalizationOptions + var builder = new WebApplicationBuilder() + .Configure(app => { - DefaultRequestCulture = new RequestCulture("en-US"), - SupportedCultures = new List + var options = new RequestLocalizationOptions { - new CultureInfo("ar-SA"), - new CultureInfo("en-US") - } - }; - app.UseRequestLocalization(options); - app.Run(context => - { - var requestCultureFeature = context.Features.Get(); - var requestCulture = requestCultureFeature.RequestCulture; - Assert.Equal("ar-SA", requestCulture.Culture.Name); - return Task.FromResult(0); + DefaultRequestCulture = new RequestCulture("en-US"), + SupportedCultures = new List + { + new CultureInfo("ar-SA"), + new CultureInfo("en-US") + } + }; + app.UseRequestLocalization(options); + app.Run(context => + { + var requestCultureFeature = context.Features.Get(); + 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("jp,ar-SA,en-US"); @@ -49,26 +53,29 @@ namespace Microsoft.Extensions.Localization.Tests [Fact] public async void GetFallbackLanguage_ReturnsFromSupportedCulture_AcceptLanguageListContainsSupportedCultures() { - using (var server = TestServer.Create(app => - { - var options = new RequestLocalizationOptions + var builder = new WebApplicationBuilder() + .Configure(app => { - DefaultRequestCulture = new RequestCulture("fr-FR"), - SupportedCultures = new List + var options = new RequestLocalizationOptions { - new CultureInfo("ar-SA"), - new CultureInfo("en-US") - } - }; - app.UseRequestLocalization(options); - app.Run(context => - { - var requestCultureFeature = context.Features.Get(); - var requestCulture = requestCultureFeature.RequestCulture; - Assert.Equal("ar-SA", requestCulture.Culture.Name); - return Task.FromResult(0); + DefaultRequestCulture = new RequestCulture("fr-FR"), + SupportedCultures = new List + { + new CultureInfo("ar-SA"), + new CultureInfo("en-US") + } + }; + app.UseRequestLocalization(options); + app.Run(context => + { + var requestCultureFeature = context.Features.Get(); + 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"); @@ -80,26 +87,29 @@ namespace Microsoft.Extensions.Localization.Tests [Fact] public async void GetFallbackLanguage_ReturnsDefault_AcceptLanguageListDoesnotContainSupportedCultures() { - using (var server = TestServer.Create(app => - { - var options = new RequestLocalizationOptions + var builder = new WebApplicationBuilder() + .Configure(app => { - DefaultRequestCulture = new RequestCulture("fr-FR"), - SupportedCultures = new List + var options = new RequestLocalizationOptions { - new CultureInfo("ar-SA"), - new CultureInfo("af-ZA") - } - }; - app.UseRequestLocalization(options); - app.Run(context => - { - var requestCultureFeature = context.Features.Get(); - var requestCulture = requestCultureFeature.RequestCulture; - Assert.Equal("fr-FR", requestCulture.Culture.Name); - return Task.FromResult(0); + DefaultRequestCulture = new RequestCulture("fr-FR"), + SupportedCultures = new List + { + new CultureInfo("ar-SA"), + new CultureInfo("af-ZA") + } + }; + app.UseRequestLocalization(options); + app.Run(context => + { + var requestCultureFeature = context.Features.Get(); + var requestCulture = requestCultureFeature.RequestCulture; + Assert.Equal("fr-FR", requestCulture.Culture.Name); + return Task.FromResult(0); + }); }); - })) + + using (var server = new TestServer(builder)) { var client = server.CreateClient(); client.DefaultRequestHeaders.AcceptLanguage.ParseAdd("en-GB,ar-MA,en-US"); @@ -112,30 +122,33 @@ namespace Microsoft.Extensions.Localization.Tests [Fact] public async void OmitDefaultRequestCultureShouldNotThrowNullReferenceException_And_ShouldGetTheRightCulture() { - using (var server = TestServer.Create(app => - { - var options = new RequestLocalizationOptions() + var builder = new WebApplicationBuilder() + .Configure(app => { - DefaultRequestCulture = new RequestCulture("en-US"), - SupportedCultures = new List + var options = new RequestLocalizationOptions() { - new CultureInfo("ar-YE") - }, - SupportedUICultures = new List + DefaultRequestCulture = new RequestCulture("en-US"), + SupportedCultures = new List + { + new CultureInfo("ar-YE") + }, + SupportedUICultures = new List + { + new CultureInfo("ar-YE") + } + }; + app.UseRequestLocalization(options); + app.Run(context => { - new CultureInfo("ar-YE") - } - }; - app.UseRequestLocalization(options); - app.Run(context => - { - var requestCultureFeature = context.Features.Get(); - var requestCulture = requestCultureFeature.RequestCulture; - Assert.Equal("ar-YE", requestCulture.Culture.Name); - Assert.Equal("ar-YE", requestCulture.UICulture.Name); - return Task.FromResult(0); + var requestCultureFeature = context.Features.Get(); + var requestCulture = requestCultureFeature.RequestCulture; + Assert.Equal("ar-YE", requestCulture.Culture.Name); + Assert.Equal("ar-YE", requestCulture.UICulture.Name); + return Task.FromResult(0); + }); }); - })) + + using (var server = new TestServer(builder)) { var client = server.CreateClient(); client.DefaultRequestHeaders.AcceptLanguage.ParseAdd("en-GB,ar-YE,en-US"); diff --git a/test/Microsoft.AspNet.Localization.Tests/CookieRequestCultureProviderTest.cs b/test/Microsoft.AspNet.Localization.Tests/CookieRequestCultureProviderTest.cs index 6012cacfc9..8ebb629c9c 100644 --- a/test/Microsoft.AspNet.Localization.Tests/CookieRequestCultureProviderTest.cs +++ b/test/Microsoft.AspNet.Localization.Tests/CookieRequestCultureProviderTest.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Globalization; using System.Threading.Tasks; using Microsoft.AspNet.Builder; +using Microsoft.AspNet.Hosting; using Microsoft.AspNet.Http.Features; using Microsoft.AspNet.Localization; using Microsoft.AspNet.TestHost; @@ -18,32 +19,35 @@ namespace Microsoft.Extensions.Localization.Tests [Fact] public async void GetCultureInfoFromPersistentCookie() { - using (var server = TestServer.Create(app => - { - var options = new RequestLocalizationOptions() + var builder = new WebApplicationBuilder() + .Configure(app => { - DefaultRequestCulture = new RequestCulture("en-US"), - SupportedCultures = new List + var options = new RequestLocalizationOptions() { - new CultureInfo("ar-SA") - }, - SupportedUICultures = new List + DefaultRequestCulture = new RequestCulture("en-US"), + SupportedCultures = new List + { + new CultureInfo("ar-SA") + }, + SupportedUICultures = new List + { + new CultureInfo("ar-SA") + } + }; + var provider = new CookieRequestCultureProvider(); + provider.CookieName = "Preferences"; + options.RequestCultureProviders.Insert(0, provider); + app.UseRequestLocalization(options); + app.Run(context => { - new CultureInfo("ar-SA") - } - }; - var provider = new CookieRequestCultureProvider(); - provider.CookieName = "Preferences"; - options.RequestCultureProviders.Insert(0, provider); - app.UseRequestLocalization(options); - app.Run(context => - { - var requestCultureFeature = context.Features.Get(); - var requestCulture = requestCultureFeature.RequestCulture; - Assert.Equal("ar-SA", requestCulture.Culture.Name); - return Task.FromResult(0); + var requestCultureFeature = context.Features.Get(); + 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(); var culture = new CultureInfo("ar-SA"); @@ -58,32 +62,35 @@ namespace Microsoft.Extensions.Localization.Tests [Fact] public async void GetDefaultCultureInfoIfCultureKeysAreMissingOrInvalid() { - using (var server = TestServer.Create(app => - { - var options = new RequestLocalizationOptions() + var builder = new WebApplicationBuilder() + .Configure(app => { - DefaultRequestCulture = new RequestCulture("en-US"), - SupportedCultures = new List + var options = new RequestLocalizationOptions() { - new CultureInfo("ar-SA") - }, - SupportedUICultures = new List + DefaultRequestCulture = new RequestCulture("en-US"), + SupportedCultures = new List + { + new CultureInfo("ar-SA") + }, + SupportedUICultures = new List + { + new CultureInfo("ar-SA") + } + }; + var provider = new CookieRequestCultureProvider(); + provider.CookieName = "Preferences"; + options.RequestCultureProviders.Insert(0, provider); + app.UseRequestLocalization(options); + app.Run(context => { - new CultureInfo("ar-SA") - } - }; - var provider = new CookieRequestCultureProvider(); - provider.CookieName = "Preferences"; - options.RequestCultureProviders.Insert(0, provider); - app.UseRequestLocalization(options); - app.Run(context => - { - var requestCultureFeature = context.Features.Get(); - var requestCulture = requestCultureFeature.RequestCulture; - Assert.Equal("en-US", requestCulture.Culture.Name); - return Task.FromResult(0); + var requestCultureFeature = context.Features.Get(); + var requestCulture = requestCultureFeature.RequestCulture; + Assert.Equal("en-US", requestCulture.Culture.Name); + return Task.FromResult(0); + }); }); - })) + + using (var server = new TestServer(builder)) { var client = server.CreateClient(); client.DefaultRequestHeaders.Add("Cookie", new CookieHeaderValue("Preferences", "uic=ar-SA").ToString()); @@ -94,32 +101,35 @@ namespace Microsoft.Extensions.Localization.Tests [Fact] public async void GetDefaultCultureInfoIfCookieDoesNotExist() { - using (var server = TestServer.Create(app => - { - var options = new RequestLocalizationOptions() + var builder = new WebApplicationBuilder() + .Configure(app => { - DefaultRequestCulture = new RequestCulture("en-US"), - SupportedCultures = new List + var options = new RequestLocalizationOptions() { - new CultureInfo("ar-SA") - }, - SupportedUICultures = new List + DefaultRequestCulture = new RequestCulture("en-US"), + SupportedCultures = new List + { + new CultureInfo("ar-SA") + }, + SupportedUICultures = new List + { + new CultureInfo("ar-SA") + } + }; + var provider = new CookieRequestCultureProvider(); + provider.CookieName = "Preferences"; + options.RequestCultureProviders.Insert(0, provider); + app.UseRequestLocalization(options); + app.Run(context => { - new CultureInfo("ar-SA") - } - }; - var provider = new CookieRequestCultureProvider(); - provider.CookieName = "Preferences"; - options.RequestCultureProviders.Insert(0, provider); - app.UseRequestLocalization(options); - app.Run(context => - { - var requestCultureFeature = context.Features.Get(); - var requestCulture = requestCultureFeature.RequestCulture; - Assert.Equal("en-US", requestCulture.Culture.Name); - return Task.FromResult(0); + var requestCultureFeature = context.Features.Get(); + var requestCulture = requestCultureFeature.RequestCulture; + Assert.Equal("en-US", requestCulture.Culture.Name); + return Task.FromResult(0); + }); }); - })) + + using (var server = new TestServer(builder)) { var client = server.CreateClient(); var response = await client.GetAsync(string.Empty); diff --git a/test/Microsoft.AspNet.Localization.Tests/CustomRequestCultureProviderTest.cs b/test/Microsoft.AspNet.Localization.Tests/CustomRequestCultureProviderTest.cs index 72e0a9254a..95984e9c38 100644 --- a/test/Microsoft.AspNet.Localization.Tests/CustomRequestCultureProviderTest.cs +++ b/test/Microsoft.AspNet.Localization.Tests/CustomRequestCultureProviderTest.cs @@ -6,11 +6,11 @@ using System.Collections.Generic; using System.Globalization; using System.Threading.Tasks; using Microsoft.AspNet.Builder; +using Microsoft.AspNet.Hosting; using Microsoft.AspNet.Http; using Microsoft.AspNet.Http.Features; using Microsoft.AspNet.Localization; using Microsoft.AspNet.TestHost; -using Microsoft.Extensions.Globalization; using Xunit; namespace Microsoft.Extensions.Localization.Tests @@ -20,35 +20,38 @@ namespace Microsoft.Extensions.Localization.Tests [Fact] public async void CustomRequestCultureProviderThatGetsCultureInfoFromUrl() { - using (var server = TestServer.Create(app => - { - var options = new RequestLocalizationOptions() + var builder = new WebApplicationBuilder() + .Configure(app => { - DefaultRequestCulture = new RequestCulture("en-US"), - SupportedCultures = new List + var options = new RequestLocalizationOptions() { - new CultureInfo("ar") - }, - SupportedUICultures = new List + DefaultRequestCulture = new RequestCulture("en-US"), + SupportedCultures = new List + { + new CultureInfo("ar") + }, + SupportedUICultures = new List + { + new CultureInfo("ar") + } + }; + options.RequestCultureProviders.Insert(0, new CustomRequestCultureProvider(context => { - new CultureInfo("ar") - } - }; - options.RequestCultureProviders.Insert(0, new CustomRequestCultureProvider(context => - { - var culture = GetCultureInfoFromUrl(context, options.SupportedCultures); - var requestCulture = new ProviderCultureResult(culture); - return Task.FromResult(requestCulture); - })); - app.UseRequestLocalization(options); - app.Run(context => - { - var requestCultureFeature = context.Features.Get(); - var requestCulture = requestCultureFeature.RequestCulture; - Assert.Equal("ar", requestCulture.Culture.Name); - return Task.FromResult(0); + var culture = GetCultureInfoFromUrl(context, options.SupportedCultures); + var requestCulture = new ProviderCultureResult(culture); + return Task.FromResult(requestCulture); + })); + app.UseRequestLocalization(options); + app.Run(context => + { + var requestCultureFeature = context.Features.Get(); + var requestCulture = requestCultureFeature.RequestCulture; + Assert.Equal("ar", requestCulture.Culture.Name); + return Task.FromResult(0); + }); }); - })) + + using (var server = new TestServer(builder)) { var client = server.CreateClient(); var response = await client.GetAsync("/ar/page"); diff --git a/test/Microsoft.AspNet.Localization.Tests/QueryStringRequestCultureProviderTest.cs b/test/Microsoft.AspNet.Localization.Tests/QueryStringRequestCultureProviderTest.cs index 282e194e76..8bb27a8368 100644 --- a/test/Microsoft.AspNet.Localization.Tests/QueryStringRequestCultureProviderTest.cs +++ b/test/Microsoft.AspNet.Localization.Tests/QueryStringRequestCultureProviderTest.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Globalization; using System.Threading.Tasks; using Microsoft.AspNet.Builder; +using Microsoft.AspNet.Hosting; using Microsoft.AspNet.Http.Features; using Microsoft.AspNet.Localization; using Microsoft.AspNet.TestHost; @@ -17,31 +18,34 @@ namespace Microsoft.Extensions.Localization.Tests [Fact] public async void GetCultureInfoFromQueryString() { - using (var server = TestServer.Create(app => - { - var options = new RequestLocalizationOptions() + var builder = new WebApplicationBuilder() + .Configure(app => { - DefaultRequestCulture = new RequestCulture("en-US"), - SupportedCultures = new List + var options = new RequestLocalizationOptions() { - new CultureInfo("ar-SA") - }, - SupportedUICultures = new List - { - new CultureInfo("ar-YE") - } - }; + DefaultRequestCulture = new RequestCulture("en-US"), + SupportedCultures = new List + { + new CultureInfo("ar-SA") + }, + SupportedUICultures = new List + { + new CultureInfo("ar-YE") + } + }; - app.UseRequestLocalization(options); - app.Run(context => - { - var requestCultureFeature = context.Features.Get(); - var requestCulture = requestCultureFeature.RequestCulture; - Assert.Equal("ar-SA", requestCulture.Culture.Name); - Assert.Equal("ar-YE", requestCulture.UICulture.Name); - return Task.FromResult(0); + app.UseRequestLocalization(options); + app.Run(context => + { + var requestCultureFeature = context.Features.Get(); + 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"); @@ -51,22 +55,25 @@ namespace Microsoft.Extensions.Localization.Tests [Fact] public async void GetDefaultCultureInfoIfCultureKeysAreMissing() { - using (var server = TestServer.Create(app => - { - var options = new RequestLocalizationOptions + var builder = new WebApplicationBuilder() + .Configure(app => { - DefaultRequestCulture = new RequestCulture("en-US"), - }; - app.UseRequestLocalization(options); - app.Run(context => - { - var requestCultureFeature = context.Features.Get(); - var requestCulture = requestCultureFeature.RequestCulture; - Assert.Equal("en-US", requestCulture.Culture.Name); - Assert.Equal("en-US", requestCulture.UICulture.Name); - return Task.FromResult(0); + var options = new RequestLocalizationOptions + { + DefaultRequestCulture = new RequestCulture("en-US"), + }; + app.UseRequestLocalization(options); + app.Run(context => + { + var requestCultureFeature = context.Features.Get(); + 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"); @@ -76,29 +83,32 @@ namespace Microsoft.Extensions.Localization.Tests [Fact] public async void GetDefaultCultureInfoIfCultureIsInSupportedCultureList() { - using (var server = TestServer.Create(app => - { - var options = new RequestLocalizationOptions() + var builder = new WebApplicationBuilder() + .Configure(app => { - DefaultRequestCulture = new RequestCulture("en-US"), - SupportedCultures = new List + var options = new RequestLocalizationOptions() { - new CultureInfo("ar-SA") - }, - SupportedUICultures = new List + DefaultRequestCulture = new RequestCulture("en-US"), + SupportedCultures = new List + { + new CultureInfo("ar-SA") + }, + SupportedUICultures = new List + { + new CultureInfo("ar-SA") + } + }; + app.UseRequestLocalization(options); + app.Run(context => { - new CultureInfo("ar-SA") - } - }; - app.UseRequestLocalization(options); - app.Run(context => - { - var requestCultureFeature = context.Features.Get(); - var requestCulture = requestCultureFeature.RequestCulture; - Assert.Equal("en-US", requestCulture.Culture.Name); - return Task.FromResult(0); + var requestCultureFeature = context.Features.Get(); + var requestCulture = requestCultureFeature.RequestCulture; + Assert.Equal("en-US", requestCulture.Culture.Name); + return Task.FromResult(0); + }); }); - })) + + using (var server = new TestServer(builder)) { var client = server.CreateClient(); var response = await client.GetAsync("/page?culture=ar-XY&ui-culture=ar-SA"); @@ -108,29 +118,32 @@ namespace Microsoft.Extensions.Localization.Tests [Fact] public async void GetDefaultCultureInfoIfUICultureIsNotInSupportedList() { - using (var server = TestServer.Create(app => - { - var options = new RequestLocalizationOptions() + var builder = new WebApplicationBuilder() + .Configure(app => { - DefaultRequestCulture = new RequestCulture("en-US"), - SupportedCultures = new List + var options = new RequestLocalizationOptions() { - new CultureInfo("ar-SA") - }, - SupportedUICultures = new List + DefaultRequestCulture = new RequestCulture("en-US"), + SupportedCultures = new List + { + new CultureInfo("ar-SA") + }, + SupportedUICultures = new List + { + new CultureInfo("ar-SA") + } + }; + app.UseRequestLocalization(options); + app.Run(context => { - new CultureInfo("ar-SA") - } - }; - app.UseRequestLocalization(options); - app.Run(context => - { - var requestCultureFeature = context.Features.Get(); - var requestCulture = requestCultureFeature.RequestCulture; - Assert.Equal("en-US", requestCulture.UICulture.Name); - return Task.FromResult(0); + var requestCultureFeature = context.Features.Get(); + var requestCulture = requestCultureFeature.RequestCulture; + 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?culture=ar-SA&ui-culture=ar-XY"); @@ -140,30 +153,33 @@ namespace Microsoft.Extensions.Localization.Tests [Fact] public async void GetSameCultureInfoIfCultureKeyIsMissing() { - using (var server = TestServer.Create(app => - { - var options = new RequestLocalizationOptions() + var builder = new WebApplicationBuilder() + .Configure(app => { - DefaultRequestCulture = new RequestCulture("en-US"), - SupportedCultures = new List + var options = new RequestLocalizationOptions() { - new CultureInfo("ar-SA") - }, - SupportedUICultures = new List + DefaultRequestCulture = new RequestCulture("en-US"), + SupportedCultures = new List + { + new CultureInfo("ar-SA") + }, + SupportedUICultures = new List + { + new CultureInfo("ar-SA") + } + }; + app.UseRequestLocalization(options); + app.Run(context => { - new CultureInfo("ar-SA") - } - }; - app.UseRequestLocalization(options); - app.Run(context => - { - var requestCultureFeature = context.Features.Get(); - var requestCulture = requestCultureFeature.RequestCulture; - Assert.Equal("ar-SA", requestCulture.Culture.Name); - Assert.Equal("ar-SA", requestCulture.UICulture.Name); - return Task.FromResult(0); + var requestCultureFeature = context.Features.Get(); + var requestCulture = requestCultureFeature.RequestCulture; + Assert.Equal("ar-SA", requestCulture.Culture.Name); + Assert.Equal("ar-SA", requestCulture.UICulture.Name); + return Task.FromResult(0); + }); }); - })) + + using (var server = new TestServer(builder)) { var client = server.CreateClient(); var response = await client.GetAsync("/page?ui-culture=ar-SA"); @@ -173,30 +189,33 @@ namespace Microsoft.Extensions.Localization.Tests [Fact] public async void GetSameCultureInfoIfUICultureKeyIsMissing() { - using (var server = TestServer.Create(app => - { - var options = new RequestLocalizationOptions() + var builder = new WebApplicationBuilder() + .Configure(app => { - DefaultRequestCulture = new RequestCulture("en-US"), - SupportedCultures = new List + var options = new RequestLocalizationOptions() { - new CultureInfo("ar-SA") - }, - SupportedUICultures = new List + DefaultRequestCulture = new RequestCulture("en-US"), + SupportedCultures = new List + { + new CultureInfo("ar-SA") + }, + SupportedUICultures = new List + { + new CultureInfo("ar-SA") + } + }; + app.UseRequestLocalization(options); + app.Run(context => { - new CultureInfo("ar-SA") - } - }; - app.UseRequestLocalization(options); - app.Run(context => - { - var requestCultureFeature = context.Features.Get(); - var requestCulture = requestCultureFeature.RequestCulture; - Assert.Equal("ar-SA", requestCulture.Culture.Name); - Assert.Equal("ar-SA", requestCulture.UICulture.Name); - return Task.FromResult(0); + var requestCultureFeature = context.Features.Get(); + var requestCulture = requestCultureFeature.RequestCulture; + Assert.Equal("ar-SA", requestCulture.Culture.Name); + Assert.Equal("ar-SA", 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"); @@ -206,71 +225,77 @@ namespace Microsoft.Extensions.Localization.Tests [Fact] public async void GetCultureInfoFromQueryStringWithCustomKeys() { - using (var server = TestServer.Create(app => - { - var options = new RequestLocalizationOptions() + var builder = new WebApplicationBuilder() + .Configure(app => { - DefaultRequestCulture = new RequestCulture("en-US"), - SupportedCultures = new List + var options = new RequestLocalizationOptions() { - new CultureInfo("ar-SA") - }, - SupportedUICultures = new List + DefaultRequestCulture = new RequestCulture("en-US"), + SupportedCultures = new List + { + new CultureInfo("ar-SA") + }, + SupportedUICultures = new List + { + new CultureInfo("ar-YE") + } + }; + var provider = new QueryStringRequestCultureProvider(); + provider.QueryStringKey = "c"; + provider.UIQueryStringKey = "uic"; + options.RequestCultureProviders.Insert(0, provider); + app.UseRequestLocalization(options); + app.Run(context => { - new CultureInfo("ar-YE") - } - }; - var provider = new QueryStringRequestCultureProvider(); - provider.QueryStringKey = "c"; - provider.UIQueryStringKey = "uic"; - options.RequestCultureProviders.Insert(0, provider); - app.UseRequestLocalization(options); - app.Run(context => - { - var requestCultureFeature = context.Features.Get(); - var requestCulture = requestCultureFeature.RequestCulture; - Assert.Equal("ar-SA", requestCulture.Culture.Name); - Assert.Equal("ar-YE", requestCulture.UICulture.Name); - return Task.FromResult(0); + var requestCultureFeature = context.Features.Get(); + 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?c=ar-SA&uic=ar-YE"); } } - + [Fact] public async void GetTheRightCultureInfoRegardlessOfCultureNameCasing() { - using (var server = TestServer.Create(app => - { - var options = new RequestLocalizationOptions() + var builder = new WebApplicationBuilder() + .Configure(app => { - DefaultRequestCulture = new RequestCulture("en-US"), - SupportedCultures = new List + var options = new RequestLocalizationOptions() { - new CultureInfo("FR") - }, - SupportedUICultures = new List + DefaultRequestCulture = new RequestCulture("en-US"), + SupportedCultures = new List + { + new CultureInfo("FR") + }, + SupportedUICultures = new List + { + new CultureInfo("FR") + } + }; + var provider = new QueryStringRequestCultureProvider(); + provider.QueryStringKey = "c"; + provider.UIQueryStringKey = "uic"; + options.RequestCultureProviders.Insert(0, provider); + app.UseRequestLocalization(options); + app.Run(context => { - new CultureInfo("FR") - } - }; - var provider = new QueryStringRequestCultureProvider(); - provider.QueryStringKey = "c"; - provider.UIQueryStringKey = "uic"; - options.RequestCultureProviders.Insert(0, provider); - app.UseRequestLocalization(options); - app.Run(context => - { - var requestCultureFeature = context.Features.Get(); - var requestCulture = requestCultureFeature.RequestCulture; - Assert.Equal("fr", requestCulture.Culture.ToString()); - Assert.Equal("fr", requestCulture.UICulture.ToString()); - return Task.FromResult(0); + var requestCultureFeature = context.Features.Get(); + var requestCulture = requestCultureFeature.RequestCulture; + Assert.Equal("fr", requestCulture.Culture.ToString()); + Assert.Equal("fr", requestCulture.UICulture.ToString()); + return Task.FromResult(0); + }); }); - })) + + using (var server = new TestServer(builder)) { var client = server.CreateClient(); var response = await client.GetAsync("/page?c=FR&uic=FR");