The EncryptionService now loads a set of keys and uses the active one to encrypt and selects key based on keyid during decryption. Introduced EncryptedValue to hold keyId and encrypted data. (There are no intermeddiate keys yet)
56 lines
No EOL
1.8 KiB
C#
56 lines
No EOL
1.8 KiB
C#
using Microsoft.AspNetCore.Hosting;
|
|
using Microsoft.AspNetCore.Mvc.Testing;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Testcontainers.PostgreSql;
|
|
|
|
namespace IdentityShroud.Core.Tests.Fixtures;
|
|
|
|
public class ApplicationFactory : WebApplicationFactory<Program>, IAsyncLifetime
|
|
{
|
|
private readonly PostgreSqlContainer _postgresqlServer;
|
|
|
|
// public IRealmService RealmService { get; } = Substitute.For<IRealmService>();
|
|
|
|
public ApplicationFactory()
|
|
{
|
|
_postgresqlServer = new PostgreSqlBuilder("postgres:18.1")
|
|
.WithName($"is-applicationFactory-{Guid.NewGuid():N}")
|
|
.Build();
|
|
}
|
|
|
|
protected override void ConfigureWebHost(IWebHostBuilder builder)
|
|
{
|
|
base.ConfigureWebHost(builder);
|
|
|
|
builder.ConfigureAppConfiguration((context, configBuilder) =>
|
|
{
|
|
configBuilder.AddInMemoryCollection(
|
|
new Dictionary<string, string?>
|
|
{
|
|
["Db:ConnectionString"] = _postgresqlServer.GetConnectionString(),
|
|
["secrets:master:0:Id"] = "key1",
|
|
["secrets:master:0:Active"] = "true",
|
|
["secrets:master:0:Algorithm"] = "AES",
|
|
["secrets:master:0:Key"] = "GVd07qW0frRX9quPX/X62L88BeRR7+IzgRJHtG7ZzHw=",
|
|
});
|
|
});
|
|
|
|
// builder.ConfigureServices(services =>
|
|
// {
|
|
// services.AddScoped<IRealmService>(c => RealmService);
|
|
// });
|
|
|
|
builder.UseEnvironment("Development");
|
|
}
|
|
|
|
public async ValueTask InitializeAsync()
|
|
{
|
|
await _postgresqlServer.StartAsync();
|
|
}
|
|
|
|
public override async ValueTask DisposeAsync()
|
|
{
|
|
await _postgresqlServer.StopAsync();
|
|
await base.DisposeAsync();
|
|
}
|
|
} |