File: DevTunnelCliVersionValidationTests.cs
Web Access
Project: src\tests\Aspire.Hosting.DevTunnels.Tests\Aspire.Hosting.DevTunnels.Tests.csproj (Aspire.Hosting.DevTunnels.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
#pragma warning disable ASPIRECOMMAND001
 
using Aspire.Hosting.ApplicationModel;
using Microsoft.Extensions.DependencyInjection;
 
namespace Aspire.Hosting.DevTunnels.Tests;
 
public class DevTunnelCliVersionValidationTests
{
    [Theory]
    [InlineData("1.0.1435", true)]
    [InlineData("1.0.1436", true)]
    [InlineData("1.1.1234", true)]
    [InlineData("2.0.0", true)]
    [InlineData("10.0.0", true)]
    [InlineData("1.10.0", true)]
    [InlineData("1.0.1434", false)]
    [InlineData("1.0.0", false)]
    [InlineData("0.0.1", false)]
    [InlineData("1.1.999", true)]
    public async Task ValidateDevTunnelCliVersionAsync_ReturnsInvalidForUnsupportedVersion(string testVersion, bool expectedIsValid)
    {
        var testCliVersion = Version.Parse(testVersion);
        var devTunnelClient = new TestDevTunnelClient(testCliVersion);
 
        var services = new ServiceCollection()
            .AddSingleton<IDevTunnelClient>(devTunnelClient)
            .BuildServiceProvider();
 
        var context = new RequiredCommandValidationContext("thepath", services, CancellationToken.None);
        var result = await DevTunnelsResourceBuilderExtensions.ValidateDevTunnelCliVersionAsync(context);
 
        Assert.Equal(expectedIsValid, result.IsValid);
        if (expectedIsValid)
        {
            Assert.Null(result.ValidationMessage);
        }
        else
        {
            Assert.Contains(DevTunnelCli.MinimumSupportedVersion.ToString(), result.ValidationMessage);
            Assert.Contains(testVersion, result.ValidationMessage);
        }
    }
 
}