diff --git a/test/Api.IntegrationTest/AdminConsole/Controllers/GroupsControllerPerformanceTests.cs b/test/Api.IntegrationTest/AdminConsole/Controllers/GroupsControllerPerformanceTests.cs index 71c6bf104c..0e3b77d0ec 100644 --- a/test/Api.IntegrationTest/AdminConsole/Controllers/GroupsControllerPerformanceTests.cs +++ b/test/Api.IntegrationTest/AdminConsole/Controllers/GroupsControllerPerformanceTests.cs @@ -26,12 +26,13 @@ public class GroupsControllerPerformanceTests(ITestOutputHelper testOutputHelper var client = factory.CreateClient(); var db = factory.GetDatabaseContext(); - var orgSeeder = new OrganizationWithUsersRecipe(db); - var collectionsSeeder = new CollectionsRecipe(db); - var groupsSeeder = new GroupsRecipe(db); + using var scope = factory.Services.CreateScope(); var domain = OrganizationTestHelpers.GenerateRandomDomain(); - var orgId = orgSeeder.Seed(name: "Org", domain: domain, users: userCount); + var orgId = OrganizationWithUsersRecipe.SeedFromServices(scope.ServiceProvider, "Org", domain, userCount); + + var collectionsSeeder = new CollectionsRecipe(db); + var groupsSeeder = new GroupsRecipe(db); var orgUserIds = db.OrganizationUsers.Where(ou => ou.OrganizationId == orgId).Select(ou => ou.Id).ToList(); var collectionIds = collectionsSeeder.AddToOrganization(orgId, collectionCount, orgUserIds, 0); diff --git a/test/Api.IntegrationTest/AdminConsole/Controllers/OrganizationUsersControllerPerformanceTests.cs b/test/Api.IntegrationTest/AdminConsole/Controllers/OrganizationUsersControllerPerformanceTests.cs index fc64930777..b617ef1a0d 100644 --- a/test/Api.IntegrationTest/AdminConsole/Controllers/OrganizationUsersControllerPerformanceTests.cs +++ b/test/Api.IntegrationTest/AdminConsole/Controllers/OrganizationUsersControllerPerformanceTests.cs @@ -28,13 +28,13 @@ public class OrganizationUsersControllerPerformanceTests(ITestOutputHelper testO var client = factory.CreateClient(); var db = factory.GetDatabaseContext(); - var orgSeeder = new OrganizationWithUsersRecipe(db); - var collectionsSeeder = new CollectionsRecipe(db); - var groupsSeeder = new GroupsRecipe(db); + using var scope = factory.Services.CreateScope(); var domain = OrganizationTestHelpers.GenerateRandomDomain(); + var orgId = OrganizationWithUsersRecipe.SeedFromServices(scope.ServiceProvider, "Org", domain, seats); - var orgId = orgSeeder.Seed(name: "Org", domain: domain, users: seats); + var collectionsSeeder = new CollectionsRecipe(db); + var groupsSeeder = new GroupsRecipe(db); var orgUserIds = db.OrganizationUsers.Where(ou => ou.OrganizationId == orgId).Select(ou => ou.Id).ToList(); collectionsSeeder.AddToOrganization(orgId, 10, orgUserIds); @@ -64,12 +64,13 @@ public class OrganizationUsersControllerPerformanceTests(ITestOutputHelper testO var client = factory.CreateClient(); var db = factory.GetDatabaseContext(); - var orgSeeder = new OrganizationWithUsersRecipe(db); - var collectionsSeeder = new CollectionsRecipe(db); - var groupsSeeder = new GroupsRecipe(db); + using var scope = factory.Services.CreateScope(); var domain = OrganizationTestHelpers.GenerateRandomDomain(); - var orgId = orgSeeder.Seed(name: "Org", domain: domain, users: seats); + var orgId = OrganizationWithUsersRecipe.SeedFromServices(scope.ServiceProvider, "Org", domain, seats); + + var collectionsSeeder = new CollectionsRecipe(db); + var groupsSeeder = new GroupsRecipe(db); var orgUserIds = db.OrganizationUsers.Where(ou => ou.OrganizationId == orgId).Select(ou => ou.Id).ToList(); collectionsSeeder.AddToOrganization(orgId, 10, orgUserIds); @@ -98,11 +99,12 @@ public class OrganizationUsersControllerPerformanceTests(ITestOutputHelper testO var client = factory.CreateClient(); var db = factory.GetDatabaseContext(); - var orgSeeder = new OrganizationWithUsersRecipe(db); - var groupsSeeder = new GroupsRecipe(db); + using var scope = factory.Services.CreateScope(); var domain = OrganizationTestHelpers.GenerateRandomDomain(); - var orgId = orgSeeder.Seed(name: "Org", domain: domain, users: 1); + var orgId = OrganizationWithUsersRecipe.SeedFromServices(scope.ServiceProvider, "Org", domain, 1); + + var groupsSeeder = new GroupsRecipe(db); var orgUserId = db.OrganizationUsers.Where(ou => ou.OrganizationId == orgId).Select(ou => ou.Id).FirstOrDefault(); groupsSeeder.AddToOrganization(orgId, 2, [orgUserId]); @@ -130,10 +132,10 @@ public class OrganizationUsersControllerPerformanceTests(ITestOutputHelper testO var client = factory.CreateClient(); var db = factory.GetDatabaseContext(); - var orgSeeder = new OrganizationWithUsersRecipe(db); + using var scope = factory.Services.CreateScope(); var domain = OrganizationTestHelpers.GenerateRandomDomain(); - var orgId = orgSeeder.Seed(name: "Org", domain: domain, users: 1); + var orgId = OrganizationWithUsersRecipe.SeedFromServices(scope.ServiceProvider, name: "Org", domain: domain, users: 1); var orgUserId = db.OrganizationUsers.Where(ou => ou.OrganizationId == orgId).Select(ou => ou.Id).FirstOrDefault(); @@ -163,14 +165,10 @@ public class OrganizationUsersControllerPerformanceTests(ITestOutputHelper testO var client = factory.CreateClient(); var db = factory.GetDatabaseContext(); - var orgSeeder = new OrganizationWithUsersRecipe(db); + using var scope = factory.Services.CreateScope(); var domain = OrganizationTestHelpers.GenerateRandomDomain(); - var orgId = orgSeeder.Seed( - name: "Org", - domain: domain, - users: userCount, - usersStatus: OrganizationUserStatusType.Accepted); + var orgId = OrganizationWithUsersRecipe.SeedFromServices(scope.ServiceProvider, "Org", domain, userCount, usersStatus: OrganizationUserStatusType.Accepted); await PerformanceTestHelpers.AuthenticateClientAsync(factory, client, $"owner@{domain}"); @@ -211,10 +209,10 @@ public class OrganizationUsersControllerPerformanceTests(ITestOutputHelper testO var client = factory.CreateClient(); var db = factory.GetDatabaseContext(); - var orgSeeder = new OrganizationWithUsersRecipe(db); + using var scope = factory.Services.CreateScope(); var domain = OrganizationTestHelpers.GenerateRandomDomain(); - var orgId = orgSeeder.Seed(name: "Org", domain: domain, users: userCount); + var orgId = OrganizationWithUsersRecipe.SeedFromServices(scope.ServiceProvider, name: "Org", domain: domain, users: userCount); await PerformanceTestHelpers.AuthenticateClientAsync(factory, client, $"owner@{domain}"); @@ -251,14 +249,10 @@ public class OrganizationUsersControllerPerformanceTests(ITestOutputHelper testO var client = factory.CreateClient(); var db = factory.GetDatabaseContext(); - var orgSeeder = new OrganizationWithUsersRecipe(db); + using var scope = factory.Services.CreateScope(); var domain = OrganizationTestHelpers.GenerateRandomDomain(); - var orgId = orgSeeder.Seed( - name: "Org", - domain: domain, - users: userCount, - usersStatus: OrganizationUserStatusType.Confirmed); + var orgId = OrganizationWithUsersRecipe.SeedFromServices(scope.ServiceProvider, "Org", domain, userCount, usersStatus: OrganizationUserStatusType.Confirmed); await PerformanceTestHelpers.AuthenticateClientAsync(factory, client, $"owner@{domain}"); @@ -295,14 +289,10 @@ public class OrganizationUsersControllerPerformanceTests(ITestOutputHelper testO var client = factory.CreateClient(); var db = factory.GetDatabaseContext(); - var orgSeeder = new OrganizationWithUsersRecipe(db); + using var scope = factory.Services.CreateScope(); var domain = OrganizationTestHelpers.GenerateRandomDomain(); - var orgId = orgSeeder.Seed( - name: "Org", - domain: domain, - users: userCount, - usersStatus: OrganizationUserStatusType.Revoked); + var orgId = OrganizationWithUsersRecipe.SeedFromServices(scope.ServiceProvider, "Org", domain, userCount, usersStatus: OrganizationUserStatusType.Revoked); await PerformanceTestHelpers.AuthenticateClientAsync(factory, client, $"owner@{domain}"); @@ -339,15 +329,11 @@ public class OrganizationUsersControllerPerformanceTests(ITestOutputHelper testO var client = factory.CreateClient(); var db = factory.GetDatabaseContext(); - var orgSeeder = new OrganizationWithUsersRecipe(db); + using var scope = factory.Services.CreateScope(); var domainSeeder = new OrganizationDomainRecipe(db); var domain = OrganizationTestHelpers.GenerateRandomDomain(); - - var orgId = orgSeeder.Seed( - name: "Org", - domain: domain, - users: userCount, + var orgId = OrganizationWithUsersRecipe.SeedFromServices(scope.ServiceProvider, "Org", domain, userCount, usersStatus: OrganizationUserStatusType.Confirmed); domainSeeder.AddVerifiedDomainToOrganization(orgId, domain); @@ -384,13 +370,13 @@ public class OrganizationUsersControllerPerformanceTests(ITestOutputHelper testO var client = factory.CreateClient(); var db = factory.GetDatabaseContext(); - var orgSeeder = new OrganizationWithUsersRecipe(db); - var collectionsSeeder = new CollectionsRecipe(db); - var groupsSeeder = new GroupsRecipe(db); + using var scope = factory.Services.CreateScope(); var domain = OrganizationTestHelpers.GenerateRandomDomain(); - var orgId = orgSeeder.Seed(name: "Org", domain: domain, users: 1); + var orgId = OrganizationWithUsersRecipe.SeedFromServices(scope.ServiceProvider, "Org", domain, 1); + var collectionsSeeder = new CollectionsRecipe(db); + var groupsSeeder = new GroupsRecipe(db); var orgUserIds = db.OrganizationUsers.Where(ou => ou.OrganizationId == orgId).Select(ou => ou.Id).ToList(); var collectionIds = collectionsSeeder.AddToOrganization(orgId, 3, orgUserIds, 0); var groupIds = groupsSeeder.AddToOrganization(orgId, 2, orgUserIds, 0); @@ -434,10 +420,10 @@ public class OrganizationUsersControllerPerformanceTests(ITestOutputHelper testO var client = factory.CreateClient(); var db = factory.GetDatabaseContext(); - var orgSeeder = new OrganizationWithUsersRecipe(db); + using var scope = factory.Services.CreateScope(); var domain = OrganizationTestHelpers.GenerateRandomDomain(); - var orgId = orgSeeder.Seed(name: "Org", domain: domain, users: userCount); + var orgId = OrganizationWithUsersRecipe.SeedFromServices(scope.ServiceProvider, name: "Org", domain: domain, users: userCount); await PerformanceTestHelpers.AuthenticateClientAsync(factory, client, $"owner@{domain}"); @@ -471,14 +457,11 @@ public class OrganizationUsersControllerPerformanceTests(ITestOutputHelper testO var client = factory.CreateClient(); var db = factory.GetDatabaseContext(); - var orgSeeder = new OrganizationWithUsersRecipe(db); + using var scope = factory.Services.CreateScope(); var domainSeeder = new OrganizationDomainRecipe(db); var domain = OrganizationTestHelpers.GenerateRandomDomain(); - var orgId = orgSeeder.Seed( - name: "Org", - domain: domain, - users: 2, + var orgId = OrganizationWithUsersRecipe.SeedFromServices(scope.ServiceProvider, "Org", domain, 2, usersStatus: OrganizationUserStatusType.Confirmed); domainSeeder.AddVerifiedDomainToOrganization(orgId, domain); @@ -512,12 +495,12 @@ public class OrganizationUsersControllerPerformanceTests(ITestOutputHelper testO var client = factory.CreateClient(); var db = factory.GetDatabaseContext(); - var orgSeeder = new OrganizationWithUsersRecipe(db); - var collectionsSeeder = new CollectionsRecipe(db); + using var scope = factory.Services.CreateScope(); var domain = OrganizationTestHelpers.GenerateRandomDomain(); - var orgId = orgSeeder.Seed(name: "Org", domain: domain, users: 1); + var orgId = OrganizationWithUsersRecipe.SeedFromServices(scope.ServiceProvider, "Org", domain, 1); + var collectionsSeeder = new CollectionsRecipe(db); var orgUserIds = db.OrganizationUsers.Where(ou => ou.OrganizationId == orgId).Select(ou => ou.Id).ToList(); var collectionIds = collectionsSeeder.AddToOrganization(orgId, 2, orgUserIds, 0); @@ -560,14 +543,10 @@ public class OrganizationUsersControllerPerformanceTests(ITestOutputHelper testO var client = factory.CreateClient(); var db = factory.GetDatabaseContext(); - var orgSeeder = new OrganizationWithUsersRecipe(db); + using var scope = factory.Services.CreateScope(); var domain = OrganizationTestHelpers.GenerateRandomDomain(); - var orgId = orgSeeder.Seed( - name: "Org", - domain: domain, - users: userCount, - usersStatus: OrganizationUserStatusType.Invited); + var orgId = OrganizationWithUsersRecipe.SeedFromServices(scope.ServiceProvider, "Org", domain, userCount, usersStatus: OrganizationUserStatusType.Invited); await PerformanceTestHelpers.AuthenticateClientAsync(factory, client, $"owner@{domain}"); diff --git a/test/Api.IntegrationTest/AdminConsole/Controllers/OrganizationsControllerPerformanceTests.cs b/test/Api.IntegrationTest/AdminConsole/Controllers/OrganizationsControllerPerformanceTests.cs index 238a9a5d53..8c68ef07f5 100644 --- a/test/Api.IntegrationTest/AdminConsole/Controllers/OrganizationsControllerPerformanceTests.cs +++ b/test/Api.IntegrationTest/AdminConsole/Controllers/OrganizationsControllerPerformanceTests.cs @@ -29,13 +29,13 @@ public class OrganizationsControllerPerformanceTests(ITestOutputHelper testOutpu var client = factory.CreateClient(); var db = factory.GetDatabaseContext(); - var orgSeeder = new OrganizationWithUsersRecipe(db); - var collectionsSeeder = new CollectionsRecipe(db); - var groupsSeeder = new GroupsRecipe(db); + using var scope = factory.Services.CreateScope(); var domain = OrganizationTestHelpers.GenerateRandomDomain(); - var orgId = orgSeeder.Seed(name: "Org", domain: domain, users: userCount); + var orgId = OrganizationWithUsersRecipe.SeedFromServices(scope.ServiceProvider, "Org", domain, userCount); + var collectionsSeeder = new CollectionsRecipe(db); + var groupsSeeder = new GroupsRecipe(db); var orgUserIds = db.OrganizationUsers.Where(ou => ou.OrganizationId == orgId).Select(ou => ou.Id).ToList(); collectionsSeeder.AddToOrganization(orgId, collectionCount, orgUserIds, 0); groupsSeeder.AddToOrganization(orgId, groupCount, orgUserIds, 0); @@ -77,13 +77,13 @@ public class OrganizationsControllerPerformanceTests(ITestOutputHelper testOutpu var client = factory.CreateClient(); var db = factory.GetDatabaseContext(); - var orgSeeder = new OrganizationWithUsersRecipe(db); - var collectionsSeeder = new CollectionsRecipe(db); - var groupsSeeder = new GroupsRecipe(db); + using var scope = factory.Services.CreateScope(); var domain = OrganizationTestHelpers.GenerateRandomDomain(); - var orgId = orgSeeder.Seed(name: "Org", domain: domain, users: userCount); + var orgId = OrganizationWithUsersRecipe.SeedFromServices(scope.ServiceProvider, "Org", domain, userCount); + var collectionsSeeder = new CollectionsRecipe(db); + var groupsSeeder = new GroupsRecipe(db); var orgUserIds = db.OrganizationUsers.Where(ou => ou.OrganizationId == orgId).Select(ou => ou.Id).ToList(); collectionsSeeder.AddToOrganization(orgId, collectionCount, orgUserIds, 0); groupsSeeder.AddToOrganization(orgId, groupCount, orgUserIds, 0); diff --git a/util/Seeder/Recipes/CollectionsRecipe.cs b/util/Seeder/Recipes/CollectionsRecipe.cs index a5d3cb1efb..340e7e8413 100644 --- a/util/Seeder/Recipes/CollectionsRecipe.cs +++ b/util/Seeder/Recipes/CollectionsRecipe.cs @@ -12,9 +12,9 @@ namespace Bit.Seeder.Recipes; /// /// Creates collections for seeding organization vaults. /// -public class CollectionsRecipe(DatabaseContext db, RustSdkService sdkService) +public class CollectionsRecipe(DatabaseContext db, RustSdkService? sdkService = null) { - private readonly CollectionSeeder _collectionSeeder = new(sdkService); + private readonly CollectionSeeder? _collectionSeeder = sdkService != null ? new(sdkService) : null; /// /// Creates collections from an organizational structure (e.g., Traditional departments, Spotify tribes). @@ -30,7 +30,7 @@ public class CollectionsRecipe(DatabaseContext db, RustSdkService sdkService) var structure = OrgStructures.GetStructure(model); var collections = structure.Units - .Select(unit => _collectionSeeder.CreateCollection(organizationId, orgKeyBase64, unit.Name)) + .Select(unit => _collectionSeeder!.CreateCollection(organizationId, orgKeyBase64, unit.Name)) .ToList(); db.BulkCopy(collections);