audit work, doctors work
This commit is contained in:
@@ -0,0 +1,190 @@
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Logging.Abstractions;
|
||||
using StellaOps.Doctor.Models;
|
||||
using StellaOps.Doctor.Plugins;
|
||||
using StellaOps.Doctor.Plugins.Database;
|
||||
using Xunit;
|
||||
|
||||
namespace StellaOps.Doctor.Plugins.Database.Tests;
|
||||
|
||||
[Trait("Category", "Unit")]
|
||||
public class DatabasePluginTests
|
||||
{
|
||||
[Fact]
|
||||
public void PluginId_ReturnsExpectedValue()
|
||||
{
|
||||
var plugin = new DatabasePlugin();
|
||||
|
||||
Assert.Equal("stellaops.doctor.database", plugin.PluginId);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void DisplayName_ReturnsExpectedValue()
|
||||
{
|
||||
var plugin = new DatabasePlugin();
|
||||
|
||||
Assert.Equal("Database", plugin.DisplayName);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Category_ReturnsDatabase()
|
||||
{
|
||||
var plugin = new DatabasePlugin();
|
||||
|
||||
Assert.Equal(DoctorCategory.Database, plugin.Category);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Version_ReturnsValidVersion()
|
||||
{
|
||||
var plugin = new DatabasePlugin();
|
||||
|
||||
Assert.NotNull(plugin.Version);
|
||||
Assert.True(plugin.Version >= new Version(1, 0, 0));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void MinEngineVersion_ReturnsValidVersion()
|
||||
{
|
||||
var plugin = new DatabasePlugin();
|
||||
|
||||
Assert.NotNull(plugin.MinEngineVersion);
|
||||
Assert.True(plugin.MinEngineVersion >= new Version(1, 0, 0));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void IsAvailable_ReturnsTrue()
|
||||
{
|
||||
var plugin = new DatabasePlugin();
|
||||
var services = new ServiceCollection().BuildServiceProvider();
|
||||
|
||||
Assert.True(plugin.IsAvailable(services));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetChecks_ReturnsEightChecks()
|
||||
{
|
||||
var plugin = new DatabasePlugin();
|
||||
var context = CreateTestContext();
|
||||
|
||||
var checks = plugin.GetChecks(context);
|
||||
|
||||
Assert.Equal(8, checks.Count);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetChecks_ContainsDatabaseConnectionCheck()
|
||||
{
|
||||
var plugin = new DatabasePlugin();
|
||||
var context = CreateTestContext();
|
||||
|
||||
var checks = plugin.GetChecks(context);
|
||||
|
||||
Assert.Contains(checks, c => c.CheckId == "check.db.connection");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetChecks_ContainsPendingMigrationsCheck()
|
||||
{
|
||||
var plugin = new DatabasePlugin();
|
||||
var context = CreateTestContext();
|
||||
|
||||
var checks = plugin.GetChecks(context);
|
||||
|
||||
Assert.Contains(checks, c => c.CheckId == "check.db.migrations.pending");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetChecks_ContainsFailedMigrationsCheck()
|
||||
{
|
||||
var plugin = new DatabasePlugin();
|
||||
var context = CreateTestContext();
|
||||
|
||||
var checks = plugin.GetChecks(context);
|
||||
|
||||
Assert.Contains(checks, c => c.CheckId == "check.db.migrations.failed");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetChecks_ContainsSchemaVersionCheck()
|
||||
{
|
||||
var plugin = new DatabasePlugin();
|
||||
var context = CreateTestContext();
|
||||
|
||||
var checks = plugin.GetChecks(context);
|
||||
|
||||
Assert.Contains(checks, c => c.CheckId == "check.db.schema.version");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetChecks_ContainsConnectionPoolHealthCheck()
|
||||
{
|
||||
var plugin = new DatabasePlugin();
|
||||
var context = CreateTestContext();
|
||||
|
||||
var checks = plugin.GetChecks(context);
|
||||
|
||||
Assert.Contains(checks, c => c.CheckId == "check.db.pool.health");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetChecks_ContainsConnectionPoolSizeCheck()
|
||||
{
|
||||
var plugin = new DatabasePlugin();
|
||||
var context = CreateTestContext();
|
||||
|
||||
var checks = plugin.GetChecks(context);
|
||||
|
||||
Assert.Contains(checks, c => c.CheckId == "check.db.pool.size");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetChecks_ContainsQueryLatencyCheck()
|
||||
{
|
||||
var plugin = new DatabasePlugin();
|
||||
var context = CreateTestContext();
|
||||
|
||||
var checks = plugin.GetChecks(context);
|
||||
|
||||
Assert.Contains(checks, c => c.CheckId == "check.db.latency");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetChecks_ContainsDatabasePermissionsCheck()
|
||||
{
|
||||
var plugin = new DatabasePlugin();
|
||||
var context = CreateTestContext();
|
||||
|
||||
var checks = plugin.GetChecks(context);
|
||||
|
||||
Assert.Contains(checks, c => c.CheckId == "check.db.permissions");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task InitializeAsync_CompletesSuccessfully()
|
||||
{
|
||||
var plugin = new DatabasePlugin();
|
||||
var context = CreateTestContext();
|
||||
|
||||
await plugin.InitializeAsync(context, CancellationToken.None);
|
||||
|
||||
// Should complete without throwing
|
||||
}
|
||||
|
||||
private static DoctorPluginContext CreateTestContext(IConfiguration? configuration = null)
|
||||
{
|
||||
var services = new ServiceCollection().BuildServiceProvider();
|
||||
configuration ??= new ConfigurationBuilder().Build();
|
||||
|
||||
return new DoctorPluginContext
|
||||
{
|
||||
Services = services,
|
||||
Configuration = configuration,
|
||||
TimeProvider = TimeProvider.System,
|
||||
Logger = NullLogger.Instance,
|
||||
EnvironmentName = "Test",
|
||||
PluginConfig = configuration.GetSection("Doctor:Plugins:Database")
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user