feat: initialize existing development playout PCs

This commit is contained in:
2026-07-26 23:11:29 +09:00
parent 8b628908f0
commit 483b2785a0
18 changed files with 4029 additions and 74 deletions

View File

@@ -178,6 +178,127 @@ public sealed class LegacyIniDatabaseOptionsLoaderTests
Assert.Equal("selected.maria.invalid", runtime.Options.MariaDb.Host);
}
[Fact]
public void Runtime_DevelopmentLiveUsesOnlyExactLocalAppDataIni()
{
using var localApplicationData = TemporaryDirectory.Create();
var resourceDirectory = Path.Combine(
localApplicationData.Path,
"MBN_STOCK_WEBVIEW",
"Res");
Directory.CreateDirectory(resourceDirectory);
File.WriteAllBytes(
Path.Combine(resourceDirectory, "MmoneyCoder.ini"),
TemporaryLegacyIni.ValidUtf8Bytes());
const string environmentName = "MBN_STOCK_ORACLE_HOST";
var originalEnvironment = Environment.GetEnvironmentVariable(environmentName);
DatabaseRuntime runtime;
try
{
Environment.SetEnvironmentVariable(
environmentName,
"stale-environment.invalid");
runtime = DatabaseRuntime.CreateDevelopmentLiveLocalOverride(
localApplicationData.Path);
}
finally
{
Environment.SetEnvironmentVariable(
environmentName,
originalEnvironment);
}
Assert.Equal("oracle.dev.invalid", runtime.Options.Oracle.Host);
Assert.Equal("maria.dev.invalid", runtime.Options.MariaDb.Host);
}
[Fact]
public void Runtime_DevelopmentLiveFailsClosedWhenBothProtectedProfilesAreMissing()
{
using var localApplicationData = TemporaryDirectory.Create();
Directory.CreateDirectory(Path.Combine(
localApplicationData.Path,
"MBN_STOCK_WEBVIEW",
"Config"));
Assert.Throws<DatabaseConfigurationException>(
() => DatabaseRuntime.CreateDevelopmentLiveLocalOverride(
localApplicationData.Path));
}
[Fact]
public void Runtime_DevelopmentLiveFallsBackToProtectedLocalAppDataJson()
{
using var localApplicationData = TemporaryDirectory.Create();
var configurationDirectory = Path.Combine(
localApplicationData.Path,
"MBN_STOCK_WEBVIEW",
"Config");
Directory.CreateDirectory(configurationDirectory);
File.WriteAllText(
Path.Combine(configurationDirectory, "database.local.json"),
"""
{
"oracle": {
"host": "json.oracle.invalid",
"port": 1521,
"sid": "DEVORA",
"serviceName": null,
"userName": "oracle-user",
"password": "oracle-password"
},
"mariaDb": {
"host": "json.maria.invalid",
"port": 3306,
"database": "dev_stock",
"userName": "maria-user",
"password": "maria-password",
"tlsMode": "Required"
}
}
""");
var runtime = DatabaseRuntime.CreateDevelopmentLiveLocalOverride(
localApplicationData.Path);
Assert.Equal("json.oracle.invalid", runtime.Options.Oracle.Host);
Assert.Equal("json.maria.invalid", runtime.Options.MariaDb.Host);
Assert.Equal(MariaDbTlsMode.Required, runtime.Options.MariaDb.TlsMode);
}
[Fact]
public void Runtime_DevelopmentLiveRejectsNonOrdinaryIniTarget()
{
using var localApplicationData = TemporaryDirectory.Create();
var iniDirectory = Path.Combine(
localApplicationData.Path,
"MBN_STOCK_WEBVIEW",
"Res",
"MmoneyCoder.ini");
Directory.CreateDirectory(iniDirectory);
Assert.Throws<DatabaseConfigurationException>(
() => DatabaseRuntime.CreateDevelopmentLiveLocalOverride(
localApplicationData.Path));
}
[Fact]
public void Runtime_DevelopmentLiveRejectsNonOrdinaryJsonTarget()
{
using var localApplicationData = TemporaryDirectory.Create();
var jsonDirectory = Path.Combine(
localApplicationData.Path,
"MBN_STOCK_WEBVIEW",
"Config",
"database.local.json");
Directory.CreateDirectory(jsonDirectory);
Assert.Throws<DatabaseConfigurationException>(
() => DatabaseRuntime.CreateDevelopmentLiveLocalOverride(
localApplicationData.Path));
}
[Fact]
public void Load_OptionalRealLegacyIni_IsConfiguredWithoutPrintingValues()
{