mirror of
https://github.com/bitwarden/server.git
synced 2025-02-20 02:31:30 +01:00
update tests
This commit is contained in:
parent
4d6ae5741f
commit
23d9e3f4e5
@ -19,6 +19,7 @@ public class AccountsKeyManagementControllerTests : IClassFixture<ApiApplication
|
|||||||
|
|
||||||
private readonly HttpClient _client;
|
private readonly HttpClient _client;
|
||||||
private readonly IEmergencyAccessRepository _emergencyAccessRepository;
|
private readonly IEmergencyAccessRepository _emergencyAccessRepository;
|
||||||
|
private readonly IOrganizationUserRepository _organizationUserRepository;
|
||||||
private readonly ApiApplicationFactory _factory;
|
private readonly ApiApplicationFactory _factory;
|
||||||
private readonly LoginHelper _loginHelper;
|
private readonly LoginHelper _loginHelper;
|
||||||
private readonly IUserRepository _userRepository;
|
private readonly IUserRepository _userRepository;
|
||||||
@ -33,6 +34,7 @@ public class AccountsKeyManagementControllerTests : IClassFixture<ApiApplication
|
|||||||
_loginHelper = new LoginHelper(_factory, _client);
|
_loginHelper = new LoginHelper(_factory, _client);
|
||||||
_userRepository = _factory.GetService<IUserRepository>();
|
_userRepository = _factory.GetService<IUserRepository>();
|
||||||
_emergencyAccessRepository = _factory.GetService<IEmergencyAccessRepository>();
|
_emergencyAccessRepository = _factory.GetService<IEmergencyAccessRepository>();
|
||||||
|
_organizationUserRepository = _factory.GetService<IOrganizationUserRepository>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task InitializeAsync()
|
public async Task InitializeAsync()
|
||||||
@ -80,24 +82,30 @@ public class AccountsKeyManagementControllerTests : IClassFixture<ApiApplication
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
[BitAutoData(true, true)]
|
[BitAutoData(OrganizationUserStatusType.Confirmed, EmergencyAccessStatusType.Confirmed)]
|
||||||
[BitAutoData(true, false)]
|
[BitAutoData(OrganizationUserStatusType.Confirmed, EmergencyAccessStatusType.RecoveryApproved)]
|
||||||
[BitAutoData(false, true)]
|
[BitAutoData(OrganizationUserStatusType.Confirmed, EmergencyAccessStatusType.RecoveryInitiated)]
|
||||||
|
[BitAutoData(OrganizationUserStatusType.Revoked, EmergencyAccessStatusType.Confirmed)]
|
||||||
|
[BitAutoData(OrganizationUserStatusType.Revoked, EmergencyAccessStatusType.RecoveryApproved)]
|
||||||
|
[BitAutoData(OrganizationUserStatusType.Revoked, EmergencyAccessStatusType.RecoveryInitiated)]
|
||||||
|
[BitAutoData(OrganizationUserStatusType.Confirmed, null)]
|
||||||
|
[BitAutoData(OrganizationUserStatusType.Revoked, null)]
|
||||||
|
[BitAutoData(OrganizationUserStatusType.Invited, EmergencyAccessStatusType.Confirmed)]
|
||||||
|
[BitAutoData(OrganizationUserStatusType.Invited, EmergencyAccessStatusType.RecoveryApproved)]
|
||||||
|
[BitAutoData(OrganizationUserStatusType.Invited, EmergencyAccessStatusType.RecoveryInitiated)]
|
||||||
public async Task RegenerateKeysAsync_UserInOrgOrHasDesignatedEmergencyAccess_ThrowsBadRequest(
|
public async Task RegenerateKeysAsync_UserInOrgOrHasDesignatedEmergencyAccess_ThrowsBadRequest(
|
||||||
bool inOrganization,
|
OrganizationUserStatusType organizationUserStatus,
|
||||||
bool hasDesignatedEmergencyAccess,
|
EmergencyAccessStatusType? emergencyAccessStatus,
|
||||||
KeyRegenerationRequestModel request)
|
KeyRegenerationRequestModel request)
|
||||||
{
|
{
|
||||||
if (inOrganization)
|
if (organizationUserStatus is OrganizationUserStatusType.Confirmed or OrganizationUserStatusType.Revoked)
|
||||||
{
|
{
|
||||||
await OrganizationTestHelpers.SignUpAsync(_factory,
|
await CreateOrganizationUserAsync(organizationUserStatus);
|
||||||
PlanType.EnterpriseAnnually, _ownerEmail, passwordManagerSeats: 10,
|
|
||||||
paymentMethod: PaymentMethodType.Card);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hasDesignatedEmergencyAccess)
|
if (emergencyAccessStatus != null)
|
||||||
{
|
{
|
||||||
await CreateDesignatedEmergencyAccessAsync();
|
await CreateDesignatedEmergencyAccessAsync(emergencyAccessStatus.Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
await _loginHelper.LoginAsync(_ownerEmail);
|
await _loginHelper.LoginAsync(_ownerEmail);
|
||||||
@ -124,7 +132,16 @@ public class AccountsKeyManagementControllerTests : IClassFixture<ApiApplication
|
|||||||
Assert.Equal(request.UserKeyEncryptedUserPrivateKey, user.PrivateKey);
|
Assert.Equal(request.UserKeyEncryptedUserPrivateKey, user.PrivateKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task CreateDesignatedEmergencyAccessAsync()
|
private async Task CreateOrganizationUserAsync(OrganizationUserStatusType organizationUserStatus)
|
||||||
|
{
|
||||||
|
var (_, organizationUser) = await OrganizationTestHelpers.SignUpAsync(_factory,
|
||||||
|
PlanType.EnterpriseAnnually, _ownerEmail, passwordManagerSeats: 10,
|
||||||
|
paymentMethod: PaymentMethodType.Card);
|
||||||
|
organizationUser.Status = organizationUserStatus;
|
||||||
|
await _organizationUserRepository.ReplaceAsync(organizationUser);
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task CreateDesignatedEmergencyAccessAsync(EmergencyAccessStatusType emergencyAccessStatus)
|
||||||
{
|
{
|
||||||
var tempEmail = $"integration-test{Guid.NewGuid()}@bitwarden.com";
|
var tempEmail = $"integration-test{Guid.NewGuid()}@bitwarden.com";
|
||||||
await _factory.LoginWithNewAccount(tempEmail);
|
await _factory.LoginWithNewAccount(tempEmail);
|
||||||
@ -136,7 +153,7 @@ public class AccountsKeyManagementControllerTests : IClassFixture<ApiApplication
|
|||||||
GrantorId = tempUser!.Id,
|
GrantorId = tempUser!.Id,
|
||||||
GranteeId = user!.Id,
|
GranteeId = user!.Id,
|
||||||
KeyEncrypted = _mockEncryptedString,
|
KeyEncrypted = _mockEncryptedString,
|
||||||
Status = EmergencyAccessStatusType.Confirmed,
|
Status = emergencyAccessStatus,
|
||||||
Type = EmergencyAccessType.View,
|
Type = EmergencyAccessType.View,
|
||||||
WaitTimeDays = 10,
|
WaitTimeDays = 10,
|
||||||
CreationDate = DateTime.UtcNow,
|
CreationDate = DateTime.UtcNow,
|
||||||
|
@ -69,11 +69,15 @@ public class AccountsKeyManagementControllerTests
|
|||||||
[Theory]
|
[Theory]
|
||||||
[BitAutoData]
|
[BitAutoData]
|
||||||
public async Task RegenerateKeysAsync_Success(SutProvider<AccountsKeyManagementController> sutProvider,
|
public async Task RegenerateKeysAsync_Success(SutProvider<AccountsKeyManagementController> sutProvider,
|
||||||
KeyRegenerationRequestModel data, User user)
|
KeyRegenerationRequestModel data, User user, ICollection<OrganizationUser> orgUsers,
|
||||||
|
ICollection<EmergencyAccessDetails> accessDetails)
|
||||||
{
|
{
|
||||||
sutProvider.GetDependency<IFeatureService>().IsEnabled(Arg.Is(FeatureFlagKeys.PrivateKeyRegeneration))
|
sutProvider.GetDependency<IFeatureService>().IsEnabled(Arg.Is(FeatureFlagKeys.PrivateKeyRegeneration))
|
||||||
.Returns(true);
|
.Returns(true);
|
||||||
sutProvider.GetDependency<IUserService>().GetUserByPrincipalAsync(Arg.Any<ClaimsPrincipal>()).Returns(user);
|
sutProvider.GetDependency<IUserService>().GetUserByPrincipalAsync(Arg.Any<ClaimsPrincipal>()).Returns(user);
|
||||||
|
sutProvider.GetDependency<IOrganizationUserRepository>().GetManyByUserAsync(Arg.Is(user.Id)).Returns(orgUsers);
|
||||||
|
sutProvider.GetDependency<IEmergencyAccessRepository>().GetManyDetailsByGranteeIdAsync(Arg.Is(user.Id))
|
||||||
|
.Returns(accessDetails);
|
||||||
|
|
||||||
await sutProvider.Sut.RegenerateKeysAsync(data);
|
await sutProvider.Sut.RegenerateKeysAsync(data);
|
||||||
|
|
||||||
@ -81,9 +85,12 @@ public class AccountsKeyManagementControllerTests
|
|||||||
.GetManyByUserAsync(Arg.Is(user.Id));
|
.GetManyByUserAsync(Arg.Is(user.Id));
|
||||||
await sutProvider.GetDependency<IEmergencyAccessRepository>().Received(1)
|
await sutProvider.GetDependency<IEmergencyAccessRepository>().Received(1)
|
||||||
.GetManyDetailsByGranteeIdAsync(Arg.Is(user.Id));
|
.GetManyDetailsByGranteeIdAsync(Arg.Is(user.Id));
|
||||||
await sutProvider.GetDependency<IRegenerateUserAsymmetricKeysCommand>().ReceivedWithAnyArgs(1)
|
await sutProvider.GetDependency<IRegenerateUserAsymmetricKeysCommand>().Received(1)
|
||||||
.RegenerateKeysAsync(Arg.Any<UserAsymmetricKeys>(),
|
.RegenerateKeysAsync(
|
||||||
Arg.Any<ICollection<OrganizationUser>>(),
|
Arg.Is<UserAsymmetricKeys>(u =>
|
||||||
Arg.Any<ICollection<EmergencyAccessDetails>>());
|
u.UserId == user.Id && u.PublicKey == data.UserPublicKey &&
|
||||||
|
u.UserKeyEncryptedPrivateKey == data.UserKeyEncryptedUserPrivateKey),
|
||||||
|
Arg.Is(orgUsers),
|
||||||
|
Arg.Is(accessDetails));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -56,6 +56,7 @@ public class RegenerateUserAsymmetricKeysCommandTests
|
|||||||
[BitAutoData(false, true, false)]
|
[BitAutoData(false, true, false)]
|
||||||
[BitAutoData(false, true, true)]
|
[BitAutoData(false, true, true)]
|
||||||
[BitAutoData(true, false, false)]
|
[BitAutoData(true, false, false)]
|
||||||
|
[BitAutoData(true, false, true)]
|
||||||
[BitAutoData(true, true, false)]
|
[BitAutoData(true, true, false)]
|
||||||
[BitAutoData(true, true, true)]
|
[BitAutoData(true, true, true)]
|
||||||
public async Task RegenerateKeysAsync_UserIdMisMatch_NotFoundException(
|
public async Task RegenerateKeysAsync_UserIdMisMatch_NotFoundException(
|
||||||
|
Loading…
Reference in New Issue
Block a user