public async Task RedirectGivenExtensionPresentAndIncluded() { var canonicalOptions = new CanonicalUrlOptions { PrimaryHost = new HostString("example.com"), }; canonicalOptions.ExtensionsToInclude.Add(".jpg"); var options = new RewriteOptions().AddRedirectToCanonicalUrl(canonicalOptions); var builder = new WebHostBuilder() .Configure(app => { app.UseRewriter(options); }); using var server = new TestServer(builder); server.BaseAddress = new Uri("http://something.com"); var client = server.CreateClient(); var response = await client.GetAsync(new Uri($"{server.BaseAddress}foo.JPG")).ConfigureAwait(true); Assert.AreEqual(StatusCodes.Status301MovedPermanently, (int)response.StatusCode); Assert.AreEqual("http://example.com/foo.jpg", response.Headers.Location.OriginalString); }
public async Task MakeNoModifictionGivenPrimaryHostNameSpecifiedNotMatchingButIsAlternate() { var canonicalOptions = new CanonicalUrlOptions { PrimaryHost = new HostString("example.com"), }; canonicalOptions.AlternateHosts.Add(new HostString("dev.example.com")); canonicalOptions.AlternateHosts.Add(new HostString("test.example.com")); canonicalOptions.AlternateHosts.Add(new HostString("stage.example.com")); var options = new RewriteOptions().AddRedirectToCanonicalUrl(canonicalOptions); var builder = new WebHostBuilder() .Configure(app => { app.UseRewriter(options); }); using var server = new TestServer(builder); server.BaseAddress = new Uri("http://test.example.com"); var client = server.CreateClient(); var response = await client.GetAsync(new Uri($"{server.BaseAddress}foo")).ConfigureAwait(true); Assert.AreEqual(StatusCodes.Status404NotFound, (int)response.StatusCode); }
public async Task MakeNoModificationGivenForceRemoveTrailingSlashSetButNotPresent() { var canonicalOptions = new CanonicalUrlOptions() { TrailingSlash = TrailingSlashAction.Remove, }; var options = new RewriteOptions().AddRedirectToCanonicalUrl(canonicalOptions); var builder = new WebHostBuilder() .Configure(app => { app.UseRewriter(options); }); using var server = new TestServer(builder); server.BaseAddress = new Uri("http://example.com"); var client = server.CreateClient(); var response = await client.GetAsync(new Uri($"{server.BaseAddress}foobar")).ConfigureAwait(true); Assert.AreEqual(StatusCodes.Status404NotFound, (int)response.StatusCode); }
public async Task MakeNoModifictionGivenUrlIsLocalHost() { var canonicalOptions = new CanonicalUrlOptions { PrimaryHost = new HostString("example.com"), }; var options = new RewriteOptions().AddRedirectToCanonicalUrl(canonicalOptions); var builder = new WebHostBuilder() .Configure(app => { app.UseRewriter(options); }); using var server = new TestServer(builder); server.BaseAddress = new Uri("http://localhost:12345"); var client = server.CreateClient(); var response = await client.GetAsync(new Uri($"{server.BaseAddress}foo")).ConfigureAwait(true); Assert.AreEqual(StatusCodes.Status404NotFound, (int)response.StatusCode); }
public async Task MakeNoModificationGivenPathWithExtensionAndNotIncluded() { var canonicalOptions = new CanonicalUrlOptions { IsForcingLowercase = true, }; var options = new RewriteOptions().AddRedirectToCanonicalUrl(canonicalOptions); var builder = new WebHostBuilder() .Configure(app => { app.UseRewriter(options); }); using var server = new TestServer(builder); server.BaseAddress = new Uri("http://something.com"); var client = server.CreateClient(); var response = await client.GetAsync(new Uri($"{server.BaseAddress}FOo.jpg")).ConfigureAwait(true); Assert.AreEqual(StatusCodes.Status404NotFound, (int)response.StatusCode); }
public async Task RemoveTrailingSlashGivenForceRemoveTrailingSlashSet() { var canonicalOptions = new CanonicalUrlOptions { TrailingSlash = TrailingSlashAction.Remove, }; var options = new RewriteOptions().AddRedirectToCanonicalUrl(canonicalOptions); var builder = new WebHostBuilder() .Configure(app => { app.UseRewriter(options); }); using var server = new TestServer(builder); server.BaseAddress = new Uri("http://example.com"); var client = server.CreateClient(); var response = await client.GetAsync(new Uri($"{server.BaseAddress}foobar/")).ConfigureAwait(true); Assert.AreEqual(StatusCodes.Status301MovedPermanently, (int)response.StatusCode); Assert.AreEqual("http://example.com/foobar", response.Headers.Location.OriginalString); }
public async Task MakeNoModificationGivenNotApplyingToQuery() { var canonicalOptions = new CanonicalUrlOptions { PrimaryHost = new HostString("something.com"), ShouldApplyToQuery = false, }; var builder = new WebHostBuilder() .Configure(app => { var options = new RewriteOptions().AddRedirectToCanonicalUrl(canonicalOptions); app.UseRewriter(options); }); using var server = new TestServer(builder); server.BaseAddress = new Uri("http://something.com"); var client = server.CreateClient(); var response = await client.GetAsync(new Uri($"{server.BaseAddress}foo?Lower=false")).ConfigureAwait(true); Assert.AreEqual(StatusCodes.Status404NotFound, (int)response.StatusCode); }
public async Task RedirectWithCustomResponseCodeGivenCustomResponseCodeSpecified() { var canonicalOptions = new CanonicalUrlOptions { StatusCode = StatusCodes.Status302Found, }; var options = new RewriteOptions().AddRedirectToCanonicalUrl(canonicalOptions); var builder = new WebHostBuilder() .Configure(app => { app.UseRewriter(options); }); using var server = new TestServer(builder); server.BaseAddress = new Uri("http://example.com"); var client = server.CreateClient(); var response = await client.GetAsync(new Uri($"{server.BaseAddress}fooBar")).ConfigureAwait(true); Assert.AreEqual(StatusCodes.Status302Found, (int)response.StatusCode); Assert.AreEqual("http://example.com/foobar", response.Headers.Location.OriginalString); }