mirror of
https://github.com/bitwarden/server.git
synced 2024-11-21 12:05:42 +01:00
tests for org import user marrying
This commit is contained in:
parent
707c0ccb36
commit
de85dbc67c
130
test/Core.Test/Services/OrganizationServiceTests.cs
Normal file
130
test/Core.Test/Services/OrganizationServiceTests.cs
Normal file
@ -0,0 +1,130 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using Bit.Core.Models.Data;
|
||||
using Bit.Core.Models.Table;
|
||||
using Bit.Core.Repositories;
|
||||
using Bit.Core.Services;
|
||||
using Microsoft.AspNetCore.DataProtection;
|
||||
using NSubstitute;
|
||||
using Xunit;
|
||||
|
||||
namespace Bit.Core.Test.Services
|
||||
{
|
||||
public class OrganizationServiceTests
|
||||
{
|
||||
[Fact]
|
||||
public async Task OrgImportCreateNewUsers()
|
||||
{
|
||||
var orgRepo = Substitute.For<IOrganizationRepository>();
|
||||
var orgUserRepo = Substitute.For<IOrganizationUserRepository>();
|
||||
var collectionRepo = Substitute.For<ICollectionRepository>();
|
||||
var userRepo = Substitute.For<IUserRepository>();
|
||||
var groupRepo = Substitute.For<IGroupRepository>();
|
||||
var dataProtector = Substitute.For<IDataProtector>();
|
||||
var mailService = Substitute.For<IMailService>();
|
||||
var pushNotService = Substitute.For<IPushNotificationService>();
|
||||
var pushRegService = Substitute.For<IPushRegistrationService>();
|
||||
var deviceRepo = Substitute.For<IDeviceRepository>();
|
||||
var licenseService = Substitute.For<ILicensingService>();
|
||||
var eventService = Substitute.For<IEventService>();
|
||||
var installationRepo = Substitute.For<IInstallationRepository>();
|
||||
var appCacheService = Substitute.For<IApplicationCacheService>();
|
||||
var paymentService = Substitute.For<IPaymentService>();
|
||||
var globalSettings = Substitute.For<GlobalSettings>();
|
||||
|
||||
var orgService = new OrganizationService(orgRepo, orgUserRepo, collectionRepo, userRepo,
|
||||
groupRepo, dataProtector, mailService, pushNotService, pushRegService, deviceRepo,
|
||||
licenseService, eventService, installationRepo, appCacheService, paymentService, globalSettings);
|
||||
|
||||
var id = Guid.NewGuid();
|
||||
var userId = Guid.NewGuid();
|
||||
var org = new Organization
|
||||
{
|
||||
Id = id,
|
||||
Name = "Test Org",
|
||||
UseDirectory = true,
|
||||
UseGroups = true,
|
||||
Seats = 3
|
||||
};
|
||||
orgRepo.GetByIdAsync(id).Returns(org);
|
||||
|
||||
var existingUsers = new List<OrganizationUserUserDetails>();
|
||||
existingUsers.Add(new OrganizationUserUserDetails
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
ExternalId = "a",
|
||||
Email = "a@test.com"
|
||||
});
|
||||
orgUserRepo.GetManyDetailsByOrganizationAsync(id).Returns(existingUsers);
|
||||
orgUserRepo.GetCountByOrganizationIdAsync(id).Returns(1);
|
||||
|
||||
var newUsers = new List<Models.Business.ImportedOrganizationUser>();
|
||||
newUsers.Add(new Models.Business.ImportedOrganizationUser { Email = "a@test.com", ExternalId = "a" });
|
||||
newUsers.Add(new Models.Business.ImportedOrganizationUser { Email = "b@test.com", ExternalId = "b" });
|
||||
newUsers.Add(new Models.Business.ImportedOrganizationUser { Email = "c@test.com", ExternalId = "c" });
|
||||
await orgService.ImportAsync(id, userId, null, newUsers, null);
|
||||
|
||||
await orgUserRepo.DidNotReceive().UpsertAsync(Arg.Any<OrganizationUser>());
|
||||
await orgUserRepo.Received(2).CreateAsync(Arg.Any<OrganizationUser>());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task OrgImportCreateNewUsersAndMarryExistingUser()
|
||||
{
|
||||
var orgRepo = Substitute.For<IOrganizationRepository>();
|
||||
var orgUserRepo = Substitute.For<IOrganizationUserRepository>();
|
||||
var collectionRepo = Substitute.For<ICollectionRepository>();
|
||||
var userRepo = Substitute.For<IUserRepository>();
|
||||
var groupRepo = Substitute.For<IGroupRepository>();
|
||||
var dataProtector = Substitute.For<IDataProtector>();
|
||||
var mailService = Substitute.For<IMailService>();
|
||||
var pushNotService = Substitute.For<IPushNotificationService>();
|
||||
var pushRegService = Substitute.For<IPushRegistrationService>();
|
||||
var deviceRepo = Substitute.For<IDeviceRepository>();
|
||||
var licenseService = Substitute.For<ILicensingService>();
|
||||
var eventService = Substitute.For<IEventService>();
|
||||
var installationRepo = Substitute.For<IInstallationRepository>();
|
||||
var appCacheService = Substitute.For<IApplicationCacheService>();
|
||||
var paymentService = Substitute.For<IPaymentService>();
|
||||
var globalSettings = Substitute.For<GlobalSettings>();
|
||||
|
||||
var orgService = new OrganizationService(orgRepo, orgUserRepo, collectionRepo, userRepo,
|
||||
groupRepo, dataProtector, mailService, pushNotService, pushRegService, deviceRepo,
|
||||
licenseService, eventService, installationRepo, appCacheService, paymentService, globalSettings);
|
||||
|
||||
var id = Guid.NewGuid();
|
||||
var userId = Guid.NewGuid();
|
||||
var org = new Organization
|
||||
{
|
||||
Id = id,
|
||||
Name = "Test Org",
|
||||
UseDirectory = true,
|
||||
UseGroups = true,
|
||||
Seats = 3
|
||||
};
|
||||
orgRepo.GetByIdAsync(id).Returns(org);
|
||||
|
||||
var existingUserAId = Guid.NewGuid();
|
||||
var existingUsers = new List<OrganizationUserUserDetails>();
|
||||
existingUsers.Add(new OrganizationUserUserDetails
|
||||
{
|
||||
Id = existingUserAId,
|
||||
// No external id here
|
||||
Email = "a@test.com"
|
||||
});
|
||||
orgUserRepo.GetManyDetailsByOrganizationAsync(id).Returns(existingUsers);
|
||||
orgUserRepo.GetCountByOrganizationIdAsync(id).Returns(1);
|
||||
orgUserRepo.GetByIdAsync(existingUserAId).Returns(new OrganizationUser { Id = existingUserAId });
|
||||
|
||||
var newUsers = new List<Models.Business.ImportedOrganizationUser>();
|
||||
newUsers.Add(new Models.Business.ImportedOrganizationUser { Email = "a@test.com", ExternalId = "a" });
|
||||
newUsers.Add(new Models.Business.ImportedOrganizationUser { Email = "b@test.com", ExternalId = "b" });
|
||||
newUsers.Add(new Models.Business.ImportedOrganizationUser { Email = "c@test.com", ExternalId = "c" });
|
||||
await orgService.ImportAsync(id, userId, null, newUsers, null);
|
||||
|
||||
await orgUserRepo.Received(1).UpsertAsync(Arg.Any<OrganizationUser>());
|
||||
await orgUserRepo.Received(2).CreateAsync(Arg.Any<OrganizationUser>());
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user