elsa-core/test/unit
Sipke Schoorstra d2d3109024
fix(runtime): enforce MemoryTriggerStore logical uniqueness (#8098)
* fix(runtime): enforce MemoryTriggerStore logical uniqueness

MemoryTriggerStore upserted only by Id, so two records with different Ids
but the same (WorkflowDefinitionId, Hash, ActivityId, TenantId) were
accepted in memory and rejected under EF. Mirror EFCoreTriggerStore:
distinct-by-logical-key, skip already-present keys on ReplaceAsync,
reject Save* collisions, and stamp the current tenant when unset.

Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>

* fix(runtime): keep FindAsync first-match and use a structural trigger key

FindAsync must return the first matching trigger. SingleOrDefault threw
when a valid filter (for example WorkflowDefinitionId) matched several
distinct logical keys. Restore FirstOrDefault to match ITriggerStore and
EF. Represent the logical key as a record so fields that contain U+001F
cannot collide.

Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-09-13 02:20:28 -07:00
..
Elsa.Activities.UnitTests Preserve StateMachine composite transition continuations 2026-08-31 04:51:34 +02:00
Elsa.AI.Abstractions.UnitTests Implement Weaver AI Copilot core (#7523) 2026-06-04 11:35:44 +02:00
Elsa.AI.Copilot.UnitTests Use Copilot SDK for Weaver agent loop (#7700) 2026-06-08 00:35:47 +02:00
Elsa.AI.Host.UnitTests Increase AI host test coverage 2026-06-27 04:04:39 +02:00
Elsa.AI.Persistence.EFCore.UnitTests chore: apply safe dependency upgrades (#7896) 2026-07-26 21:42:27 +02:00
Elsa.Api.Common.UnitTests fix(auth): validate wildcard permission patterns and warn on deny-list stripping (#7997) 2026-08-27 11:45:54 +02:00
Elsa.Bpmn.Interchange.UnitTests fix(bpmn): make document PUT If-Match and save a compare-and-swap (#8092) 2026-09-13 01:40:43 -07:00
Elsa.Bpmn.UnitTests feat(bpmn): declare BpmnProcess's Done and Cancelled outcomes as flow ports (#8066) 2026-09-11 23:16:21 -07:00
Elsa.Common.UnitTests refactor: update package reference configuration 2026-08-03 13:15:18 +02:00
Elsa.Dashboard.Api.UnitTests [codex] Extract dashboard contributors into companion modules (#7692) 2026-06-05 14:30:52 +02:00
Elsa.Diagnostics.ConsoleLogs.UnitTests refactor(auth)!: retire the legacy permission constants and duplicate descriptor types (#7987) 2026-08-25 06:04:32 +02:00
Elsa.Diagnostics.OpenTelemetry.UnitTests [codex] Fix console log metadata and type resolution (#7542) 2026-05-30 22:52:01 +02:00
Elsa.Diagnostics.StructuredLogs.Persistence.Relational.UnitTests Fix structured log diagnostics registration 2026-05-17 08:42:23 +02:00
Elsa.Diagnostics.StructuredLogs.UnitTests refactor(auth)!: retire the legacy permission constants and duplicate descriptor types (#7987) 2026-08-25 06:04:32 +02:00
Elsa.Expressions.UnitTests [codex] Harden C# expression host-code execution (#7519) 2026-05-21 00:50:25 +02:00
Elsa.ExternalAuthentication.UnitTests Enforce unique external refresh token hashes (#8095) 2026-09-13 01:10:32 -07:00
Elsa.Features.UnitTests fix(features): support features introduced during Module.Apply() (#7966) 2026-08-20 23:53:07 +02:00
Elsa.Hosting.Management.UnitTests feat: introduce HTTP webhooks module 2026-08-03 02:08:15 +02:00
Elsa.Http.UnitTests Skip HTTP workflow route matching outside base path (#7757) 2026-09-12 18:12:37 -07:00
Elsa.Identity.UnitTests fix(identity): stop returning password hashes and salts from user creation (#8041) 2026-09-08 00:26:47 +02:00
Elsa.Mediator.UnitTests [codex] Fix diagnostics live feed regressions (#7548) 2026-05-31 09:40:02 +02:00
Elsa.Persistence.EFCore.UnitTests fix(efcore-oracle): migrate LOB columns in V3_6 without in-place datatype alteration (#8040) 2026-09-07 02:09:08 -07:00
Elsa.Persistence.VNext.UnitTests feat(secrets)!: scope secrets to tenants (#7991) 2026-08-26 01:56:55 +02:00
Elsa.Platform.Integration.UnitTests Add Platform integration 2026-06-18 18:27:27 +02:00
Elsa.Resilience.Core.UnitTests test(resilience): cover Elsa.Resilience.Core and lift its coverage gate off the Debug/Release seam (#7971) 2026-08-21 03:01:51 +02:00
Elsa.SasTokens.UnitTests [codex] Harden initial security remediation slice (#7495) 2026-05-22 00:45:47 +02:00
Elsa.Scheduling.UnitTests address greptile review feedback (greploop iteration 1) 2026-06-21 19:43:09 +02:00
Elsa.Secrets.UnitTests feat(secrets)!: scope secrets to tenants (#7991) 2026-08-26 01:56:55 +02:00
Elsa.Shells.Api.Tests test: fix two intermittent test failures (#7957) (#7965) 2026-08-20 23:30:38 +02:00
Elsa.Tenants.UnitTests fix: restore request services after tenant middleware exceptions 2026-07-30 09:54:00 +03:00
Elsa.UserTasks.Persistence.ConformanceTests feat(user-tasks)!: migrate endpoints to structured permissions (#7999) 2026-08-27 12:06:52 +02:00
Elsa.UserTasks.Persistence.EFCore.UnitTests feat(user-tasks)!: migrate endpoints to structured permissions (#7999) 2026-08-27 12:06:52 +02:00
Elsa.UserTasks.UnitTests feat(user-tasks)!: migrate endpoints to structured permissions (#7999) 2026-08-27 12:06:52 +02:00
Elsa.Workflows.Api.UnitTests Honor label filters when listing workflow definitions (#8035) 2026-09-05 22:13:16 -07:00
Elsa.Workflows.Core.UnitTests Merge remote-tracking branch 'origin/release/3.8.0' 2026-09-06 00:06:14 +02:00
Elsa.Workflows.Management.UnitTests fix(bpmn): make document PUT If-Match and save a compare-and-swap (#8092) 2026-09-13 01:40:43 -07:00
Elsa.Workflows.Runtime.UnitTests fix(runtime): enforce MemoryTriggerStore logical uniqueness (#8098) 2026-09-13 02:20:28 -07:00
Directory.Build.props Add coverage enforcement for test projects (#6950) 2025-10-07 19:59:53 +02:00