using System; using System.IO; using Paca.App; using Paca.Tests.Infrastructure; using Xunit; namespace Paca.Tests.App; /// /// Gate 153 ~ 155: 데스크톱 백그라운드 게이트웨이 서비스 인스톨러 연동 및 시작프로그램 CLI 모드 기계적 검증 /// public class DesktopGatewayDaemonCommandLineGateTests { [Fact] public void Gate153_CommandLineArgs_GatewayDaemonMode_Detected() { // 1. --gateway-daemon 인자 전달 시 백그라운드 무음 데몬 모드 var mode1 = DesktopStartupModeParser.Parse(new[] { "--gateway-daemon" }); Assert.Equal(DesktopStartupMode.GatewayDaemonSilent, mode1); // 2. 대소문자 무관 감지 var mode2 = DesktopStartupModeParser.Parse(new[] { "--GATEWAY-DAEMON" }); Assert.Equal(DesktopStartupMode.GatewayDaemonSilent, mode2); // 3. 인자 없음 -> 일반 GUI 모드 var mode3 = DesktopStartupModeParser.Parse(Array.Empty()); Assert.Equal(DesktopStartupMode.NormalGui, mode3); // 4. 기타 인자 -> 일반 GUI 모드 var mode4 = DesktopStartupModeParser.Parse(new[] { "--minimize" }); Assert.Equal(DesktopStartupMode.NormalGui, mode4); } [Fact] public void Gate154_GatewayDaemon_StartupRegistryEntry_Configurator() { var exePath = @"C:\Users\Username\AppData\Local\Programs\Paca\Paca.exe"; var runValue = WindowsStartupRegistryHelper.FormatRunCommand(exePath); Assert.Equal("\"C:\\Users\\Username\\AppData\\Local\\Programs\\Paca\\Paca.exe\" --gateway-daemon", runValue); } [Fact] public void Gate155_InstallerScript_Includes_GatewayService_Task_And_Registry() { var installerPath = Path.Combine(SourceTree.Root, "build", "installer.iss"); Assert.True(File.Exists(installerPath), "installer.iss must exist"); var content = File.ReadAllText(installerPath); // 게이트웨이 서비스 설치 태스크 확인 Assert.Contains("gatewayservice", content); Assert.Contains("PacaGatewayDaemon", content); Assert.Contains("--gateway-daemon", content); } [Fact] public void Gate156_AppStartup_DaemonConfig_Defaults() { var config = new Paca.Server.Gateway.GatewayStartupConfig(); Assert.Equal(52100, config.HttpPort); Assert.Equal(52101, config.BeaconUdpPort); Assert.True(config.AutoStartUdpBeacon); } }