89 lines
3.2 KiB
C#
89 lines
3.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);
|
|
Assert.Equal(BuildingBlock.Identity.Contracts.Conventions.IdentityAuthProvider.InternalJwt, response.Provider);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task AddThalosDalRuntime_WhenExternalProviderUsed_ResolvesProviderSpecificToken()
|
|
{
|
|
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-ext"),
|
|
string.Empty,
|
|
"tenant-2",
|
|
BuildingBlock.Identity.Contracts.Conventions.IdentityAuthProvider.AzureAd,
|
|
"external-azure-token");
|
|
|
|
var response = await repository.ReadIdentityTokenAsync(request);
|
|
|
|
Assert.NotNull(response);
|
|
Assert.Equal(BuildingBlock.Identity.Contracts.Conventions.IdentityAuthProvider.AzureAd, response.Provider);
|
|
Assert.StartsWith("azure:", response.Token);
|
|
}
|
|
|
|
[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);
|
|
}
|
|
}
|