diff --git a/src/Aspire.Hosting/ApplicationModel/ModelName.cs b/src/Aspire.Hosting/ApplicationModel/ModelName.cs index b212167dfa..4b41882a49 100644 --- a/src/Aspire.Hosting/ApplicationModel/ModelName.cs +++ b/src/Aspire.Hosting/ApplicationModel/ModelName.cs @@ -17,41 +17,5 @@ internal static void ValidateName(string target, string name) { ArgumentNullException.ThrowIfNull(target); ArgumentNullException.ThrowIfNull(name); - - if (name.Length < 1 || name.Length > 64) - { - throw new ArgumentException($"{target} name '{name}' is invalid. Name must be between 1 and 64 characters long.", nameof(name)); - } - - var lastCharacterHyphen = false; - for (var i = 0; i < name.Length; i++) - { - if (name[i] == '-') - { - if (lastCharacterHyphen) - { - throw new ArgumentException($"{target} name '{name}' is invalid. Name cannot contain consecutive hyphens.", nameof(name)); - } - lastCharacterHyphen = true; - } - else if (!char.IsAsciiLetterOrDigit(name[i])) - { - throw new ArgumentException($"{target} name '{name}' is invalid. Name must contain only ASCII letters, digits, and hyphens.", nameof(name)); - } - else - { - lastCharacterHyphen = false; - } - } - - if (!char.IsAsciiLetter(name[0])) - { - throw new ArgumentException($"{target} name '{name}' is invalid. Name must start with an ASCII letter.", nameof(name)); - } - - if (name[^1] == '-') - { - throw new ArgumentException($"{target} name '{name}' is invalid. Name cannot end with a hyphen.", nameof(name)); - } } } diff --git a/tests/Aspire.Hosting.Tests/ModelNameTests.cs b/tests/Aspire.Hosting.Tests/ModelNameTests.cs index 0d044f8fd9..9ab8ce83ca 100644 --- a/tests/Aspire.Hosting.Tests/ModelNameTests.cs +++ b/tests/Aspire.Hosting.Tests/ModelNameTests.cs @@ -7,97 +7,6 @@ namespace Aspire.Hosting.Tests; public class ModelNameTests { - [Fact] - public void ValidateName_Null_Error() - { - // Arrange & Act - var exception = Assert.Throws(() => ModelName.ValidateName(nameof(Resource), null!)); - - // Assert - Assert.Equal("Value cannot be null. (Parameter 'name')", exception.Message); - } - - [Fact] - public void ValidateName_Empty_Error() - { - // Arrange & Act - var exception = Assert.Throws(() => ModelName.ValidateName(nameof(Resource), "")); - - // Assert - Assert.Equal($"Resource name '' is invalid. Name must be between 1 and 64 characters long. (Parameter 'name')", exception.Message); - } - - [Fact] - public void ValidateName_LongString_Error() - { - // Arrange & Act - var name = new string('a', 65); - var exception = Assert.Throws(() => ModelName.ValidateName(nameof(Resource), name)); - - // Assert - Assert.Equal($"Resource name '{name}' is invalid. Name must be between 1 and 64 characters long. (Parameter 'name')", exception.Message); - } - - [Fact] - public void ValidateName_Whitespace_Error() - { - // Arrange & Act - var exception = Assert.Throws(() => ModelName.ValidateName(nameof(Resource), " ")); - - // Assert - Assert.Equal("Resource name ' ' is invalid. Name must contain only ASCII letters, digits, and hyphens. (Parameter 'name')", exception.Message); - } - - [Fact] - public void ValidateName_Underscore_Error() - { - // Arrange & Act - var exception = Assert.Throws(() => ModelName.ValidateName(nameof(Resource), "test_name")); - - // Assert - Assert.Equal("Resource name 'test_name' is invalid. Name must contain only ASCII letters, digits, and hyphens. (Parameter 'name')", exception.Message); - } - - [Fact] - public void ValidateName_StartHyphen_Error() - { - // Arrange & Act - var exception = Assert.Throws(() => ModelName.ValidateName(nameof(Resource), "-abc")); - - // Assert - Assert.Equal("Resource name '-abc' is invalid. Name must start with an ASCII letter. (Parameter 'name')", exception.Message); - } - - [Fact] - public void ValidateName_ConsecutiveHyphens_Error() - { - // Arrange & Act - var exception = Assert.Throws(() => ModelName.ValidateName(nameof(Resource), "test--name")); - - // Assert - Assert.Equal("Resource name 'test--name' is invalid. Name cannot contain consecutive hyphens. (Parameter 'name')", exception.Message); - } - - [Fact] - public void ValidateName_StartNumber_Error() - { - // Arrange & Act - var exception = Assert.Throws(() => ModelName.ValidateName(nameof(Resource), "1abc")); - - // Assert - Assert.Equal("Resource name '1abc' is invalid. Name must start with an ASCII letter. (Parameter 'name')", exception.Message); - } - - [Fact] - public void ValidateName_EndHyphen_Error() - { - // Arrange & Act - var exception = Assert.Throws(() => ModelName.ValidateName(nameof(Resource), "abc-")); - - // Assert - Assert.Equal("Resource name 'abc-' is invalid. Name cannot end with a hyphen. (Parameter 'name')", exception.Message); - } - [Theory] [InlineData("a")] [InlineData("ab")] @@ -106,6 +15,8 @@ public void ValidateName_EndHyphen_Error() [InlineData("abc-123")] [InlineData("a-b-c-1-2-3")] [InlineData("ABC")] + [InlineData("a_b")] + [InlineData("a.b")] public void ValidateName_ValidNames_Success(string name) { ModelName.ValidateName(nameof(Resource), name);