diff --git a/.changeset/shy-colts-float.md b/.changeset/shy-colts-float.md new file mode 100644 index 00000000000..2cc803a4b15 --- /dev/null +++ b/.changeset/shy-colts-float.md @@ -0,0 +1,5 @@ +--- +"@smithy/core": patch +--- + +continue looking for event headers after event payload is found diff --git a/packages/core/src/submodules/event-streams/EventStreamSerde.spec.ts b/packages/core/src/submodules/event-streams/EventStreamSerde.spec.ts index 2f532b3b71b..aedb0002d65 100644 --- a/packages/core/src/submodules/event-streams/EventStreamSerde.spec.ts +++ b/packages/core/src/submodules/event-streams/EventStreamSerde.spec.ts @@ -79,8 +79,9 @@ describe(EventStreamSerde.name, () => { "ns", "CustomHeaders", 0, - ["header1", "header2", "header-date", "header-number", "header-boolean", "header-blob"], + ["payload", "header1", "header2", "header-date", "header-number", "header-boolean", "header-blob"], [ + [0, "ns", "BlobPayload", { eventPayload: 1 }, 21 satisfies BlobSchema] satisfies StaticSimpleSchema, [0, "ns", "EventHeader", { eventHeader: 1 }, 0 satisfies StringSchema] satisfies StaticSimpleSchema, [0, "ns", "EventHeader", { eventHeader: 1 }, 0 satisfies StringSchema] satisfies StaticSimpleSchema, @@ -125,6 +126,7 @@ describe(EventStreamSerde.name, () => { yield { TextPayload: { payload: "beep boop" } }; yield { CustomHeaders: { + payload: new Uint8Array([0, 1, 2, 3]), header1: "h1", header2: "h2", "header-date": new Date(0), @@ -189,7 +191,7 @@ describe(EventStreamSerde.name, () => { headers: { ":event-type": { type: "string", value: "CustomHeaders" }, ":message-type": { type: "string", value: "event" }, - ":content-type": { type: "string", value: "application/cbor" }, + ":content-type": { type: "string", value: "application/octet-stream" }, header1: { type: "string", value: "h1" }, header2: { type: "string", value: "h2" }, "header-boolean": { @@ -209,7 +211,7 @@ describe(EventStreamSerde.name, () => { value: new Uint8Array([0, 1, 2, 3]), }, }, - body: {}, + body: new Uint8Array([0, 1, 2, 3]), }, ]; @@ -346,6 +348,7 @@ describe(EventStreamSerde.name, () => { yield { TextPayload: { payload: "boop beep" } }; yield { CustomHeaders: { + payload: new Uint8Array([0, 1, 2, 3]), header1: "h1", header2: "h2", "header-date": new Date(0), @@ -400,6 +403,7 @@ describe(EventStreamSerde.name, () => { { TextPayload: { payload: "boop beep" } }, { CustomHeaders: { + payload: new Uint8Array([0, 1, 2, 3]), header1: "h1", header2: "h2", "header-boolean": false, @@ -447,6 +451,7 @@ describe(EventStreamSerde.name, () => { { TextPayload: { payload: "boop beep" } }, { CustomHeaders: { + payload: new Uint8Array([0, 1, 2, 3]), header1: "h1", header2: "h2", "header-boolean": false, diff --git a/packages/core/src/submodules/event-streams/EventStreamSerde.ts b/packages/core/src/submodules/event-streams/EventStreamSerde.ts index b95c6544227..3ca9a19214e 100644 --- a/packages/core/src/submodules/event-streams/EventStreamSerde.ts +++ b/packages/core/src/submodules/event-streams/EventStreamSerde.ts @@ -297,7 +297,6 @@ export class EventStreamSerde { if (eventPayload) { explicitPayloadMember = memberName; - break; } else if (eventHeader) { const value = event[unionMember][memberName]; let type = "binary" as MessageHeaderValue["type"];