diff --git a/src/Testing/CoreTests/Acceptance/multi_tenancy.cs b/src/Testing/CoreTests/Acceptance/multi_tenancy.cs index ab2d65d0f..7d644d7c6 100644 --- a/src/Testing/CoreTests/Acceptance/multi_tenancy.cs +++ b/src/Testing/CoreTests/Acceptance/multi_tenancy.cs @@ -20,6 +20,8 @@ public async Task InitializeAsync() .UseWolverine(opts => { opts.Services.AddSingleton(theTracker); + + opts.Durability.TenantIdStyle = TenantIdStyle.ForceLowerCase; }) .StartAsync(); } @@ -29,6 +31,15 @@ public async Task DisposeAsync() await _host.StopAsync(); } + [Fact] + public void maybe_corrects_tenant_id_on_set() + { + var context = _host.MessageBus(); + context.TenantId = "WRONG_CASE"; + + context.TenantId.ShouldBe("wrong_case"); + } + [Fact] public async Task invoke_with_tenant() { diff --git a/src/Wolverine/Runtime/MessageBus.cs b/src/Wolverine/Runtime/MessageBus.cs index 236e98a4e..cbd27696a 100644 --- a/src/Wolverine/Runtime/MessageBus.cs +++ b/src/Wolverine/Runtime/MessageBus.cs @@ -1,5 +1,6 @@ using System.Diagnostics; using JasperFx.Core; +using JasperFx.MultiTenancy; using Wolverine.Persistence.Durability; using Wolverine.Runtime.Routing; using Wolverine.Transports; @@ -13,7 +14,8 @@ public static MessageBus Build(IWolverineRuntime runtime, string correlationId) // ReSharper disable once InconsistentNaming protected readonly List _outstanding = new(); - + private string? _tenantId; + public MessageBus(IWolverineRuntime runtime) : this(runtime, Activity.Current?.RootId ?? Guid.NewGuid().ToString()) { } @@ -49,7 +51,11 @@ private void assertNotMediatorOnly() public IEnvelopeTransaction? Transaction { get; protected set; } public Guid ConversationId { get; protected set; } - public string? TenantId { get; set; } + public string? TenantId + { + get => _tenantId; + set => _tenantId = Runtime.Options.Durability.TenantIdStyle.MaybeCorrectTenantId(value); + } public IDestinationEndpoint EndpointFor(string endpointName) { diff --git a/src/Wolverine/Runtime/MessageContext.cs b/src/Wolverine/Runtime/MessageContext.cs index 37536e7a6..82df33cfe 100644 --- a/src/Wolverine/Runtime/MessageContext.cs +++ b/src/Wolverine/Runtime/MessageContext.cs @@ -26,7 +26,7 @@ public MessageContext(IWolverineRuntime runtime) : base(runtime) // Used implicitly in codegen public MessageContext(IWolverineRuntime runtime, string tenantId) : base(runtime) { - TenantId = tenantId; + TenantId = runtime.Options.Durability.TenantIdStyle.MaybeCorrectTenantId(tenantId); } internal IList Scheduled { get; } = new List();