43 lines
1.5 KiB
C#
43 lines
1.5 KiB
C#
using Microsoft.Extensions.Diagnostics.HealthChecks;
|
|
using ZB.MOM.WW.Auth.ApiKeys.Sqlite;
|
|
using ZB.MOM.WW.MxGateway.Server.Diagnostics;
|
|
|
|
namespace ZB.MOM.WW.MxGateway.Tests.Diagnostics;
|
|
|
|
public sealed class AuthStoreHealthCheckTests
|
|
{
|
|
private static AuthSqliteConnectionFactory FactoryFor(string sqlitePath)
|
|
{
|
|
// The shared connection factory targets a database path directly.
|
|
return new AuthSqliteConnectionFactory(sqlitePath);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task Healthy_WhenStoreReachable()
|
|
{
|
|
var path = Path.Combine(Path.GetTempPath(), $"authcheck-{Guid.NewGuid():N}.db");
|
|
try
|
|
{
|
|
var check = new AuthStoreHealthCheck(FactoryFor(path));
|
|
var result = await check.CheckHealthAsync(new HealthCheckContext());
|
|
Assert.Equal(HealthStatus.Healthy, result.Status);
|
|
}
|
|
finally { if (File.Exists(path)) File.Delete(path); }
|
|
}
|
|
|
|
[Fact]
|
|
public async Task Unhealthy_WhenPathUnusable()
|
|
{
|
|
// A regular file used as a parent directory forces the open to fail.
|
|
var bogus = Path.Combine(Path.GetTempPath(), $"authcheck-{Guid.NewGuid():N}");
|
|
await File.WriteAllTextAsync(bogus, "x");
|
|
try
|
|
{
|
|
var check = new AuthStoreHealthCheck(FactoryFor(Path.Combine(bogus, "store.db")));
|
|
var result = await check.CheckHealthAsync(new HealthCheckContext());
|
|
Assert.Equal(HealthStatus.Unhealthy, result.Status);
|
|
}
|
|
finally { if (File.Exists(bogus)) File.Delete(bogus); }
|
|
}
|
|
}
|