diff --git a/src/Core/Services/Implementations/OrganizationService.cs b/src/Core/Services/Implementations/OrganizationService.cs index 64a441d4f6..b3d06ca232 100644 --- a/src/Core/Services/Implementations/OrganizationService.cs +++ b/src/Core/Services/Implementations/OrganizationService.cs @@ -1191,7 +1191,7 @@ namespace Bit.Core.Services } await AutoAddSeatsAsync(organization, newSeatsRequired, prorationDate); - await SendInvitesAsync(orgUsers, organization); + await SendInvitesAsync(orgUsers.Concat(limitedCollectionOrgUsers.Select(u => u.Item1)), organization); await _eventService.LogOrganizationUserEventsAsync(events); await _referenceEventService.RaiseEventAsync( diff --git a/test/Core.Test/Services/OrganizationServiceTests.cs b/test/Core.Test/Services/OrganizationServiceTests.cs index a97abf6dde..1324fb7b8d 100644 --- a/test/Core.Test/Services/OrganizationServiceTests.cs +++ b/test/Core.Test/Services/OrganizationServiceTests.cs @@ -334,11 +334,16 @@ namespace Bit.Core.Test.Services inviteeUserType: (int)OrganizationUserType.User, invitorUserType: (int)OrganizationUserType.Custom )] - public async Task InviteUser_Passes(Organization organization, OrganizationUserInvite invite, + public async Task InviteUser_Passes(Organization organization, IEnumerable<(OrganizationUserInvite invite, string externalId)> invites, OrganizationUser invitor, [OrganizationUser(OrganizationUserStatusType.Confirmed, OrganizationUserType.Owner)]OrganizationUser owner, SutProvider sutProvider) { + // Autofixture will add collections for all of the invites, remove the first and for all the rest set all access false + invites.First().invite.AccessAll = true; + invites.First().invite.Collections = null; + invites.Skip(1).ToList().ForEach(i => i.invite.AccessAll = false); + invitor.Permissions = JsonSerializer.Serialize(new Permissions() { ManageUsers = true }, new JsonSerializerOptions { @@ -354,7 +359,11 @@ namespace Bit.Core.Test.Services .Returns(new [] {owner}); currentContext.ManageUsers(organization.Id).Returns(true); - await sutProvider.Sut.InviteUsersAsync(organization.Id, invitor.UserId, new (OrganizationUserInvite, string)[] { (invite, null) }); + await sutProvider.Sut.InviteUsersAsync(organization.Id, invitor.UserId, invites); + + await sutProvider.GetDependency().Received(1) + .BulkSendOrganizationInviteEmailAsync(organization.Name, Arg.Any(), + Arg.Is>(v => v.Count() == invites.SelectMany(i => i.invite.Emails).Count())); } [Theory, CustomAutoData(typeof(SutProviderCustomization))]