Publish Ludarium source
Public source validation / source (push) Successful in 2m16s

This commit is contained in:
Ludarium release export
2026-09-03 02:08:58 +02:00
commit df869819ce
339 changed files with 46455 additions and 0 deletions
@@ -0,0 +1,54 @@
using System.Text;
using Ludarium.Application;
using Ludarium.Infrastructure;
namespace Ludarium.IntegrationTests;
public sealed class SwitchRuntimeProvisionerTests
{
[Fact]
public async Task VerifiedPersonalKeysAreAtomicallyProvisionedOutsideTheSourceLibrary()
{
var root = Path.Combine(Path.GetTempPath(), $"ludarium-switch-{Guid.NewGuid():N}");
var vaultRoot = Path.Combine(root, "vault");
var runtimeRoot = Path.Combine(root, "eden-keys");
try
{
var vault = new FirmwareVaultFileStore(vaultRoot);
var provisioner = new SwitchRuntimeProvisioner(runtimeRoot);
var requirement = FirmwarePolicy.Get("switch", "prod-keys");
const string fixture = "synthetic-switch-provisioning-fixture\n";
await using var input = new MemoryStream(Encoding.UTF8.GetBytes(fixture));
var asset = await vault.SaveAsync(requirement, Guid.NewGuid(), "prod.keys", input,
input.Length, CancellationToken.None);
await provisioner.ProvisionAsync(asset, vault, CancellationToken.None);
var target = Path.Combine(runtimeRoot, "prod.keys");
Assert.True(provisioner.Configured);
Assert.Equal(fixture, await File.ReadAllTextAsync(target));
if (!OperatingSystem.IsWindows())
Assert.Equal(UnixFileMode.UserRead | UnixFileMode.UserWrite, File.GetUnixFileMode(target));
Assert.Empty(Directory.GetFiles(runtimeRoot, "*.uploading"));
provisioner.Remove(asset);
Assert.False(File.Exists(target));
}
finally
{
if (Directory.Exists(root)) Directory.Delete(root, true);
}
}
[Fact]
public async Task DisabledProvisionerNeverCopiesKeys()
{
var provisioner = new SwitchRuntimeProvisioner(null);
var asset = new Ludarium.Domain.FirmwareAsset(Guid.NewGuid(), "switch", "prod-keys",
Ludarium.Domain.FirmwareAssetKind.KeySet, "prod.keys", 1, new string('0', 64), "missing", true,
DateTimeOffset.UtcNow, DateTimeOffset.UtcNow);
await provisioner.ProvisionAsync(asset, null!, CancellationToken.None);
Assert.False(provisioner.Configured);
}
}