IdentityShroud/IdentityShroud.Api.Tests/Fixtures/ApplicationFactory.cs

53 lines
1.6 KiB
C#
Raw Normal View History

2026-02-08 18:00:24 +01:00
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc.Testing;
using Microsoft.Extensions.Configuration;
using Testcontainers.PostgreSql;
2026-02-08 18:00:24 +01:00
namespace IdentityShroud.Core.Tests.Fixtures;
public class ApplicationFactory : WebApplicationFactory<Program>, IAsyncLifetime
2026-02-08 18:00:24 +01:00
{
private readonly PostgreSqlContainer _postgresqlServer;
2026-02-08 18:00:24 +01:00
// public IRealmService RealmService { get; } = Substitute.For<IRealmService>();
public ApplicationFactory()
{
_postgresqlServer = new PostgreSqlBuilder("postgres:18.1")
.WithName($"is-applicationFactory-{Guid.NewGuid():N}")
.Build();
}
2026-02-08 18:00:24 +01:00
protected override void ConfigureWebHost(IWebHostBuilder builder)
{
base.ConfigureWebHost(builder);
builder.ConfigureAppConfiguration((context, configBuilder) =>
2026-02-08 18:00:24 +01:00
{
configBuilder.AddInMemoryCollection(
new Dictionary<string, string?>
{
["Db:ConnectionString"] = _postgresqlServer.GetConnectionString(),
2026-02-22 09:58:20 +01:00
["secrets:Master"] = "GVd07qW0frRX9quPX/X62L88BeRR7+IzgRJHtG7ZzHw=",
});
2026-02-08 18:00:24 +01:00
});
// builder.ConfigureServices(services =>
// {
// services.AddScoped<IRealmService>(c => RealmService);
// });
2026-02-08 18:00:24 +01:00
builder.UseEnvironment("Development");
}
public async ValueTask InitializeAsync()
{
await _postgresqlServer.StartAsync();
}
public override async ValueTask DisposeAsync()
{
await _postgresqlServer.StopAsync();
await base.DisposeAsync();
}
2026-02-08 18:00:24 +01:00
}