Files
Ludarium release export df869819ce
Public source validation / source (push) Successful in 2m16s
Publish Ludarium source
2026-09-03 02:08:58 +02:00

34 lines
1.6 KiB
C#

using Ludarium.Application;
using Ludarium.Domain;
namespace Ludarium.UnitTests;
public sealed class FirmwarePolicyTests
{
[Fact]
public void PersonalFirmwareSlotsAreExplicitAndRuntimeClaimsStayHonest()
{
var requirements = FirmwarePolicy.Describe();
Assert.Contains(requirements, item => item.Platform == "psx" && item.Slot == "bios" && item.BrowserDelivery);
Assert.Contains(requirements, item => item.Platform == "ps2" && item.Kind == FirmwareAssetKind.Bios && !item.BrowserDelivery);
Assert.Equal(2, requirements.Count(item => item.Platform == "switch" && item.Kind == FirmwareAssetKind.KeySet && !item.BrowserDelivery));
Assert.All(requirements, item => Assert.Contains("runtime", item.RuntimeState, StringComparison.OrdinalIgnoreCase));
}
[Theory]
[InlineData("psx", "bios", "scph.bin")]
[InlineData("ps2", "bios", "personal.rom")]
[InlineData("switch", "prod-keys", "prod.keys")]
public void AllowlistedNamesAreAccepted(string platform, string slot, string fileName) =>
Assert.Equal(fileName, FirmwarePolicy.ValidateFileName(FirmwarePolicy.Get(platform, slot), fileName));
[Theory]
[InlineData("psx", "bios", "setup.exe")]
[InlineData("switch", "prod-keys", "keys.zip")]
[InlineData("switch", "firmware", "firmware.bin")]
public void UnknownSlotsAndUnsafeExtensionsFailClosed(string platform, string slot, string fileName) =>
Assert.Throws<FirmwareValidationException>(() =>
FirmwarePolicy.ValidateFileName(FirmwarePolicy.Get(platform, slot), fileName));
}