122 lines
4.4 KiB
C#
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.");
|
|
}
|
|
}
|