Files
MBN_STOCK_WEBVIEW/tests/MBN_STOCK_WEBVIEW.LegacyWeb.Tests/LegacyDbSmokeRuntimeSelectionContractTests.cs

122 lines
4.4 KiB
C#

namespace MBN_STOCK_WEBVIEW.LegacyWeb.Tests;
public sealed class LegacyDbSmokeRuntimeSelectionContractTests
{
private static readonly string RepositoryRoot = FindRepositoryRoot();
private static readonly string Program = File.ReadAllText(Path.Combine(
RepositoryRoot,
"tools",
"MBN_STOCK_WEBVIEW.DbSmoke",
"Program.cs"));
private static readonly string NxtAudit = File.ReadAllText(Path.Combine(
RepositoryRoot,
"tools",
"MBN_STOCK_WEBVIEW.DbSmoke",
"NxtThemeRestoreDbAudit.cs"));
[Fact]
public void SelectedLegacyRuntimeEndpointIsInjectedIntoNxtAudit()
{
Assert.Contains(
"var iniPath = Path.Combine(root, \"Res\", \"MmoneyCoder.ini\");",
Program,
StringComparison.Ordinal);
Assert.Contains(
"new LegacyIniDatabaseOptionsLoader(_ => null).Load(iniPath)",
Program,
StringComparison.Ordinal);
Assert.Contains(
"MariaDbEndpointReference.From(selectedOptions.MariaDb)",
Program,
StringComparison.Ordinal);
Assert.Contains(
"selection.ReferenceMariaDb",
Program,
StringComparison.Ordinal);
Assert.Contains(
"MariaDbEndpointReference referenceOptions",
NxtAudit,
StringComparison.Ordinal);
Assert.Contains(
"referenceOptions.Host",
NxtAudit,
StringComparison.Ordinal);
Assert.Contains(
"referenceOptions.Port",
NxtAudit,
StringComparison.Ordinal);
Assert.Contains(
"referenceOptions.Database",
NxtAudit,
StringComparison.Ordinal);
}
[Fact]
public void JsonRuntimeEndpointIsCapturedBeforeEnvironmentOverrides()
{
Assert.Contains(
"new DatabaseOptionsLoader(_ => null).Load(configurationPath)",
Program,
StringComparison.Ordinal);
Assert.Contains(
"var runtime = DatabaseRuntime.CreateDefault(configurationPath);",
Program,
StringComparison.Ordinal);
Assert.Contains(
"HasCompleteEndpointIdentity(configuredMariaDb)",
Program,
StringComparison.Ordinal);
Assert.Contains(
"MariaDbEndpointReference.From(configuredMariaDb)",
Program,
StringComparison.Ordinal);
Assert.Contains(
"MariaDbEndpointReference.From(runtime.Options.MariaDb)",
Program,
StringComparison.Ordinal);
}
[Fact]
public void NxtAuditHasNoMachineSpecificOriginalConfigurationDependency()
{
Assert.DoesNotContain("OriginalConfigurationPath", NxtAudit, StringComparison.Ordinal);
Assert.DoesNotContain("ReadOriginalEndpoint", NxtAudit, StringComparison.Ordinal);
Assert.DoesNotContain("MBN_STOCK_N", NxtAudit, StringComparison.OrdinalIgnoreCase);
Assert.DoesNotContain("MmoneyCoder.ini", NxtAudit, StringComparison.OrdinalIgnoreCase);
}
[Fact]
public void InjectedReferenceContainsEndpointIdentityOnly()
{
Assert.Contains(
"internal sealed record MariaDbEndpointReference(",
NxtAudit,
StringComparison.Ordinal);
Assert.Contains("string? Host", NxtAudit, StringComparison.Ordinal);
Assert.Contains("int Port", NxtAudit, StringComparison.Ordinal);
Assert.Contains("string? Database", NxtAudit, StringComparison.Ordinal);
Assert.DoesNotContain("UserName", NxtAudit, StringComparison.Ordinal);
Assert.DoesNotContain("Password", NxtAudit, StringComparison.Ordinal);
Assert.Contains("originalSha256=", NxtAudit, StringComparison.Ordinal);
Assert.Contains("currentSha256=", NxtAudit, StringComparison.Ordinal);
Assert.Contains("configuredEqual=", NxtAudit, StringComparison.Ordinal);
}
private static string FindRepositoryRoot()
{
var current = new DirectoryInfo(AppContext.BaseDirectory);
while (current is not null)
{
if (File.Exists(Path.Combine(current.FullName, "MBN_STOCK_WEBVIEW.sln")))
{
return current.FullName;
}
current = current.Parent;
}
throw new DirectoryNotFoundException("Could not locate the repository root.");
}
}