| File: Configuration\SourceNameValidatorTests.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.Agents.AspireSkills; using Aspire.Cli.Configuration; using Aspire.Cli.Packaging; using Aspire.Cli.Templating; using Microsoft.Extensions.Configuration; namespace Aspire.Cli.Tests.Configuration; public class SourceNameValidatorTests { [Theory] [InlineData("a", true)] [InlineData("1", true)] [InlineData("Team_1-2", true)] [InlineData("Team.1-2_3", true)] [InlineData("default", true)] [InlineData("team.source", true)] [InlineData("team..source", true)] [InlineData("team.", true)] [InlineData("", false)] [InlineData(" ", false)] [InlineData("team source", false)] [InlineData(".team", false)] [InlineData("team:source", false)] [InlineData("-team", false)] [InlineData("_team", false)] [InlineData("team/source", false)] [InlineData("team\\source", false)] [InlineData("team\n", false)] [InlineData("\u00e9quipe", false)] [InlineData("\u0661team", false)] public void SourceNamesUseTheSameCharacterRules(string name, bool valid) => AssertSourceName(name, valid); [Theory] [InlineData(1, true)] [InlineData(64, true)] [InlineData(65, false)] public void SourceNamesUseTheSameLengthLimit(int length, bool valid) { AssertSourceName(new string('a', length), valid); AssertSourceName("a" + new string('.', length - 1), valid); } private static void AssertSourceName(string name, bool valid) { Assert.Equal(valid, SourceNameValidator.IsValid(name)); using var configuration = new ConfigurationManager(); configuration["integrationSources:default:enabled"] = "false"; configuration["skillSources:default:enabled"] = "false"; configuration[$"integrationSources:{name}:enabled"] = "false"; configuration[$"skillSources:{name}:enabled"] = "false"; if (valid) { TemplateSourceConfiguration.ValidateName(name); Assert.Empty(IntegrationSourceConfiguration.Resolve(configuration, new DirectoryInfo(Environment.CurrentDirectory))); Assert.Empty(SkillSource.Resolve(configuration)); } else { Assert.Throws<TemplateSourceConfigurationException>(() => TemplateSourceConfiguration.ValidateName(name)); Assert.Throws<InvalidOperationException>(() => IntegrationSourceConfiguration.Resolve(configuration, new DirectoryInfo(Environment.CurrentDirectory))); Assert.Throws<InvalidOperationException>(() => SkillSource.Resolve(configuration)); } } }