mirror of
https://github.com/bitwarden/server
synced 2025-12-06 00:03:34 +00:00
84 lines
3.4 KiB
C#
84 lines
3.4 KiB
C#
using Bit.Core.AdminConsole.Entities;
|
|
using Bit.Core.AdminConsole.OrganizationFeatures.OrganizationUsers;
|
|
using Bit.Core.AdminConsole.OrganizationFeatures.OrganizationUsers.Interfaces;
|
|
using Bit.Core.Context;
|
|
using Bit.Core.Entities;
|
|
using Bit.Core.Enums;
|
|
using Bit.Core.Platform.Push;
|
|
using Bit.Core.Repositories;
|
|
using Bit.Core.Services;
|
|
using Bit.Core.Test.AutoFixture.OrganizationUserFixtures;
|
|
using Bit.Test.Common.AutoFixture;
|
|
using Bit.Test.Common.AutoFixture.Attributes;
|
|
using NSubstitute;
|
|
using Xunit;
|
|
|
|
namespace Bit.Core.Test.AdminConsole.OrganizationFeatures.OrganizationUsers;
|
|
|
|
[SutProviderCustomize]
|
|
public class RevokeOrganizationUserCommandTests
|
|
{
|
|
|
|
[Theory, BitAutoData]
|
|
public async Task RevokeUser_Success(
|
|
Organization organization,
|
|
[OrganizationUser(OrganizationUserStatusType.Confirmed, OrganizationUserType.Owner)] OrganizationUser owner,
|
|
[OrganizationUser] OrganizationUser organizationUser,
|
|
SutProvider<RevokeOrganizationUserCommand> sutProvider)
|
|
{
|
|
RestoreRevokeUser_Setup(organization, owner, organizationUser, sutProvider);
|
|
|
|
await sutProvider.Sut.RevokeUserAsync(organizationUser, owner.Id);
|
|
|
|
await sutProvider.GetDependency<IOrganizationUserRepository>()
|
|
.Received(1)
|
|
.RevokeAsync(organizationUser.Id);
|
|
await sutProvider.GetDependency<IEventService>()
|
|
.Received(1)
|
|
.LogOrganizationUserEventAsync(organizationUser, EventType.OrganizationUser_Revoked);
|
|
await sutProvider.GetDependency<IPushNotificationService>()
|
|
.Received(1)
|
|
.PushSyncOrgKeysAsync(organizationUser.UserId!.Value);
|
|
}
|
|
|
|
[Theory, BitAutoData]
|
|
public async Task RevokeUser_WithEventSystemUser_Success(
|
|
Organization organization,
|
|
[OrganizationUser] OrganizationUser organizationUser,
|
|
EventSystemUser eventSystemUser,
|
|
SutProvider<RevokeOrganizationUserCommand> sutProvider)
|
|
{
|
|
RestoreRevokeUser_Setup(organization, null, organizationUser, sutProvider);
|
|
|
|
await sutProvider.Sut.RevokeUserAsync(organizationUser, eventSystemUser);
|
|
|
|
await sutProvider.GetDependency<IOrganizationUserRepository>()
|
|
.Received(1)
|
|
.RevokeAsync(organizationUser.Id);
|
|
await sutProvider.GetDependency<IEventService>()
|
|
.Received(1)
|
|
.LogOrganizationUserEventAsync(organizationUser, EventType.OrganizationUser_Revoked, eventSystemUser);
|
|
await sutProvider.GetDependency<IPushNotificationService>()
|
|
.Received(1)
|
|
.PushSyncOrgKeysAsync(organizationUser.UserId!.Value);
|
|
}
|
|
|
|
private void RestoreRevokeUser_Setup(
|
|
Organization organization,
|
|
OrganizationUser? requestingOrganizationUser,
|
|
OrganizationUser targetOrganizationUser,
|
|
SutProvider<RevokeOrganizationUserCommand> sutProvider)
|
|
{
|
|
if (requestingOrganizationUser != null)
|
|
{
|
|
requestingOrganizationUser.OrganizationId = organization.Id;
|
|
}
|
|
targetOrganizationUser.OrganizationId = organization.Id;
|
|
|
|
sutProvider.GetDependency<ICurrentContext>().OrganizationOwner(organization.Id).Returns(requestingOrganizationUser != null && requestingOrganizationUser.Type is OrganizationUserType.Owner);
|
|
sutProvider.GetDependency<IHasConfirmedOwnersExceptQuery>()
|
|
.HasConfirmedOwnersExceptAsync(organization.Id, Arg.Any<IEnumerable<Guid>>())
|
|
.Returns(true);
|
|
}
|
|
}
|