1
0
mirror of https://github.com/bitwarden/server.git synced 2025-05-05 11:42:22 -05:00

[PM-15621] Address code review comments part 2

This commit is contained in:
Jimmy Vo 2025-04-17 14:14:12 -04:00
parent 9280c03beb
commit 9533d83cb2
No known key found for this signature in database
GPG Key ID: 7CB834D6F4FFCA11
2 changed files with 29 additions and 22 deletions

View File

@ -594,7 +594,7 @@ public class OrganizationUsersController : Controller
return NotFound();
}
var result = await _deleteClaimedOrganizationUserAccountCommand.DeleteUserAsync(orgId, id, currentUser.Id);
var result = await _deleteClaimedOrganizationUserAccountCommand.DeleteUserAsync(orgId, id, currentUser.Value);
if (result is Success<DeleteUserResponse>)
{
@ -626,7 +626,7 @@ public class OrganizationUsersController : Controller
return MapToOrganizationUserBulkResponseModel(result);
}
private static ListResponseModel<OrganizationUserBulkResponseModel> MapToOrganizationUserBulkResponseModel(Partial<Core.Models.Data.Organizations.DeleteUserResponse> result)
private static ListResponseModel<OrganizationUserBulkResponseModel> MapToOrganizationUserBulkResponseModel(Partial<DeleteUserResponse> result)
{
var failures = result.Failures.Select(failure => new OrganizationUserBulkResponseModel(failure.ErroredValue.OrganizationUserId, failure.Message));
var successes = result.Successes.Select(success => new OrganizationUserBulkResponseModel(success.OrganizationUserId, string.Empty));

View File

@ -17,6 +17,7 @@ using Bit.Core.Entities;
using Bit.Core.Enums;
using Bit.Core.Exceptions;
using Bit.Core.Models.Business;
using Bit.Core.Models.Commands;
using Bit.Core.Models.Data;
using Bit.Core.Models.Data.Organizations;
using Bit.Core.Models.Data.Organizations.OrganizationUsers;
@ -360,26 +361,32 @@ public class OrganizationUsersControllerTests
sutProvider.Sut.DeleteAccount(orgId, id));
}
// [Theory]
// [BitAutoData]
// public async Task BulkDeleteAccount_WhenUserCanManageUsers_Success(
// Guid orgId, OrganizationUserBulkRequestModel model, User currentUser,
// List<(Guid, string)> deleteResults, SutProvider<OrganizationUsersController> sutProvider)
// {
// sutProvider.GetDependency<ICurrentContext>().ManageUsers(orgId).Returns(true);
// sutProvider.GetDependency<IUserService>().GetUserByPrincipalAsync(default).ReturnsForAnyArgs(currentUser);
// sutProvider.GetDependency<IDeleteClaimedOrganizationUserAccountCommand>()
// .DeleteManyUsersAsync(orgId, model.Ids, currentUser.Id)
// .Returns(deleteResults);
//
// var response = await sutProvider.Sut.BulkDeleteAccount(orgId, model);
//
// Assert.Equal(deleteResults.Count, response.Data.Count());
// Assert.True(response.Data.All(r => deleteResults.Any(res => res.Item1 == r.Id && res.Item2 == r.Error)));
// await sutProvider.GetDependency<IDeleteClaimedOrganizationUserAccountCommand>()
// .Received(1)
// .DeleteManyUsersAsync(orgId, model.Ids, currentUser.Id);
// }
[Theory]
[BitAutoData]
public async Task BulkDeleteAccount_WhenUserCanManageUsers_Success(
Guid orgId, OrganizationUserBulkRequestModel model,
User currentUser,
Partial<DeleteUserResponse> deleteResults,
SutProvider<OrganizationUsersController> sutProvider)
{
sutProvider.GetDependency<ICurrentContext>().ManageUsers(orgId).Returns(true);
sutProvider.GetDependency<IUserService>().GetUserByPrincipalAsync(default).ReturnsForAnyArgs(currentUser);
sutProvider.GetDependency<IDeleteClaimedOrganizationUserAccountCommand>()
.DeleteManyUsersAsync(orgId, model.Ids, currentUser.Id)
.Returns(deleteResults);
var response = await sutProvider.Sut.BulkDeleteAccount(orgId, model);
var totalRecordCount = deleteResults.Successes.Length + deleteResults.Failures.Length;
Assert.Equal(totalRecordCount, response.Data.Count());
Assert.True(deleteResults.Failures.All(result => response.Data.Any(resp => resp.Error == result.Message)));
Assert.True(deleteResults.Successes.All(result => response.Data.Any(resp => resp.Id == result.OrganizationUserId)));
await sutProvider.GetDependency<IDeleteClaimedOrganizationUserAccountCommand>()
.Received(1)
.DeleteManyUsersAsync(orgId, model.Ids, currentUser.Id);
}
[Theory]
[BitAutoData]