thalos-dal/tests/Thalos.DAL.UnitTests/RuntimeWiringTests.cs
2026-02-22 17:14:05 -06:00

66 lines
2.2 KiB
C#

using Microsoft.Extensions.DependencyInjection;
using Thalos.DAL.Adapters;
using Thalos.DAL.Contracts;
using Thalos.DAL.DependencyInjection;
using Thalos.DAL.Health;
using Thalos.DAL.Repositories;
namespace Thalos.DAL.UnitTests;
public class RuntimeWiringTests
{
[Fact]
public async Task AddThalosDalRuntime_WhenResolved_WiresRepositoryAndProviders()
{
var services = new ServiceCollection();
services.AddThalosDalRuntime();
using var provider = services.BuildServiceProvider();
var repository = provider.GetRequiredService<IIdentityRepository>();
var request = new IdentityTokenLookupRequest(
new IdentityContractEnvelope("1.0.0", "corr-123"),
"user-1",
"tenant-1");
var response = await repository.ReadIdentityTokenAsync(request);
Assert.NotNull(response);
Assert.Equal("user-1", response.SubjectId);
Assert.Equal("tenant-1", response.TenantId);
Assert.Equal(1800, response.ExpiresInSeconds);
}
[Fact]
public void AddThalosDalRuntime_WhenResolved_WiresGrpcContractAdapter()
{
var services = new ServiceCollection();
services.AddThalosDalRuntime();
using var provider = services.BuildServiceProvider();
var adapter = provider.GetRequiredService<IIdentityDalGrpcContractAdapter>();
var grpcContract = new Thalos.DAL.Grpc.IdentityTokenDalGrpcContract("user-2", "tenant-2");
var request = adapter.FromGrpcTokenRequest(grpcContract);
Assert.Equal("user-2", request.SubjectId);
Assert.Equal("tenant-2", request.TenantId);
Assert.NotEmpty(request.Envelope.CorrelationId);
}
[Fact]
public async Task AddThalosDalRuntime_WhenResolved_WiresDependencyHealthCheck()
{
var services = new ServiceCollection();
services.AddThalosDalRuntime();
using var provider = services.BuildServiceProvider();
var healthCheck = provider.GetRequiredService<IDalDependencyHealthCheck>();
var status = await healthCheck.CheckAsync();
Assert.True(status.IsHealthy);
Assert.Contains("IUserDataProvider", status.DependencyNames);
Assert.Contains("IPermissionDataProvider", status.DependencyNames);
}
}