Skip to content

Commit ecd11fe

Browse files
jeastham1993claude
andcommitted
fix: unwrap CloudEvent envelope in ServiceBusStickerClaimedWorker
WithServiceBusTestCommands sends structured CloudEvents with ContentType application/cloudevents+json, but the worker was deserializing the raw body directly to StickerClaimedEventV1, missing the nested data field and producing empty AccountId/StickerId values that dead-lettered. Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
1 parent 19f3eff commit ecd11fe

1 file changed

Lines changed: 12 additions & 1 deletion

File tree

user-management/src/Stickerlandia.UserManagement.Azure/ServiceBusStickerClaimedWorker.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,18 @@ private async Task ProcessMessageAsync(ProcessMessageEventArgs args)
5555
var messageBody = args.Message.Body.ToString();
5656
Log.ReceivedMessage(_logger, "ServiceBus");
5757

58-
var evtData = JsonSerializer.Deserialize<StickerClaimedEventV1>(messageBody);
58+
StickerClaimedEventV1? evtData;
59+
if (string.Equals(args.Message.ContentType, "application/cloudevents+json", StringComparison.OrdinalIgnoreCase))
60+
{
61+
using var document = JsonDocument.Parse(messageBody);
62+
evtData = document.RootElement.TryGetProperty("data", out var dataElement)
63+
? JsonSerializer.Deserialize<StickerClaimedEventV1>(dataElement.GetRawText())
64+
: null;
65+
}
66+
else
67+
{
68+
evtData = JsonSerializer.Deserialize<StickerClaimedEventV1>(messageBody);
69+
}
5970

6071
if (evtData == null) await args.DeadLetterMessageAsync(args.Message, "Message body cannot be deserialized");
6172

0 commit comments

Comments
 (0)