Content Types: Prevent creation of document type with an alias that case insensitively matches an existing alias (closes #20467) (#20471)

Prevent creation of document type with an alias that case insensitively matches an existing alias.
This commit is contained in:
Andy Butland
2025-10-15 09:41:41 +02:00
committed by GitHub
parent 1ab13a970b
commit fdf759d08d
2 changed files with 6 additions and 5 deletions

View File

@@ -1,4 +1,4 @@
using Umbraco.Cms.Core.Models;
using Umbraco.Cms.Core.Models;
using Umbraco.Cms.Core.Models.ContentTypeEditing;
using Umbraco.Cms.Core.Services.OperationStatus;
using Umbraco.Cms.Core.Strings;
@@ -407,7 +407,7 @@ internal abstract class ContentTypeEditingServiceBase<TContentType, TContentType
}
// This this method gets aliases across documents, members, and media, so it covers it all
private bool ContentTypeAliasIsInUse(string alias) => _contentTypeService.GetAllContentTypeAliases().Contains(alias);
private bool ContentTypeAliasIsInUse(string alias) => _contentTypeService.GetAllContentTypeAliases().InvariantContains(alias);
private bool ContentTypeAliasCanBeUsedFor(string alias, Guid key)
{

View File

@@ -861,14 +861,15 @@ internal sealed partial class ContentTypeEditingServiceTests
Assert.AreEqual(ContentTypeOperationStatus.InvalidAlias, result.Status);
}
[Test]
public async Task Cannot_Use_Existing_Alias()
[TestCase("test")] // Matches alias case sensitively.
[TestCase("Test")] // Matches alias case insensitively.
public async Task Cannot_Use_Existing_Alias(string newAlias)
{
var createModel = ContentTypeCreateModel("Test", "test");
var result = await ContentTypeEditingService.CreateAsync(createModel, Constants.Security.SuperUserKey);
Assert.IsTrue(result.Success);
createModel = ContentTypeCreateModel("Test 2", "test");
createModel = ContentTypeCreateModel("Test 2", newAlias);
result = await ContentTypeEditingService.CreateAsync(createModel, Constants.Security.SuperUserKey);
Assert.IsFalse(result.Success);
Assert.AreEqual(ContentTypeOperationStatus.DuplicateAlias, result.Status);