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);