From 1dbe37a250146c56409f4cdcd98c60de2fb416f8 Mon Sep 17 00:00:00 2001 From: jrmccannon Date: Fri, 21 Feb 2025 15:09:17 -0600 Subject: [PATCH] Added test to verify valid request with a user calls db method and sends the invite --- .../InviteOrganizationUserCommandTests.cs | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/test/Core.Test/AdminConsole/OrganizationFeatures/OrganizationUsers/InviteUsers/InviteOrganizationUserCommandTests.cs b/test/Core.Test/AdminConsole/OrganizationFeatures/OrganizationUsers/InviteUsers/InviteOrganizationUserCommandTests.cs index 04d48f7b03..b70cf9d530 100644 --- a/test/Core.Test/AdminConsole/OrganizationFeatures/OrganizationUsers/InviteUsers/InviteOrganizationUserCommandTests.cs +++ b/test/Core.Test/AdminConsole/OrganizationFeatures/OrganizationUsers/InviteUsers/InviteOrganizationUserCommandTests.cs @@ -90,4 +90,72 @@ public class InviteOrganizationUserCommandTests .UpdateSubscriptionAsync(Arg.Any()); } + [Theory] + [BitAutoData] + public async Task InviteScimOrganizationUserAsync_WhenEmailDoesNotExistAndRequestIsValid_ThenUserIsSavedAndInviteIsSent( + MailAddress address, + Organization organization, + OrganizationUser user, + FakeTimeProvider timeProvider, + string externalId, + SutProvider 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() + .SelectKnownEmailsAsync(organization.Id, Arg.Any>(), false) + .Returns([]); + + sutProvider.GetDependency() + .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() + .ValidateAsync(Arg.Any()) + .Returns(new Valid(validationRequest)); + + // Act + var result = await sutProvider.Sut.InviteScimOrganizationUserAsync(request); + + // Assert + Assert.IsType>(result); + + sutProvider.GetDependency() + .Received(1) + .CreateManyAsync(Arg.Is>(users => + users.Any(user => user.User.Email == request.Invite.Email))); + + sutProvider.GetDependency() + .Received(1) + .SendInvitesAsync(Arg.Is(invite => + invite.Organization == organization && + invite.Users.Count(x => x.Email == user.Email) == 1)); + } }