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);
}
}