mirror of
https://github.com/MAKS-IT-COM/uscheduler.git
synced 2026-10-01 05:28:09 +02:00
57 lines
2.2 KiB
C#
57 lines
2.2 KiB
C#
using MaksIT.UScheduler.Shared;
|
|
|
|
|
|
namespace MaksIT.UScheduler.Tests;
|
|
|
|
public class HostServiceRegistrationTests {
|
|
[Fact]
|
|
public void FormatWindowsCreateArguments_RequiresSpaceAfterEquals() {
|
|
var arguments = HostServiceRegistration.FormatWindowsCreateArguments(
|
|
"MaksIT.UScheduler",
|
|
Path.Combine(Path.GetTempPath(), "MaksIT.UScheduler.exe"));
|
|
|
|
Assert.Contains("binPath= ", arguments, StringComparison.Ordinal);
|
|
Assert.Contains("start= auto", arguments, StringComparison.Ordinal);
|
|
Assert.DoesNotContain("start=auto", arguments, StringComparison.Ordinal);
|
|
Assert.Contains("create \"MaksIT.UScheduler\"", arguments, StringComparison.Ordinal);
|
|
}
|
|
|
|
[Fact]
|
|
public void FormatSystemdUnit_UsesNotifyLifetimeAndQuotedPaths() {
|
|
var unit = HostServiceRegistration.FormatSystemdUnit(
|
|
"MaksIT.UScheduler",
|
|
Path.Combine(Path.GetTempPath(), "MaksIT.UScheduler"),
|
|
"Schedules PowerShell scripts.");
|
|
|
|
Assert.Contains("Type=notify", unit, StringComparison.Ordinal);
|
|
Assert.Contains("ExecStart=\"", unit, StringComparison.Ordinal);
|
|
Assert.Contains("WorkingDirectory=\"", unit, StringComparison.Ordinal);
|
|
Assert.Contains("WantedBy=multi-user.target", unit, StringComparison.Ordinal);
|
|
Assert.Contains("SyslogIdentifier=MaksIT.UScheduler", unit, StringComparison.Ordinal);
|
|
Assert.Contains("KillSignal=SIGTERM", unit, StringComparison.Ordinal);
|
|
}
|
|
|
|
[Fact]
|
|
public void IsValidServiceName_AcceptsDefaultAndRejectsUnsafe() {
|
|
Assert.True(HostServiceRegistration.IsValidServiceName("MaksIT.UScheduler"));
|
|
Assert.False(HostServiceRegistration.IsValidServiceName("MaksIT Scheduler"));
|
|
Assert.False(HostServiceRegistration.IsValidServiceName("../evil"));
|
|
Assert.False(HostServiceRegistration.IsValidServiceName(""));
|
|
}
|
|
|
|
[Fact]
|
|
public void GetSystemdUnitPath_IsUnderSystemdSystem() =>
|
|
Assert.Equal(
|
|
"/etc/systemd/system/MaksIT.UScheduler.service",
|
|
HostServiceRegistration.GetSystemdUnitPath("MaksIT.UScheduler"));
|
|
|
|
[Fact]
|
|
public void GetExecutableFileName_MatchesHost() {
|
|
var name = HostServiceManager.GetExecutableFileName();
|
|
if (OperatingSystem.IsWindows())
|
|
Assert.Equal("MaksIT.UScheduler.exe", name);
|
|
else
|
|
Assert.Equal("MaksIT.UScheduler", name);
|
|
}
|
|
}
|