using Tau.Acuvim.Portal.Configuration; using Tau.Acuvim.Portal.Services; namespace Tau.Acuvim.Portal.Tests; public class RunModeGuardsTests { [Fact] public void Admin_WithoutConnectionString_Throws() { var app = new ApplicationOptions { RunMode = RunMode.Admin }; var db = new DatabaseOptions { ConnectionString = "" }; var fleet = new FleetIngestOptions(); var ex = Assert.Throws(() => RunModeGuards.ValidateConfig(app, db, fleet)); Assert.Contains("RunMode=Admin requires Database:ConnectionString", ex.Message); } [Fact] public void Admin_WithConnectionString_OK() { var app = new ApplicationOptions { RunMode = RunMode.Admin }; var db = new DatabaseOptions { ConnectionString = "Host=x;Database=y;Username=u;Password=p" }; var fleet = new FleetIngestOptions(); RunModeGuards.ValidateConfig(app, db, fleet); } [Fact] public void Client_WithFleetEnabledMissingUrl_Throws() { var app = new ApplicationOptions { RunMode = RunMode.Client }; var db = new DatabaseOptions { ConnectionString = "x", AutoProvisionLocalTimescaleDb = false }; var fleet = new FleetIngestOptions { Enabled = true, Url = "", Token = "abc" }; var ex = Assert.Throws(() => RunModeGuards.ValidateConfig(app, db, fleet)); Assert.Contains("FleetIngest:Enabled=true requires", ex.Message); } [Fact] public void Client_WithFleetEnabledMissingToken_Throws() { var app = new ApplicationOptions { RunMode = RunMode.Client }; var db = new DatabaseOptions { ConnectionString = "x", AutoProvisionLocalTimescaleDb = false }; var fleet = new FleetIngestOptions { Enabled = true, Url = "https://x", Token = "" }; Assert.Throws(() => RunModeGuards.ValidateConfig(app, db, fleet)); } [Fact] public void Client_WithFleetDisabled_OK() { var app = new ApplicationOptions { RunMode = RunMode.Client }; var db = new DatabaseOptions { ConnectionString = "x", AutoProvisionLocalTimescaleDb = false }; var fleet = new FleetIngestOptions { Enabled = false, Url = "", Token = "" }; RunModeGuards.ValidateConfig(app, db, fleet); } [Fact] public void Client_DefaultMode_NoFleetConfig_OK() { var app = new ApplicationOptions(); var db = new DatabaseOptions { ConnectionString = "x", AutoProvisionLocalTimescaleDb = false }; var fleet = new FleetIngestOptions(); RunModeGuards.ValidateConfig(app, db, fleet); } }