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); } }