From 990731d12f43b64537e7fe280a4af80580aae624 Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Thu, 21 May 2026 14:48:39 -0400 Subject: [PATCH] test(auditlog): cover ExecutionId in AuditEvent round-trip test; clarify staging-table comment --- .../Repositories/AuditLogRepository.cs | 3 +++ .../Entities/Audit/AuditEventTests.cs | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/src/ScadaLink.ConfigurationDatabase/Repositories/AuditLogRepository.cs b/src/ScadaLink.ConfigurationDatabase/Repositories/AuditLogRepository.cs index 1e557a1..25d44c0 100644 --- a/src/ScadaLink.ConfigurationDatabase/Repositories/AuditLogRepository.cs +++ b/src/ScadaLink.ConfigurationDatabase/Repositories/AuditLogRepository.cs @@ -268,6 +268,9 @@ VALUES PayloadTruncated bit NOT NULL, Extra nvarchar(max) NULL, ForwardState varchar(32) NULL, + -- ExecutionId is last because it was added to the live AuditLog table by a later + -- ALTER TABLE ADD migration; the staging table must match the live table column + -- shape ordinal-for-ordinal or ALTER TABLE ... SWITCH PARTITION fails. ExecutionId uniqueidentifier NULL, CONSTRAINT PK_{stagingTableName} PRIMARY KEY CLUSTERED (EventId, OccurredAtUtc) ) ON [PRIMARY]; diff --git a/tests/ScadaLink.Commons.Tests/Entities/Audit/AuditEventTests.cs b/tests/ScadaLink.Commons.Tests/Entities/Audit/AuditEventTests.cs index 37ccb9f..89a68fd 100644 --- a/tests/ScadaLink.Commons.Tests/Entities/Audit/AuditEventTests.cs +++ b/tests/ScadaLink.Commons.Tests/Entities/Audit/AuditEventTests.cs @@ -17,6 +17,7 @@ public class AuditEventTests var occurredAt = new DateTime(2026, 5, 20, 12, 0, 0, DateTimeKind.Utc); var ingestedAt = new DateTime(2026, 5, 20, 12, 0, 1, DateTimeKind.Utc); var corrId = Guid.NewGuid(); + var execId = Guid.NewGuid(); var evt = new AuditEvent { @@ -26,6 +27,7 @@ public class AuditEventTests Channel = AuditChannel.ApiOutbound, Kind = AuditKind.ApiCall, CorrelationId = corrId, + ExecutionId = execId, SourceSiteId = "site-01", SourceInstanceId = "inst-7", SourceScript = "OnAlarm", @@ -49,6 +51,7 @@ public class AuditEventTests Assert.Equal(AuditChannel.ApiOutbound, evt.Channel); Assert.Equal(AuditKind.ApiCall, evt.Kind); Assert.Equal(corrId, evt.CorrelationId); + Assert.Equal(execId, evt.ExecutionId); Assert.Equal("site-01", evt.SourceSiteId); Assert.Equal("inst-7", evt.SourceInstanceId); Assert.Equal("OnAlarm", evt.SourceScript); @@ -77,6 +80,7 @@ public class AuditEventTests Channel = AuditChannel.Notification, Kind = AuditKind.NotifySend, CorrelationId = null, + ExecutionId = null, SourceSiteId = null, SourceInstanceId = null, SourceScript = null, @@ -96,6 +100,7 @@ public class AuditEventTests Assert.Null(evt.IngestedAtUtc); Assert.Null(evt.CorrelationId); + Assert.Null(evt.ExecutionId); Assert.Null(evt.SourceSiteId); Assert.Null(evt.SourceInstanceId); Assert.Null(evt.SourceScript);