using Akka.Hosting;
using Akka.TestKit.Xunit2;
using Shouldly;
using Xunit;
using ZB.MOM.WW.Audit;
using ZB.MOM.WW.OtOpcUa.AdminUI.Audit;
using ZB.MOM.WW.OtOpcUa.ControlPlane;
namespace ZB.MOM.WW.OtOpcUa.AdminUI.Tests.Audit;
///
/// Unit tests for , the AdminUI-side
/// adapter that forwards canonical audit events to the cluster-singleton
/// proxy resolved from the .
///
public sealed class ActorAuditWriterTests : TestKit
{
/// WriteAsync forwards the event verbatim to the registered AuditWriter singleton.
[Fact]
public async Task WriteAsync_tells_the_registered_singleton()
{
var probe = CreateTestProbe("audit-writer");
var registry = new ActorRegistry();
registry.Register(probe.Ref);
var writer = new ActorAuditWriter(registry);
var evt = new AuditEvent
{
EventId = Guid.NewGuid(),
OccurredAtUtc = DateTimeOffset.UtcNow,
Actor = "alice",
Action = "Trust",
Category = "Certificate",
SourceNode = "AABBCC",
Outcome = AuditOutcome.Success,
DetailsJson = "{}",
};
await writer.WriteAsync(evt);
var received = probe.ExpectMsg(TimeSpan.FromSeconds(3));
received.ShouldBe(evt);
}
}