using Bit.Core.AdminConsole.Entities; using Bit.Core.Entities; using Bit.Core.Enums; using Bit.Core.Models.Business; using Bit.Core.Repositories; using Bit.Core.Services; using Bit.IntegrationTestCommon.Factories; namespace Bit.Api.IntegrationTest.Helpers; public static class OrganizationTestHelpers { public static async Task> SignUpAsync(WebApplicationFactoryBase factory, PlanType plan = PlanType.Free, string ownerEmail = "integration-test@bitwarden.com", string name = "Integration Test Org", string billingEmail = "integration-test@bitwarden.com", string ownerKey = "test-key") where T : class { var userRepository = factory.GetService(); var organizationService = factory.GetService(); var owner = await userRepository.GetByEmailAsync(ownerEmail); var signUpResult = await organizationService.SignUpAsync(new OrganizationSignup { Name = name, BillingEmail = billingEmail, Plan = plan, OwnerKey = ownerKey, Owner = owner, }); return new Tuple(signUpResult.organization, signUpResult.organizationUser); } public static async Task CreateUserAsync( WebApplicationFactoryBase factory, Guid organizationId, string userEmail, OrganizationUserType type, bool accessSecretsManager = false ) where T : class { var userRepository = factory.GetService(); var organizationUserRepository = factory.GetService(); var user = await userRepository.GetByEmailAsync(userEmail); var orgUser = new OrganizationUser { OrganizationId = organizationId, UserId = user.Id, Key = null, Type = type, Status = OrganizationUserStatusType.Confirmed, AccessAll = false, ExternalId = null, AccessSecretsManager = accessSecretsManager, }; await organizationUserRepository.CreateAsync(orgUser); return orgUser; } }