From 54062982d738f3b33635f88ea71562edc7b3b106 Mon Sep 17 00:00:00 2001 From: Alexander Konietzko Date: Mon, 5 Aug 2024 09:16:50 +0200 Subject: [PATCH] fix: Seed test data correctly --- .../Controller/UserControllerTests.cs | 2 +- .../Fixtures/UserTestFixture.cs | 40 ++++++++++++++++++- .../Fixtures/gRPC/GetUsersByIdsTestFixture.cs | 4 ++ .../UtilityTests/AuthTests.cs | 17 +++----- 4 files changed, 50 insertions(+), 13 deletions(-) diff --git a/CleanArchitecture.IntegrationTests/Controller/UserControllerTests.cs b/CleanArchitecture.IntegrationTests/Controller/UserControllerTests.cs index ab858ed..422cae7 100644 --- a/CleanArchitecture.IntegrationTests/Controller/UserControllerTests.cs +++ b/CleanArchitecture.IntegrationTests/Controller/UserControllerTests.cs @@ -18,7 +18,7 @@ public sealed class UserControllerTests private readonly UserTestFixture _fixture = new(); [OneTimeSetUp] - public async Task Setup() => await GlobalSetupFixture.RespawnDatabaseAsync(); + public async Task Setup() => await _fixture.SeedTestData(); [Test, Order(0)] public async Task Should_Get_All_User() diff --git a/CleanArchitecture.IntegrationTests/Fixtures/UserTestFixture.cs b/CleanArchitecture.IntegrationTests/Fixtures/UserTestFixture.cs index 67baaa6..3939b3d 100644 --- a/CleanArchitecture.IntegrationTests/Fixtures/UserTestFixture.cs +++ b/CleanArchitecture.IntegrationTests/Fixtures/UserTestFixture.cs @@ -1,5 +1,43 @@ -namespace CleanArchitecture.IntegrationTests.Fixtures; +using CleanArchitecture.Domain.Enums; +using CleanArchitecture.Infrastructure.Database; +using Microsoft.Extensions.DependencyInjection; +using System.Threading.Tasks; +using CleanArchitecture.Domain.Constants; +using CleanArchitecture.IntegrationTests.Infrastructure.Auth; +using CleanArchitecture.Domain.Entities; + +namespace CleanArchitecture.IntegrationTests.Fixtures; public sealed class UserTestFixture : TestFixtureBase { + public async Task SeedTestData() + { + await GlobalSetupFixture.RespawnDatabaseAsync(); + + using var context = Factory.Services.GetRequiredService(); + + context.Tenants.Add(new Tenant( + Ids.Seed.TenantId, + "Admin Tenant")); + + context.Users.Add(new User( + Ids.Seed.UserId, + Ids.Seed.TenantId, + "admin@email.com", + "Admin", + "User", + "$2a$12$Blal/uiFIJdYsCLTMUik/egLbfg3XhbnxBC6Sb5IKz2ZYhiU/MzL2", + UserRole.Admin)); + + context.Users.Add(new User( + TestAuthenticationOptions.TestUserId, + Ids.Seed.TenantId, + TestAuthenticationOptions.Email, + TestAuthenticationOptions.FirstName, + TestAuthenticationOptions.LastName, + TestAuthenticationOptions.Password, + UserRole.Admin)); + + await context.SaveChangesAsync(); + } } \ No newline at end of file diff --git a/CleanArchitecture.IntegrationTests/Fixtures/gRPC/GetUsersByIdsTestFixture.cs b/CleanArchitecture.IntegrationTests/Fixtures/gRPC/GetUsersByIdsTestFixture.cs index 09fa30e..0e35906 100644 --- a/CleanArchitecture.IntegrationTests/Fixtures/gRPC/GetUsersByIdsTestFixture.cs +++ b/CleanArchitecture.IntegrationTests/Fixtures/gRPC/GetUsersByIdsTestFixture.cs @@ -28,6 +28,10 @@ public sealed class GetUsersByIdsTestFixture : TestFixtureBase using var context = Factory.Services.GetRequiredService(); + context.Tenants.Add(new Tenant( + Ids.Seed.TenantId, + "Admin Tenant")); + var user = CreateUser(); context.Users.Add(user); diff --git a/CleanArchitecture.IntegrationTests/UtilityTests/AuthTests.cs b/CleanArchitecture.IntegrationTests/UtilityTests/AuthTests.cs index eea7c8f..e313f2c 100644 --- a/CleanArchitecture.IntegrationTests/UtilityTests/AuthTests.cs +++ b/CleanArchitecture.IntegrationTests/UtilityTests/AuthTests.cs @@ -12,17 +12,12 @@ public sealed class AuthTests [OneTimeSetUp] public async Task Setup() => await GlobalSetupFixture.RespawnDatabaseAsync(); - [Datapoints] - public string[] values = - [ - "/api/v1/user", - "/api/v1/user/me", - "/api/v1/user/d74b112a-ece0-443d-9b4f-85bc418822ca", - "/api/v1/tenant", - "/api/v1/tenant/d74b112a-ece0-443d-9b4f-85bc418822ca" - ]; - - [Theory] + [Test] + [TestCase("/api/v1/user")] + [TestCase("/api/v1/user/me")] + [TestCase("/api/v1/user/d74b112a-ece0-443d-9b4f-85bc418822ca")] + [TestCase("/api/v1/tenant")] + [TestCase("/api/v1/tenant/d74b112a-ece0-443d-9b4f-85bc418822ca")] public async Task Should_Get_Unauthorized_If_Trying_To_Call_Endpoint_Without_Token(string url) { var response = await _fixture.ServerClient.GetAsync(url);