From 85e1e805b7b49918ddcd4d540358235a7a8a1e65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Brage=20Skj=C3=B8nborg?= Date: Sun, 1 Feb 2026 19:35:23 +0100 Subject: [PATCH] Removed default referenceId - avoiding rouge events --- .../no/iktdev/eventi/EventDispatcherTest.kt | 39 +++++++++++-------- src/test/kotlin/no/iktdev/eventi/ZDSTest.kt | 2 +- .../events/EventPollerImplementationTest.kt | 2 +- .../tasks/TaskPollerImplementationTest.kt | 2 +- 4 files changed, 25 insertions(+), 20 deletions(-) diff --git a/src/test/kotlin/no/iktdev/eventi/EventDispatcherTest.kt b/src/test/kotlin/no/iktdev/eventi/EventDispatcherTest.kt index 1020ead..bd362d1 100644 --- a/src/test/kotlin/no/iktdev/eventi/EventDispatcherTest.kt +++ b/src/test/kotlin/no/iktdev/eventi/EventDispatcherTest.kt @@ -64,7 +64,7 @@ class EventDispatcherTest : TestBase() { fun shouldProduceOneEventAndStop() { ProducingListener() - val trigger = TriggerEvent() + val trigger = TriggerEvent().newReferenceId() dispatcher.dispatch(trigger.referenceId, listOf(trigger)) val produced = eventStore.all().firstOrNull() @@ -87,7 +87,7 @@ class EventDispatcherTest : TestBase() { fun shouldSkipAlreadyDerivedEvents() { ProducingListener() - val trigger = TriggerEvent() + val trigger = TriggerEvent().newReferenceId() val derived = DerivedEvent().derivedOf(trigger).toPersisted(1L, MyTime.utcNow()) eventStore.persist(derived!!.toEvent()!!) // simulate prior production @@ -108,8 +108,8 @@ class EventDispatcherTest : TestBase() { fun shouldPassFullContextToListener() { val listener = ContextCapturingListener() - val e1 = TriggerEvent() - val e2 = OtherEvent() + val e1 = TriggerEvent().newReferenceId() + val e2 = OtherEvent().newReferenceId() dispatcher.dispatch(e1.referenceId, listOf(e1, e2)) assertEquals(2, listener.context.size) @@ -124,9 +124,11 @@ class EventDispatcherTest : TestBase() { """ ) fun shouldBehaveDeterministicallyAcrossReplays() { + val referenceId = UUID.randomUUID() + ProducingListener() - val trigger = TriggerEvent() + val trigger = TriggerEvent().usingReferenceId(referenceId) dispatcher.dispatch(trigger.referenceId, listOf(trigger)) val replayContext = listOf(trigger) + eventStore.all().mapNotNull { it.toEvent() } @@ -144,6 +146,8 @@ class EventDispatcherTest : TestBase() { """ ) fun shouldNotDeliverDeletedEventsAsCandidates() { + val referenceId = UUID.randomUUID() + val dispatcher = EventDispatcher(eventStore) val received = mutableListOf() @@ -154,11 +158,10 @@ class EventDispatcherTest : TestBase() { } } // Original hendelse - val original = TriggerEvent() + val original = TriggerEvent().usingReferenceId(referenceId) // Slettehendelse som peker på original - val deleted = object : DeleteEvent(original.eventId) { - } + val deleted = object : DeleteEvent(original.eventId) {}.apply { newReferenceId() } // Dispatch med begge hendelser dispatcher.dispatch(original.referenceId, listOf(original, deleted)) @@ -184,6 +187,8 @@ class EventDispatcherTest : TestBase() { ) fun shouldDeliverDeleteEventToListenersThatReactToIt() { val received = mutableListOf() + val referenceId = UUID.randomUUID() + object : EventListener() { override fun onEvent(event: Event, history: List): Event? { if (event is DeleteEvent) received += event @@ -191,7 +196,7 @@ class EventDispatcherTest : TestBase() { } } - val deleted = object : DeleteEvent(UUID.randomUUID()) {} + val deleted = object : DeleteEvent(UUID.randomUUID()) {}.apply { usingReferenceId(referenceId) } dispatcher.dispatch(deleted.referenceId, listOf(deleted)) assertTrue(received.contains(deleted)) @@ -208,7 +213,7 @@ class EventDispatcherTest : TestBase() { fun shouldNotRedeliverEventsThatHaveProducedDerivedEvents() { ProducingListener() - val trigger = TriggerEvent() + val trigger = TriggerEvent().newReferenceId() // Første dispatch: trigger produserer en DerivedEvent dispatcher.dispatch(trigger.referenceId, listOf(trigger)) @@ -238,8 +243,8 @@ class EventDispatcherTest : TestBase() { fun historyShouldExcludeDeletedEvents() { val dispatcher = EventDispatcher(eventStore) - val original = TriggerEvent() - val deleted = object : DeleteEvent(original.eventId) {} + val original = TriggerEvent().newReferenceId() + val deleted = object : DeleteEvent(original.eventId) {}.apply { usingReferenceId(original.referenceId) } var receivedHistory: List = emptyList() @@ -266,9 +271,9 @@ class EventDispatcherTest : TestBase() { ) fun historyShouldKeepNonDeletedEvents() { val dispatcher = EventDispatcher(eventStore) - - val e1 = TriggerEvent() - val e2 = OtherEvent() + val referenceId = UUID.randomUUID() + val e1 = TriggerEvent().usingReferenceId(referenceId) + val e2 = OtherEvent().usingReferenceId(referenceId) val deleted = object : DeleteEvent(e1.eventId) {} var receivedHistory: List = emptyList() @@ -298,8 +303,8 @@ class EventDispatcherTest : TestBase() { fun deleteEventShouldBeDeliveredButHistoryEmpty() { val dispatcher = EventDispatcher(eventStore) - val original = TriggerEvent() - val deleted = object : DeleteEvent(original.eventId) {} + val original = TriggerEvent().newReferenceId() + val deleted = object : DeleteEvent(original.eventId) {}.apply { newReferenceId() } var receivedEvent: Event? = null var receivedHistory: List = emptyList() diff --git a/src/test/kotlin/no/iktdev/eventi/ZDSTest.kt b/src/test/kotlin/no/iktdev/eventi/ZDSTest.kt index 689a07b..dc6d212 100644 --- a/src/test/kotlin/no/iktdev/eventi/ZDSTest.kt +++ b/src/test/kotlin/no/iktdev/eventi/ZDSTest.kt @@ -39,7 +39,7 @@ class ZDSTest { fun scenario1() { EventTypeRegistry.register(EchoEvent::class.java) - val echo = EchoEvent("hello") + val echo = EchoEvent("hello").newReferenceId() val persisted = echo.toPersisted(id = 1L) val restored = persisted!!.toEvent() diff --git a/src/test/kotlin/no/iktdev/eventi/events/EventPollerImplementationTest.kt b/src/test/kotlin/no/iktdev/eventi/events/EventPollerImplementationTest.kt index d81ab29..5e3829d 100644 --- a/src/test/kotlin/no/iktdev/eventi/events/EventPollerImplementationTest.kt +++ b/src/test/kotlin/no/iktdev/eventi/events/EventPollerImplementationTest.kt @@ -214,7 +214,7 @@ class EventPollerImplementationTest : TestBase() { } } - val original = EchoEvent("Hello") + val original = EchoEvent("Hello").newReferenceId() eventStore.persist(original) poller.pollOnce() diff --git a/src/test/kotlin/no/iktdev/eventi/tasks/TaskPollerImplementationTest.kt b/src/test/kotlin/no/iktdev/eventi/tasks/TaskPollerImplementationTest.kt index bfcbbd8..fb62b46 100644 --- a/src/test/kotlin/no/iktdev/eventi/tasks/TaskPollerImplementationTest.kt +++ b/src/test/kotlin/no/iktdev/eventi/tasks/TaskPollerImplementationTest.kt @@ -114,7 +114,7 @@ class TaskPollerImplementationTest : TestBase() { val listener = EchoListener() val poller = object : TaskPollerImplementation(taskStore, reporterFactory) {} - val task = EchoTask("Hello").newReferenceId().derivedOf(object : Event() {}) + val task = EchoTask("Hello").newReferenceId().derivedOf(object : Event() {}.apply { newReferenceId() }) taskStore.persist(task) poller.pollOnce()