1
0
mirror of https://github.com/bitwarden/server.git synced 2025-04-12 16:48:12 -05:00

Added test to verify valid request with a user calls db method and sends the invite

This commit is contained in:
jrmccannon 2025-02-21 15:09:17 -06:00
parent e10b7cc78f
commit 1dbe37a250
No known key found for this signature in database
GPG Key ID: CF03F3DB01CE96A6

View File

@ -90,4 +90,72 @@ public class InviteOrganizationUserCommandTests
.UpdateSubscriptionAsync(Arg.Any<Core.Models.Business.SecretsManagerSubscriptionUpdate>());
}
[Theory]
[BitAutoData]
public async Task InviteScimOrganizationUserAsync_WhenEmailDoesNotExistAndRequestIsValid_ThenUserIsSavedAndInviteIsSent(
MailAddress address,
Organization organization,
OrganizationUser user,
FakeTimeProvider timeProvider,
string externalId,
SutProvider<InviteOrganizationUsersCommand> sutProvider)
{
// Arrange
user.Email = address.Address;
var organizationDto = OrganizationDto.FromOrganization(organization);
var request = InviteScimOrganizationUserRequest.Create(
OrganizationUserSingleEmailInvite.Create(
user.Email,
[],
OrganizationUserType.User,
new Permissions(),
false),
organizationDto,
timeProvider.GetUtcNow(),
externalId
);
sutProvider.GetDependency<IOrganizationUserRepository>()
.SelectKnownEmailsAsync(organization.Id, Arg.Any<IEnumerable<string>>(), false)
.Returns([]);
sutProvider.GetDependency<IOrganizationRepository>()
.GetByIdAsync(organization.Id)
.Returns(organization);
var validationRequest = new InviteUserOrganizationValidationRequest
{
Invites = [OrganizationUserInviteDto.Create(request.Invite.Email, OrganizationUserInvite.Create(request.Invite, request.ExternalId), organization.Id)],
Organization = organizationDto,
PerformedBy = Guid.Empty,
PerformedAt = request.PerformedAt,
OccupiedPmSeats = 0,
OccupiedSmSeats = 0,
PasswordManagerSubscriptionUpdate = PasswordManagerSubscriptionUpdate.Create(organizationDto, 0, 0),
SecretsManagerSubscriptionUpdate = SecretsManagerSubscriptionUpdate.Create(organizationDto, 0, 0, 0)
};
sutProvider.GetDependency<IInviteUsersValidation>()
.ValidateAsync(Arg.Any<InviteUserOrganizationValidationRequest>())
.Returns(new Valid<InviteUserOrganizationValidationRequest>(validationRequest));
// Act
var result = await sutProvider.Sut.InviteScimOrganizationUserAsync(request);
// Assert
Assert.IsType<Success<OrganizationUser>>(result);
sutProvider.GetDependency<IOrganizationUserRepository>()
.Received(1)
.CreateManyAsync(Arg.Is<IEnumerable<CreateOrganizationUser>>(users =>
users.Any(user => user.User.Email == request.Invite.Email)));
sutProvider.GetDependency<ISendOrganizationInvitesCommand>()
.Received(1)
.SendInvitesAsync(Arg.Is<SendInvitesRequest>(invite =>
invite.Organization == organization &&
invite.Users.Count(x => x.Email == user.Email) == 1));
}
}