diff --git a/src/Server/ZB.MOM.WW.OtOpcUa.AdminUI/Certificates/CertificateStoreManager.cs b/src/Server/ZB.MOM.WW.OtOpcUa.AdminUI/Certificates/CertificateStoreManager.cs index 15180c94..fb0f7cc6 100644 --- a/src/Server/ZB.MOM.WW.OtOpcUa.AdminUI/Certificates/CertificateStoreManager.cs +++ b/src/Server/ZB.MOM.WW.OtOpcUa.AdminUI/Certificates/CertificateStoreManager.cs @@ -102,7 +102,7 @@ public sealed class CertificateStoreManager // store mutation stays synchronous. Every return path (success + every failure) is audited // because Trust/Untrust/Delete each route their single result through here. private void Audit(string action, string store, string thumbprint, string actor, CertActionResult r) - => _audit.WriteAsync(CertAuditEvents.Build(action, store, thumbprint, actor, r.Success, r.Error)); + => _ = _audit.WriteAsync(CertAuditEvents.Build(action, store, thumbprint, actor, r.Success, r.Error)); private CertActionResult Move(string fromSub, string toSub, string thumbprint) { diff --git a/tests/Server/ZB.MOM.WW.OtOpcUa.AdminUI.Tests/Certificates/CertificateStoreManagerTests.cs b/tests/Server/ZB.MOM.WW.OtOpcUa.AdminUI.Tests/Certificates/CertificateStoreManagerTests.cs index 3e9ecd1b..c08ed655 100644 --- a/tests/Server/ZB.MOM.WW.OtOpcUa.AdminUI.Tests/Certificates/CertificateStoreManagerTests.cs +++ b/tests/Server/ZB.MOM.WW.OtOpcUa.AdminUI.Tests/Certificates/CertificateStoreManagerTests.cs @@ -288,4 +288,19 @@ public sealed class CertificateStoreManagerTests : IDisposable evt.SourceNode.ShouldBe(absent); evt.Actor.ShouldBe("bob"); } + + [Fact] + public void Untrust_not_found_writes_one_failure_audit_event() + { + var absent = new string('0', 40); + + var result = _sut.Untrust(absent, "erin"); + + result.Success.ShouldBeFalse(); + var evt = _audit.Events.ShouldHaveSingleItem(); + evt.Action.ShouldBe("Untrust"); + evt.Outcome.ShouldBe(ZB.MOM.WW.Audit.AuditOutcome.Failure); + evt.SourceNode.ShouldBe(absent); + evt.Actor.ShouldBe("erin"); + } }