File: RedirectResultTest.cs
Web Access
Project: src\src\Mvc\Mvc.Core\test\Microsoft.AspNetCore.Mvc.Core.Test.csproj (Microsoft.AspNetCore.Mvc.Core.Test)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Internal;
using Microsoft.AspNetCore.Mvc.Infrastructure;
using Microsoft.AspNetCore.Mvc.Routing;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
 
namespace Microsoft.AspNetCore.Mvc;
 
public class RedirectResultTest : RedirectResultTestBase
{
    protected override Task ExecuteAsync(HttpContext httpContext, string contentPath)
    {
        httpContext.RequestServices = GetServiceProvider();
        var actionContext = new ActionContext(httpContext, new(), new());
 
        var redirectResult = new RedirectResult(contentPath);
        return redirectResult.ExecuteResultAsync(actionContext);
    }
 
    private static IServiceProvider GetServiceProvider()
    {
        var serviceCollection = new ServiceCollection();
        serviceCollection.AddSingleton<IActionResultExecutor<RedirectResult>, RedirectResultExecutor>();
        serviceCollection.AddSingleton<IUrlHelperFactory, UrlHelperFactory>();
        serviceCollection.AddTransient<ILoggerFactory, NullLoggerFactory>();
        return serviceCollection.BuildServiceProvider();
    }
 
    [Fact]
    public void RedirectResult_Constructor_WithParameterUrl_SetsResultUrlAndNotPermanentOrPreserveMethod()
    {
        // Arrange
        var url = "/test/url";
 
        // Act
        var result = new RedirectResult(url);
 
        // Assert
        Assert.False(result.PreserveMethod);
        Assert.False(result.Permanent);
        Assert.Same(url, result.Url);
    }
 
    [Fact]
    public void RedirectResult_Constructor_WithParameterUrlAndPermanent_SetsResultUrlAndPermanentNotPreserveMethod()
    {
        // Arrange
        var url = "/test/url";
 
        // Act
        var result = new RedirectResult(url, permanent: true);
 
        // Assert
        Assert.False(result.PreserveMethod);
        Assert.True(result.Permanent);
        Assert.Same(url, result.Url);
    }
 
    [Fact]
    public void RedirectResult_Constructor_WithParameterUrlPermanentAndPreservesMethod_SetsResultUrlPermanentAndPreservesMethod()
    {
        // Arrange
        var url = "/test/url";
 
        // Act
        var result = new RedirectResult(url, permanent: true, preserveMethod: true);
 
        // Assert
        Assert.True(result.PreserveMethod);
        Assert.True(result.Permanent);
        Assert.Same(url, result.Url);
    }
}