Ctrl K
ComunidadGuías…

BoardOil.Dev.Tests/DevApiLaunchSettingsTests.cs

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
using BoardOil.Dev;
using Xunit;

namespace BoardOil.Dev.Tests;

public sealed class DevApiLaunchSettingsTests
{
    [Fact]
    public void CreateEnvironmentShouldExposeHttpAndHttpsForLocalDevelopment()
    {
        // Arrange
        const string databasePath = "/tmp/boardoil.dev.db";

        // Act
        var environment = DevApiLaunchSettings.CreateEnvironment(databasePath);

        // Assert
        Assert.Equal(
            "http://127.0.0.1:5000;https://localhost:5001",
            environment["ASPNETCORE_URLS"]);
        Assert.Equal("Development", environment["ASPNETCORE_ENVIRONMENT"]);
        Assert.Equal("Development", environment["DOTNET_ENVIRONMENT"]);
        Assert.Equal($"Data Source={databasePath}", environment["ConnectionStrings__BoardOil"]);
        Assert.Equal([5000, 5001], DevApiLaunchSettings.Ports);
    }

    [Fact]
    public void CreateEnvironmentShouldBindHttpToAllInterfacesWhenLanExposureEnabled()
    {
        // Arrange
        const string databasePath = "/tmp/boardoil.dev.db";

        // Act
        var environment = DevApiLaunchSettings.CreateEnvironment(databasePath, exposeLan: true);

        // Assert
        Assert.Equal(
            "http://0.0.0.0:5000;https://localhost:5001",
            environment["ASPNETCORE_URLS"]);
    }

    [Fact]
    public void CreateLanDisplayEndpointShouldIncludeLoopbackAndLanUrls()
    {
        // Act
        var endpoint = DevApiLaunchSettings.CreateLanDisplayEndpoint("192.168.1.64");

        // Assert
        Assert.Equal(
            "https://localhost:5001 | http://192.168.1.64:5000",
            endpoint);
    }

    [Fact]
    public void CreateLanDisplayEndpointShouldReportUnavailableAddress()
    {
        // Act
        var endpoint = DevApiLaunchSettings.CreateLanDisplayEndpoint(null);

        // Assert
        Assert.Equal("https://localhost:5001 | LAN address unavailable", endpoint);
    }

    [Fact]
    public void CreateRunArgumentsShouldLeaveEndpointSelectionToEnvironment()
    {
        // Arrange
        const string apiProject = "/repo/BoardOil.Api/BoardOil.Api.csproj";

        // Act
        var arguments = DevApiLaunchSettings.CreateRunArguments(apiProject);

        // Assert
        Assert.Equal(
            ["run", "--no-launch-profile", "--no-build", "--project", apiProject],
            arguments);
        Assert.DoesNotContain("--urls", arguments);
    }
}