This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
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));
|
||||
}
|
||||
Reference in New Issue
Block a user