| File: Configuration\AppHostPathConfigurationPolicyTests.cs | Web Access |
| Project: src\tests\Aspire.Cli.Tests\Aspire.Cli.Tests.csproj (Aspire.Cli.Tests) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Aspire.Cli.Configuration; using Aspire.Cli.Utils; namespace Aspire.Cli.Tests.Configuration; public class AppHostPathConfigurationPolicyTests(ITestOutputHelper outputHelper) { [Theory] [InlineData("appHost.path")] [InlineData("appHost:path")] [InlineData("APPHOST.PATH")] [InlineData("appHostPath")] [InlineData("APPHOSTPATH")] public void IsGloballySettableKey_ReturnsFalse_ForBlockedKeys(string key) { Assert.False(AppHostPathConfigurationPolicy.IsGloballySettableKey(key)); } [Theory] [InlineData("appHost.language")] [InlineData("appHost:language")] [InlineData("channel")] [InlineData("features.defaultWatchEnabled")] [InlineData("")] public void IsGloballySettableKey_ReturnsTrue_ForOtherKeys(string key) { Assert.True(AppHostPathConfigurationPolicy.IsGloballySettableKey(key)); } [Theory] [InlineData("""{ "appHost": { "path": "AppHost.csproj" } }""", "appHost.path")] [InlineData("""{ "appHostPath": "../AppHost.csproj" }""", "appHostPath")] [InlineData("""{ "appHost:path": "AppHost.csproj" }""", "appHost.path")] public void TryFindAppHostPathKey_ReturnsConfiguredKey(string json, string expectedKey) { using var workspace = TemporaryWorkspace.CreateForCli(outputHelper); var path = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName); File.WriteAllText(path, json); Assert.True(ConfigurationHelper.TryLoadSettingsFile(path, out var configuration)); Assert.True(AppHostPathConfigurationPolicy.TryFindAppHostPathKey(configuration, out var key)); Assert.Equal(expectedKey, key); } [Theory] [InlineData("[]")] [InlineData("true")] public void TryFindAppHostPathKey_ReturnsFalse_WhenFileContainsNonObjectJson(string json) { using var workspace = TemporaryWorkspace.CreateForCli(outputHelper); var path = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName); File.WriteAllText(path, json); Assert.False(ConfigurationHelper.TryLoadSettingsFile(path, out _)); } [Fact] public void TryFindAppHostPathKey_ReturnsFalse_WhenNoAppHostPathIsConfigured() { using var workspace = TemporaryWorkspace.CreateForCli(outputHelper); var path = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName); File.WriteAllText(path, """{ "appHost": { "language": "typescript/nodejs" }, "channel": "daily" }"""); Assert.True(ConfigurationHelper.TryLoadSettingsFile(path, out var configuration)); Assert.False(AppHostPathConfigurationPolicy.TryFindAppHostPathKey(configuration, out var key)); Assert.Null(key); } [Fact] public void TryFindAppHostPathKey_ReturnsFalse_WhenFileContainsInvalidJson() { using var workspace = TemporaryWorkspace.CreateForCli(outputHelper); var path = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName); File.WriteAllText(path, """{ "appHost": { "path": "AppHost.csproj" }"""); Assert.False(ConfigurationHelper.TryLoadSettingsFile(path, out _)); } [Fact] public void TryFindAppHostPathKey_ReturnsFalse_WhenFileDoesNotExist() { using var workspace = TemporaryWorkspace.CreateForCli(outputHelper); var path = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName); Assert.False(ConfigurationHelper.TryLoadSettingsFile(path, out _)); } }