39 lines
1.8 KiB
C#
39 lines
1.8 KiB
C#
using System.Runtime.CompilerServices;
|
|
using System.Text.Json;
|
|
using FruitBank.Common;
|
|
|
|
namespace FruitBankHybrid.Shared.Tests;
|
|
|
|
/// <summary>
|
|
/// Assembly-szintű környezet-hidratálás: a BaseUrl a KANONIKUS FruitBankHybrid.Shared\appsettings.json-ból jön
|
|
/// (a csproj Content-linkje másolja a teszt-outputba) — ugyanaz az egy forrás, mint a hostoknál; nincs külön
|
|
/// teszt-config és nincs hardcode. Hiányzó fájl/kulcs → azonnali exception (fail fast), pontosan mint a hostoknál.
|
|
/// A PROD-védelem NEM itt van: azt a TestServerGuard adja, a szerver saját IsProdEnvironment() bevallása alapján.
|
|
/// </summary>
|
|
internal static class TestEnvironment
|
|
{
|
|
[ModuleInitializer]
|
|
internal static void Init()
|
|
{
|
|
var path = Path.Combine(AppContext.BaseDirectory, "appsettings.json");
|
|
|
|
if (!File.Exists(path))
|
|
throw new InvalidOperationException(
|
|
$"appsettings.json nem található a teszt-outputban ({path}) — a csproj Content-linkje másolja a FruitBankHybrid.Shared kanonikus fájlját.");
|
|
|
|
// A kanonikus appsettings kommenteket is tartalmaz → engedékeny parse.
|
|
using var doc = JsonDocument.Parse(File.ReadAllText(path),
|
|
new JsonDocumentOptions { CommentHandling = JsonCommentHandling.Skip, AllowTrailingCommas = true });
|
|
|
|
var baseUrl = doc.RootElement.TryGetProperty("AyCode", out var ayCode)
|
|
&& ayCode.TryGetProperty("Urls", out var urls)
|
|
&& urls.TryGetProperty("BaseUrl", out var url)
|
|
? url.GetString()
|
|
: null;
|
|
|
|
FruitBankConstClient.BaseUrl = baseUrl
|
|
?? throw new InvalidOperationException(
|
|
"Hiányzik az 'AyCode:Urls:BaseUrl' az appsettings-ből — a teszt-kliens hub-URL-je ebből származik.");
|
|
}
|
|
}
|