Only consider alias duplicate if the key matches (#14169)

This commit is contained in:
Mole
2023-05-09 10:46:31 +02:00
committed by GitHub
parent 0391c1d0c7
commit f615e7bcfc
2 changed files with 31 additions and 7 deletions

View File

@@ -271,6 +271,11 @@ internal sealed class UserGroupService : RepositoryService, IUserGroupService
return Attempt.FailWithStatus(commonValidationStatus, userGroup);
}
if (_userGroupRepository.Get(userGroup.Alias) is not null)
{
return Attempt.FailWithStatus(UserGroupOperationStatus.DuplicateAlias, userGroup);
}
return Attempt.SucceedWithStatus(UserGroupOperationStatus.Success, userGroup);
}
@@ -327,6 +332,12 @@ internal sealed class UserGroupService : RepositoryService, IUserGroupService
return UserGroupOperationStatus.NotFound;
}
IUserGroup? existing = _userGroupRepository.Get(userGroup.Alias);
if (existing is not null && existing.Key != userGroup.Key)
{
return UserGroupOperationStatus.DuplicateAlias;
}
return UserGroupOperationStatus.Success;
}
@@ -350,11 +361,6 @@ internal sealed class UserGroupService : RepositoryService, IUserGroupService
return UserGroupOperationStatus.AliasTooLong;
}
if (UserGroupHasUniqueAlias(userGroup) is false)
{
return UserGroupOperationStatus.DuplicateAlias;
}
UserGroupOperationStatus startNodesValidationStatus = ValidateStartNodesExists(userGroup);
if (startNodesValidationStatus is not UserGroupOperationStatus.Success)
{
@@ -391,8 +397,6 @@ internal sealed class UserGroupService : RepositoryService, IUserGroupService
return UserGroupOperationStatus.Success;
}
private bool UserGroupHasUniqueAlias(IUserGroup userGroup) => _userGroupRepository.Get(userGroup.Alias) is null;
/// <summary>
/// Ensures that the user creating the user group is either an admin, or in the group itself.
/// </summary>

View File

@@ -148,4 +148,24 @@ public class UserGroupServiceValidationTests : UmbracoIntegrationTest
Assert.IsFalse(updateResult.Success);
Assert.AreEqual(UserGroupOperationStatus.DuplicateAlias, updateResult.Status);
}
[Test]
public async Task Can_Update_UserGroup_To_New_Name()
{
var userGroup = new UserGroup(ShortStringHelper)
{
Name = "Some Name",
Alias = "someAlias"
};
var setupResult = await UserGroupService.CreateAsync(userGroup, Constants.Security.SuperUserId);
Assert.IsTrue(setupResult.Success);
var updateName = "New Name";
userGroup.Name = updateName;
var updateResult = await UserGroupService.UpdateAsync(userGroup, Constants.Security.SuperUserId);
Assert.IsTrue(updateResult.Success);
var updatedGroup = updateResult.Result;
Assert.AreEqual(updateName, updatedGroup.Name);
}
}