Skip to content

Add fauxqs AWS engine #1684

Add fauxqs AWS engine

Add fauxqs AWS engine #1684

Triggered via pull request February 21, 2026 18:52
@kibertoadkibertoad
synchronize #400
feat/fauxsq
Status Failure
Total duration 1m 52s
Artifacts

ci.yml

on: pull_request
Get changed packages
3s
Get changed packages
Matrix: aws-packages
Matrix: general
automerge
automerge
Fit to window
Zoom out
Zoom in

Annotations

40 errors and 10 notices
test/consumers/SnsSqsPermissionConsumer.startupResourcePolling.spec.ts > SnsSqsPermissionConsumer - startupResourcePollingConfig > when subscriptionArn is not provided (subscription creation mode) > throws StartupResourcePollingTimeoutError when topic never appears: packages/sns/test/consumers/SnsSqsPermissionConsumer.startupResourcePolling.spec.ts#L686
AssertionError: promise resolved "undefined" instead of rejecting - Expected: Error { "message": "rejected promise", } + Received: undefined ❯ test/consumers/SnsSqsPermissionConsumer.startupResourcePolling.spec.ts:686:35
test/consumers/SnsSqsPermissionConsumer.startupResourcePolling.spec.ts > SnsSqsPermissionConsumer - startupResourcePollingConfig > when nonBlocking mode is enabled > invokes onResourcesError callback when background topic polling times out: packages/sns/test/consumers/SnsSqsPermissionConsumer.startupResourcePolling.spec.ts#L537
AssertionError: expected false to be true // Object.is equality - Expected + Received - true + false ❯ vi.waitFor.timeout test/consumers/SnsSqsPermissionConsumer.startupResourcePolling.spec.ts:537:40
test/consumers/SnsSqsPermissionConsumer.startupResourcePolling.spec.ts > SnsSqsPermissionConsumer - startupResourcePollingConfig > when nonBlocking mode is enabled > invokes onResourcesError callback when background queue polling times out: packages/sns/test/consumers/SnsSqsPermissionConsumer.startupResourcePolling.spec.ts#L484
AssertionError: expected false to be true // Object.is equality - Expected + Received - true + false ❯ vi.waitFor.timeout test/consumers/SnsSqsPermissionConsumer.startupResourcePolling.spec.ts:484:40
test/consumers/SnsSqsPermissionConsumer.startupResourcePolling.spec.ts > SnsSqsPermissionConsumer - startupResourcePollingConfig > when startupResourcePolling is enabled > throws StartupResourcePollingTimeoutError when timeout is reached: packages/sns/test/consumers/SnsSqsPermissionConsumer.startupResourcePolling.spec.ts#L187
AssertionError: promise resolved "undefined" instead of rejecting - Expected: Error { "message": "rejected promise", } + Received: undefined ❯ test/consumers/SnsSqsPermissionConsumer.startupResourcePolling.spec.ts:187:35
test/consumers/SnsSqsPermissionConsumer.spec.ts > SnsSqsPermissionConsumer > init > tags update > updates existing queue and topic tags when update is forced: packages/sns/lib/utils/snsUtils.ts#L108
InternalError: some-topic - Invalid parameter: Tags Reason: Topic already exists with different tags ❯ assertTopic lib/utils/snsUtils.ts:108:13 ❯ test/consumers/SnsSqsPermissionConsumer.spec.ts:316:21 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { errorCode: 'SNS_TOPIC_ALREADY_EXISTS_WITH_DIFFERENT_TAGS', details: { topicName: 'some-topic', currentTags: '{"$metadata":{"httpStatusCode":200,"requestId":"4623032B489E443F","extendedRequestId":"fauxqs","attempts":1,"totalRetryDelay":0},"Tags":[]}', newTags: '[{"Key":"project","Value":"sns-project"},{"Key":"service","Value":"sns-service"},{"Key":"leftover","Value":"sns-leftover"}]' } } Caused by: Caused by: InvalidParameterException: Invalid parameter: Tags Reason: Topic already exists with different tags ❯ AwsQueryProtocol.handleError ../../node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js:1345:27 ❯ AwsQueryProtocol.deserializeResponse ../../node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js:1310:13 ❯ ../../node_modules/@smithy/core/dist-cjs/submodules/schema/index.js:26:24 ❯ ../../node_modules/@smithy/core/dist-cjs/index.js:121:20 ❯ ../../node_modules/@smithy/middleware-retry/dist-cjs/index.js:254:46 ❯ ../../node_modules/@aws-sdk/middleware-logger/dist-cjs/index.js:5:26 ❯ assertTopic lib/utils/snsUtils.ts:88:22 ❯ test/consumers/SnsSqsPermissionConsumer.spec.ts:316:21 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { '$fault': 'client', '$response': { statusCode: 400, reason: 'Bad Request', headers: { 'content-type': 'text/xml', 'x-amz-request-id': '3611C4DF7FF24EC4', 'x-amz-id-2': 'fauxqs', 'content-length': '318', date: 'Sat, 21 Feb 2026 18:53:39 GMT', connection: 'keep-alive', 'keep-alive': 'timeout=72' }, body: { _events: { close: undefined, error: 'Function<anonymous>', data: undefined, end: 'Function<responseOnEnd>', readable: undefined }, _readableState: { highWaterMark: 65536, buffer: [], bufferIndex: +0, length: +0, pipes: [], awaitDrainWriters: null, constructor: 'Function<ReadableState>', objectMode: false, ended: true, endEmitted: true, reading: false, constructed: true, sync: true, needReadable: false, emittedReadable: false, readableListening: false, resumeScheduled: false, errorEmitted: false, emitClose: true, autoDestroy: true, destroyed: true, closed: true, closeEmitted: true, multiAwaitDrain: false, readingMore: true, dataEmitted: true, errored: null, defaultEncoding: 'utf8', decoder: null, encoding: null, flowing: false, pipesCount: +0, paused: true }, _maxListeners: undefined, socket: null, httpVersionMajor: 1, httpVersionMinor: 1, httpVersion: '1.1', complete: true, rawHeaders: [ 'content-type', 'text/xml', 'x-amz-request-id', '3611C4DF7FF24EC4', 'x-amz-id-2', 'fauxqs', 'content-length', '318', 'Date', 'Sat, 21 Feb 2026 18:53:39 GMT', 'Connection', 'keep-alive', 'Keep-Alive', 'timeout=72' ], rawTrailers: [], joinDuplicateHeaders: undefined, aborted: false, upgrade: false, url: '', method: null, statusCode: 400, statusMessage: 'Bad Request', client: { connecting: false, _hadError: false, _parent: null, _host: 'localhost', _closeAfterHandlingError: false, _events: { close: 'Function<onClose>', error: 'Function<bound onceWrapper>', prefinish: undefined, finish: undefined, drain: undefined, data: undefined, end: 'Function<onReadableStreamEnd>', readable: undefined, connect: undefined, free: 'Function<onFree>', timeout: 'Function<onTimeout>', agentRemove: 'Function<onRemove>' }, _readableState: { highWaterMark: 65536, buffer: [], bufferIndex: +0, length: +0, pipes: [], awaitDrainWriters: null, constructor: 'Function<ReadableState>', objectMode: false, ended: false, endEmitted: false, reading: true, constructed: true, sync: false, needReadable: true, emittedReadable: false, readableListening: false, resumeScheduled: false, errorEmitted: false, emitClose: false, autoDestroy: true, destroyed: false, closed: false, closeEmitted: false, multiAwaitDrain: false, readingMore: false,
test/consumers/SnsSqsPermissionConsumer.spec.ts > SnsSqsPermissionConsumer > init > tags update > should throw error if tags are different and force tag update is not true: packages/sns/lib/utils/snsUtils.ts#L108
InternalError: some-topic - Invalid parameter: Tags Reason: Topic already exists with different tags ❯ assertTopic lib/utils/snsUtils.ts:108:13 ❯ test/consumers/SnsSqsPermissionConsumer.spec.ts:285:21 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { errorCode: 'SNS_TOPIC_ALREADY_EXISTS_WITH_DIFFERENT_TAGS', details: { topicName: 'some-topic', currentTags: '{"$metadata":{"httpStatusCode":200,"requestId":"62C94139C8D74654","extendedRequestId":"fauxqs","attempts":1,"totalRetryDelay":0},"Tags":[]}', newTags: '[{"Key":"project","Value":"some-project"},{"Key":"service","Value":"some-service"},{"Key":"leftover","Value":"some-leftover"}]' } } Caused by: Caused by: InvalidParameterException: Invalid parameter: Tags Reason: Topic already exists with different tags ❯ AwsQueryProtocol.handleError ../../node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js:1345:27 ❯ AwsQueryProtocol.deserializeResponse ../../node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js:1310:13 ❯ ../../node_modules/@smithy/core/dist-cjs/submodules/schema/index.js:26:24 ❯ ../../node_modules/@smithy/core/dist-cjs/index.js:121:20 ❯ ../../node_modules/@smithy/middleware-retry/dist-cjs/index.js:254:46 ❯ ../../node_modules/@aws-sdk/middleware-logger/dist-cjs/index.js:5:26 ❯ assertTopic lib/utils/snsUtils.ts:88:22 ❯ test/consumers/SnsSqsPermissionConsumer.spec.ts:285:21 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { '$fault': 'client', '$response': { statusCode: 400, reason: 'Bad Request', headers: { 'content-type': 'text/xml', 'x-amz-request-id': 'C2D96C29CED64B45', 'x-amz-id-2': 'fauxqs', 'content-length': '318', date: 'Sat, 21 Feb 2026 18:53:39 GMT', connection: 'keep-alive', 'keep-alive': 'timeout=72' }, body: { _events: { close: undefined, error: 'Function<anonymous>', data: undefined, end: 'Function<responseOnEnd>', readable: undefined }, _readableState: { highWaterMark: 65536, buffer: [], bufferIndex: +0, length: +0, pipes: [], awaitDrainWriters: null, constructor: 'Function<ReadableState>', objectMode: false, ended: true, endEmitted: true, reading: false, constructed: true, sync: true, needReadable: false, emittedReadable: false, readableListening: false, resumeScheduled: false, errorEmitted: false, emitClose: true, autoDestroy: true, destroyed: true, closed: true, closeEmitted: true, multiAwaitDrain: false, readingMore: true, dataEmitted: true, errored: null, defaultEncoding: 'utf8', decoder: null, encoding: null, flowing: false, pipesCount: +0, paused: true }, _maxListeners: undefined, socket: null, httpVersionMajor: 1, httpVersionMinor: 1, httpVersion: '1.1', complete: true, rawHeaders: [ 'content-type', 'text/xml', 'x-amz-request-id', 'C2D96C29CED64B45', 'x-amz-id-2', 'fauxqs', 'content-length', '318', 'Date', 'Sat, 21 Feb 2026 18:53:39 GMT', 'Connection', 'keep-alive', 'Keep-Alive', 'timeout=72' ], rawTrailers: [], joinDuplicateHeaders: undefined, aborted: false, upgrade: false, url: '', method: null, statusCode: 400, statusMessage: 'Bad Request', client: { connecting: false, _hadError: false, _parent: null, _host: 'localhost', _closeAfterHandlingError: false, _events: { close: 'Function<onClose>', error: 'Function<bound onceWrapper>', prefinish: undefined, finish: undefined, drain: undefined, data: undefined, end: 'Function<onReadableStreamEnd>', readable: undefined, connect: undefined, free: 'Function<onFree>', timeout: 'Function<onTimeout>', agentRemove: 'Function<onRemove>' }, _readableState: { highWaterMark: 65536, buffer: [], bufferIndex: +0, length: +0, pipes: [], awaitDrainWriters: null, constructor: 'Function<ReadableState>', objectMode: false, ended: false, endEmitted: false, reading: true, constructed: true, sync: false, needReadable: true, emittedReadable: false, readableListening: false, resumeScheduled: false, errorEmitted: false, emitClose: false, autoDestroy: true, destroyed: false, closed: false, closeEmitted: false, multiAwaitDrain: false, readingMore: fals
test/consumers/SnsSqsPermissionConsumer.spec.ts > SnsSqsPermissionConsumer > init > tags update > updates existing topic tags when update is forced: packages/sns/lib/utils/snsUtils.ts#L108
InternalError: some-topic - Invalid parameter: Tags Reason: Topic already exists with different tags ❯ assertTopic lib/utils/snsUtils.ts:108:13 ❯ test/consumers/SnsSqsPermissionConsumer.spec.ts:247:21 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { errorCode: 'SNS_TOPIC_ALREADY_EXISTS_WITH_DIFFERENT_TAGS', details: { topicName: 'some-topic', currentTags: '{"$metadata":{"httpStatusCode":200,"requestId":"ACE6794DAA9E4F33","extendedRequestId":"fauxqs","attempts":1,"totalRetryDelay":0},"Tags":[]}', newTags: '[{"Key":"project","Value":"some-project"},{"Key":"service","Value":"some-service"},{"Key":"leftover","Value":"some-leftover"}]' } } Caused by: Caused by: InvalidParameterException: Invalid parameter: Tags Reason: Topic already exists with different tags ❯ AwsQueryProtocol.handleError ../../node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js:1345:27 ❯ AwsQueryProtocol.deserializeResponse ../../node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js:1310:13 ❯ ../../node_modules/@smithy/core/dist-cjs/submodules/schema/index.js:26:24 ❯ ../../node_modules/@smithy/core/dist-cjs/index.js:121:20 ❯ ../../node_modules/@smithy/middleware-retry/dist-cjs/index.js:254:46 ❯ ../../node_modules/@aws-sdk/middleware-logger/dist-cjs/index.js:5:26 ❯ assertTopic lib/utils/snsUtils.ts:88:22 ❯ test/consumers/SnsSqsPermissionConsumer.spec.ts:247:21 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { '$fault': 'client', '$response': { statusCode: 400, reason: 'Bad Request', headers: { 'content-type': 'text/xml', 'x-amz-request-id': 'A9540A86EE3B4EF0', 'x-amz-id-2': 'fauxqs', 'content-length': '318', date: 'Sat, 21 Feb 2026 18:53:39 GMT', connection: 'keep-alive', 'keep-alive': 'timeout=72' }, body: { _events: { close: undefined, error: 'Function<anonymous>', data: undefined, end: 'Function<responseOnEnd>', readable: undefined }, _readableState: { highWaterMark: 65536, buffer: [], bufferIndex: +0, length: +0, pipes: [], awaitDrainWriters: null, constructor: 'Function<ReadableState>', objectMode: false, ended: true, endEmitted: true, reading: false, constructed: true, sync: true, needReadable: false, emittedReadable: false, readableListening: false, resumeScheduled: false, errorEmitted: false, emitClose: true, autoDestroy: true, destroyed: true, closed: true, closeEmitted: true, multiAwaitDrain: false, readingMore: true, dataEmitted: true, errored: null, defaultEncoding: 'utf8', decoder: null, encoding: null, flowing: false, pipesCount: +0, paused: true }, _maxListeners: undefined, socket: null, httpVersionMajor: 1, httpVersionMinor: 1, httpVersion: '1.1', complete: true, rawHeaders: [ 'content-type', 'text/xml', 'x-amz-request-id', 'A9540A86EE3B4EF0', 'x-amz-id-2', 'fauxqs', 'content-length', '318', 'Date', 'Sat, 21 Feb 2026 18:53:39 GMT', 'Connection', 'keep-alive', 'Keep-Alive', 'timeout=72' ], rawTrailers: [], joinDuplicateHeaders: undefined, aborted: false, upgrade: false, url: '', method: null, statusCode: 400, statusMessage: 'Bad Request', client: { connecting: false, _hadError: false, _parent: null, _host: 'localhost', _closeAfterHandlingError: false, _events: { close: 'Function<onClose>', error: 'Function<bound onceWrapper>', prefinish: undefined, finish: undefined, drain: undefined, data: undefined, end: 'Function<onReadableStreamEnd>', readable: undefined, connect: undefined, free: 'Function<onFree>', timeout: 'Function<onTimeout>', agentRemove: 'Function<onRemove>' }, _readableState: { highWaterMark: 65536, buffer: [], bufferIndex: +0, length: +0, pipes: [], awaitDrainWriters: null, constructor: 'Function<ReadableState>', objectMode: false, ended: false, endEmitted: false, reading: true, constructed: true, sync: false, needReadable: true, emittedReadable: false, readableListening: false, resumeScheduled: false, errorEmitted: false, emitClose: false, autoDestroy: true, destroyed: false, closed: false, closeEmitted: false, multiAwaitDrain: false, readingMore: fals
aws-packages (22.x, @message-queue-toolkit/sns, fauxqs) / build
The strategy configuration was canceled because "aws-packages._24_x__message-queue-to_3" failed
test/consumers/SnsSqsPermissionConsumer.startupResourcePolling.spec.ts > SnsSqsPermissionConsumer - startupResourcePollingConfig > when subscriptionArn is not provided (subscription creation mode) > throws StartupResourcePollingTimeoutError when topic never appears: packages/sns/test/consumers/SnsSqsPermissionConsumer.startupResourcePolling.spec.ts#L686
AssertionError: promise resolved "undefined" instead of rejecting - Expected: Error { "message": "rejected promise", } + Received: undefined ❯ test/consumers/SnsSqsPermissionConsumer.startupResourcePolling.spec.ts:686:35
test/consumers/SnsSqsPermissionConsumer.startupResourcePolling.spec.ts > SnsSqsPermissionConsumer - startupResourcePollingConfig > when nonBlocking mode is enabled > invokes onResourcesError callback when background topic polling times out: packages/sns/test/consumers/SnsSqsPermissionConsumer.startupResourcePolling.spec.ts#L537
AssertionError: expected false to be true // Object.is equality - Expected + Received - true + false ❯ vi.waitFor.timeout test/consumers/SnsSqsPermissionConsumer.startupResourcePolling.spec.ts:537:40
test/consumers/SnsSqsPermissionConsumer.startupResourcePolling.spec.ts > SnsSqsPermissionConsumer - startupResourcePollingConfig > when nonBlocking mode is enabled > invokes onResourcesError callback when background queue polling times out: packages/sns/test/consumers/SnsSqsPermissionConsumer.startupResourcePolling.spec.ts#L484
AssertionError: expected false to be true // Object.is equality - Expected + Received - true + false ❯ vi.waitFor.timeout test/consumers/SnsSqsPermissionConsumer.startupResourcePolling.spec.ts:484:40
test/consumers/SnsSqsPermissionConsumer.startupResourcePolling.spec.ts > SnsSqsPermissionConsumer - startupResourcePollingConfig > when startupResourcePolling is enabled > throws StartupResourcePollingTimeoutError when timeout is reached: packages/sns/test/consumers/SnsSqsPermissionConsumer.startupResourcePolling.spec.ts#L187
AssertionError: promise resolved "undefined" instead of rejecting - Expected: Error { "message": "rejected promise", } + Received: undefined ❯ test/consumers/SnsSqsPermissionConsumer.startupResourcePolling.spec.ts:187:35
test/consumers/SnsSqsPermissionConsumer.spec.ts > SnsSqsPermissionConsumer > init > tags update > updates existing queue and topic tags when update is forced: packages/sns/lib/utils/snsUtils.ts#L108
InternalError: some-topic - Invalid parameter: Tags Reason: Topic already exists with different tags ❯ assertTopic lib/utils/snsUtils.ts:108:13 ❯ test/consumers/SnsSqsPermissionConsumer.spec.ts:316:21 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { errorCode: 'SNS_TOPIC_ALREADY_EXISTS_WITH_DIFFERENT_TAGS', details: { topicName: 'some-topic', currentTags: '{"$metadata":{"httpStatusCode":200,"requestId":"0BC4442A6A4B47F7","extendedRequestId":"fauxqs","attempts":1,"totalRetryDelay":0},"Tags":[]}', newTags: '[{"Key":"project","Value":"sns-project"},{"Key":"service","Value":"sns-service"},{"Key":"leftover","Value":"sns-leftover"}]' } } Caused by: Caused by: InvalidParameterException: Invalid parameter: Tags Reason: Topic already exists with different tags ❯ AwsQueryProtocol.handleError ../../node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js:1345:27 ❯ AwsQueryProtocol.deserializeResponse ../../node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js:1310:13 ❯ ../../node_modules/@smithy/core/dist-cjs/submodules/schema/index.js:26:24 ❯ ../../node_modules/@smithy/core/dist-cjs/index.js:121:20 ❯ ../../node_modules/@smithy/middleware-retry/dist-cjs/index.js:254:46 ❯ ../../node_modules/@aws-sdk/middleware-logger/dist-cjs/index.js:5:26 ❯ assertTopic lib/utils/snsUtils.ts:88:22 ❯ test/consumers/SnsSqsPermissionConsumer.spec.ts:316:21 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { '$fault': 'client', '$response': { statusCode: 400, reason: 'Bad Request', headers: { 'content-type': 'text/xml', 'x-amz-request-id': 'B26AF405B6594104', 'x-amz-id-2': 'fauxqs', 'content-length': '318', date: 'Sat, 21 Feb 2026 18:53:42 GMT', connection: 'keep-alive', 'keep-alive': 'timeout=72' }, body: { _events: { close: undefined, error: 'Function<anonymous>', data: undefined, end: 'Function<responseOnEnd>', readable: undefined }, _readableState: { highWaterMark: 65536, buffer: [], bufferIndex: +0, length: +0, pipes: [], awaitDrainWriters: null, constructor: 'Function<ReadableState>', objectMode: false, ended: true, endEmitted: true, reading: false, constructed: true, sync: true, needReadable: false, emittedReadable: false, readableListening: false, resumeScheduled: false, errorEmitted: false, emitClose: true, autoDestroy: true, destroyed: true, closed: true, closeEmitted: true, multiAwaitDrain: false, readingMore: true, dataEmitted: true, errored: null, defaultEncoding: 'utf8', decoder: null, encoding: null, flowing: false, pipesCount: +0, paused: true }, _maxListeners: undefined, socket: null, httpVersionMajor: 1, httpVersionMinor: 1, httpVersion: '1.1', complete: true, rawHeaders: [ 'content-type', 'text/xml', 'x-amz-request-id', 'B26AF405B6594104', 'x-amz-id-2', 'fauxqs', 'content-length', '318', 'Date', 'Sat, 21 Feb 2026 18:53:42 GMT', 'Connection', 'keep-alive', 'Keep-Alive', 'timeout=72' ], rawTrailers: [], joinDuplicateHeaders: undefined, aborted: false, upgrade: false, url: '', method: null, statusCode: 400, statusMessage: 'Bad Request', client: { connecting: false, _hadError: false, _parent: null, _host: 'localhost', _closeAfterHandlingError: false, _events: { close: 'Function<onClose>', error: 'Function<bound onceWrapper>', prefinish: undefined, finish: undefined, drain: undefined, data: undefined, end: 'Function<onReadableStreamEnd>', readable: undefined, connect: undefined, free: 'Function<onFree>', timeout: 'Function<onTimeout>', agentRemove: 'Function<onRemove>' }, _readableState: { highWaterMark: 65536, buffer: [], bufferIndex: +0, length: +0, pipes: [], awaitDrainWriters: null, constructor: 'Function<ReadableState>', objectMode: false, ended: false, endEmitted: false, reading: true, constructed: true, sync: false, needReadable: true, emittedReadable: false, readableListening: false, resumeScheduled: false, errorEmitted: false, emitClose: false, autoDestroy: true, destroyed: false, closed: false, closeEmitted: false, multiAwaitDrain: false, readingMore: false,
test/consumers/SnsSqsPermissionConsumer.spec.ts > SnsSqsPermissionConsumer > init > tags update > should throw error if tags are different and force tag update is not true: packages/sns/lib/utils/snsUtils.ts#L108
InternalError: some-topic - Invalid parameter: Tags Reason: Topic already exists with different tags ❯ assertTopic lib/utils/snsUtils.ts:108:13 ❯ test/consumers/SnsSqsPermissionConsumer.spec.ts:285:21 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { errorCode: 'SNS_TOPIC_ALREADY_EXISTS_WITH_DIFFERENT_TAGS', details: { topicName: 'some-topic', currentTags: '{"$metadata":{"httpStatusCode":200,"requestId":"95BBB8EFEC114166","extendedRequestId":"fauxqs","attempts":1,"totalRetryDelay":0},"Tags":[]}', newTags: '[{"Key":"project","Value":"some-project"},{"Key":"service","Value":"some-service"},{"Key":"leftover","Value":"some-leftover"}]' } } Caused by: Caused by: InvalidParameterException: Invalid parameter: Tags Reason: Topic already exists with different tags ❯ AwsQueryProtocol.handleError ../../node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js:1345:27 ❯ AwsQueryProtocol.deserializeResponse ../../node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js:1310:13 ❯ ../../node_modules/@smithy/core/dist-cjs/submodules/schema/index.js:26:24 ❯ ../../node_modules/@smithy/core/dist-cjs/index.js:121:20 ❯ ../../node_modules/@smithy/middleware-retry/dist-cjs/index.js:254:46 ❯ ../../node_modules/@aws-sdk/middleware-logger/dist-cjs/index.js:5:26 ❯ assertTopic lib/utils/snsUtils.ts:88:22 ❯ test/consumers/SnsSqsPermissionConsumer.spec.ts:285:21 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { '$fault': 'client', '$response': { statusCode: 400, reason: 'Bad Request', headers: { 'content-type': 'text/xml', 'x-amz-request-id': 'A7B20936E4CE4376', 'x-amz-id-2': 'fauxqs', 'content-length': '318', date: 'Sat, 21 Feb 2026 18:53:42 GMT', connection: 'keep-alive', 'keep-alive': 'timeout=72' }, body: { _events: { close: undefined, error: 'Function<anonymous>', data: undefined, end: 'Function<responseOnEnd>', readable: undefined }, _readableState: { highWaterMark: 65536, buffer: [], bufferIndex: +0, length: +0, pipes: [], awaitDrainWriters: null, constructor: 'Function<ReadableState>', objectMode: false, ended: true, endEmitted: true, reading: false, constructed: true, sync: true, needReadable: false, emittedReadable: false, readableListening: false, resumeScheduled: false, errorEmitted: false, emitClose: true, autoDestroy: true, destroyed: true, closed: true, closeEmitted: true, multiAwaitDrain: false, readingMore: true, dataEmitted: true, errored: null, defaultEncoding: 'utf8', decoder: null, encoding: null, flowing: false, pipesCount: +0, paused: true }, _maxListeners: undefined, socket: null, httpVersionMajor: 1, httpVersionMinor: 1, httpVersion: '1.1', complete: true, rawHeaders: [ 'content-type', 'text/xml', 'x-amz-request-id', 'A7B20936E4CE4376', 'x-amz-id-2', 'fauxqs', 'content-length', '318', 'Date', 'Sat, 21 Feb 2026 18:53:42 GMT', 'Connection', 'keep-alive', 'Keep-Alive', 'timeout=72' ], rawTrailers: [], joinDuplicateHeaders: undefined, aborted: false, upgrade: false, url: '', method: null, statusCode: 400, statusMessage: 'Bad Request', client: { connecting: false, _hadError: false, _parent: null, _host: 'localhost', _closeAfterHandlingError: false, _events: { close: 'Function<onClose>', error: 'Function<bound onceWrapper>', prefinish: undefined, finish: undefined, drain: undefined, data: undefined, end: 'Function<onReadableStreamEnd>', readable: undefined, connect: undefined, free: 'Function<onFree>', timeout: 'Function<onTimeout>', agentRemove: 'Function<onRemove>' }, _readableState: { highWaterMark: 65536, buffer: [], bufferIndex: +0, length: +0, pipes: [], awaitDrainWriters: null, constructor: 'Function<ReadableState>', objectMode: false, ended: false, endEmitted: false, reading: true, constructed: true, sync: false, needReadable: true, emittedReadable: false, readableListening: false, resumeScheduled: false, errorEmitted: false, emitClose: false, autoDestroy: true, destroyed: false, closed: false, closeEmitted: false, multiAwaitDrain: false, readingMore: fals
test/consumers/SnsSqsPermissionConsumer.spec.ts > SnsSqsPermissionConsumer > init > tags update > updates existing topic tags when update is forced: packages/sns/lib/utils/snsUtils.ts#L108
InternalError: some-topic - Invalid parameter: Tags Reason: Topic already exists with different tags ❯ assertTopic lib/utils/snsUtils.ts:108:13 ❯ test/consumers/SnsSqsPermissionConsumer.spec.ts:247:21 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { errorCode: 'SNS_TOPIC_ALREADY_EXISTS_WITH_DIFFERENT_TAGS', details: { topicName: 'some-topic', currentTags: '{"$metadata":{"httpStatusCode":200,"requestId":"5A9BC2E62CB2410A","extendedRequestId":"fauxqs","attempts":1,"totalRetryDelay":0},"Tags":[]}', newTags: '[{"Key":"project","Value":"some-project"},{"Key":"service","Value":"some-service"},{"Key":"leftover","Value":"some-leftover"}]' } } Caused by: Caused by: InvalidParameterException: Invalid parameter: Tags Reason: Topic already exists with different tags ❯ AwsQueryProtocol.handleError ../../node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js:1345:27 ❯ AwsQueryProtocol.deserializeResponse ../../node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js:1310:13 ❯ ../../node_modules/@smithy/core/dist-cjs/submodules/schema/index.js:26:24 ❯ ../../node_modules/@smithy/core/dist-cjs/index.js:121:20 ❯ ../../node_modules/@smithy/middleware-retry/dist-cjs/index.js:254:46 ❯ ../../node_modules/@aws-sdk/middleware-logger/dist-cjs/index.js:5:26 ❯ assertTopic lib/utils/snsUtils.ts:88:22 ❯ test/consumers/SnsSqsPermissionConsumer.spec.ts:247:21 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { '$fault': 'client', '$response': { statusCode: 400, reason: 'Bad Request', headers: { 'content-type': 'text/xml', 'x-amz-request-id': '822188BBB0144145', 'x-amz-id-2': 'fauxqs', 'content-length': '318', date: 'Sat, 21 Feb 2026 18:53:42 GMT', connection: 'keep-alive', 'keep-alive': 'timeout=72' }, body: { _events: { close: undefined, error: 'Function<anonymous>', data: undefined, end: 'Function<responseOnEnd>', readable: undefined }, _readableState: { highWaterMark: 65536, buffer: [], bufferIndex: +0, length: +0, pipes: [], awaitDrainWriters: null, constructor: 'Function<ReadableState>', objectMode: false, ended: true, endEmitted: true, reading: false, constructed: true, sync: true, needReadable: false, emittedReadable: false, readableListening: false, resumeScheduled: false, errorEmitted: false, emitClose: true, autoDestroy: true, destroyed: true, closed: true, closeEmitted: true, multiAwaitDrain: false, readingMore: true, dataEmitted: true, errored: null, defaultEncoding: 'utf8', decoder: null, encoding: null, flowing: false, pipesCount: +0, paused: true }, _maxListeners: undefined, socket: null, httpVersionMajor: 1, httpVersionMinor: 1, httpVersion: '1.1', complete: true, rawHeaders: [ 'content-type', 'text/xml', 'x-amz-request-id', '822188BBB0144145', 'x-amz-id-2', 'fauxqs', 'content-length', '318', 'Date', 'Sat, 21 Feb 2026 18:53:42 GMT', 'Connection', 'keep-alive', 'Keep-Alive', 'timeout=72' ], rawTrailers: [], joinDuplicateHeaders: undefined, aborted: false, upgrade: false, url: '', method: null, statusCode: 400, statusMessage: 'Bad Request', client: { connecting: false, _hadError: false, _parent: null, _host: 'localhost', _closeAfterHandlingError: false, _events: { close: 'Function<onClose>', error: 'Function<bound onceWrapper>', prefinish: undefined, finish: undefined, drain: undefined, data: undefined, end: 'Function<onReadableStreamEnd>', readable: undefined, connect: undefined, free: 'Function<onFree>', timeout: 'Function<onTimeout>', agentRemove: 'Function<onRemove>' }, _readableState: { highWaterMark: 65536, buffer: [], bufferIndex: +0, length: +0, pipes: [], awaitDrainWriters: null, constructor: 'Function<ReadableState>', objectMode: false, ended: false, endEmitted: false, reading: true, constructed: true, sync: false, needReadable: true, emittedReadable: false, readableListening: false, resumeScheduled: false, errorEmitted: false, emitClose: false, autoDestroy: true, destroyed: false, closed: false, closeEmitted: false, multiAwaitDrain: false, readingMore: fals
aws-packages (22.x, @message-queue-toolkit/sns, fauxqs) / build
@message-queue-toolkit/sns#test:coverage: command (/home/runner/work/message-queue-toolkit/message-queue-toolkit/packages/sns) /opt/hostedtoolcache/node/22.22.0/x64/bin/npm run test:coverage exited (1)
aws-packages (22.x, @message-queue-toolkit/sqs, fauxqs) / build
The strategy configuration was canceled because "aws-packages._24_x__message-queue-to_3" failed
aws-packages (22.x, @message-queue-toolkit/sqs, fauxqs) / build
The operation was canceled.
aws-packages (22.x, @message-queue-toolkit/sqs, localstack) / build
The strategy configuration was canceled because "aws-packages._24_x__message-queue-to_3" failed
aws-packages (22.x, @message-queue-toolkit/sqs, localstack) / build
The operation was canceled.
aws-packages (22.x, @message-queue-toolkit/sns, localstack) / build
The strategy configuration was canceled because "aws-packages._24_x__message-queue-to_3" failed
aws-packages (22.x, @message-queue-toolkit/sns, localstack) / build
The operation was canceled.
aws-packages (24.x, @message-queue-toolkit/sns, localstack) / build
The strategy configuration was canceled because "aws-packages._24_x__message-queue-to_3" failed
aws-packages (24.x, @message-queue-toolkit/sns, localstack) / build
The operation was canceled.
aws-packages (24.x, @message-queue-toolkit/sqs, localstack) / build
The strategy configuration was canceled because "aws-packages._24_x__message-queue-to_3" failed
aws-packages (24.x, @message-queue-toolkit/sqs, localstack) / build
The operation was canceled.
aws-packages (24.x, @message-queue-toolkit/sqs, fauxqs) / build
The strategy configuration was canceled because "aws-packages._24_x__message-queue-to_3" failed
aws-packages (24.x, @message-queue-toolkit/sqs, fauxqs) / build
The operation was canceled.
CI
The strategy configuration was canceled because "aws-packages._24_x__message-queue-to_3" failed
CI
The strategy configuration was canceled because "aws-packages._24_x__message-queue-to_3" failed
CI
The strategy configuration was canceled because "aws-packages._24_x__message-queue-to_3" failed
CI
The strategy configuration was canceled because "aws-packages._24_x__message-queue-to_3" failed
CI
The strategy configuration was canceled because "aws-packages._24_x__message-queue-to_3" failed
CI
The strategy configuration was canceled because "aws-packages._24_x__message-queue-to_3" failed
CI
The strategy configuration was canceled because "aws-packages._24_x__message-queue-to_3" failed
general (24.x, @message-queue-toolkit/s3-payload-store) / build
Running @message-queue-toolkit/s3-payload-store with QUEUE_BACKEND=fauxqs
general (22.x, @message-queue-toolkit/s3-payload-store) / build
Running @message-queue-toolkit/s3-payload-store with QUEUE_BACKEND=fauxqs
aws-packages (24.x, @message-queue-toolkit/sns, fauxqs) / build
Running @message-queue-toolkit/sns with QUEUE_BACKEND=fauxqs
aws-packages (22.x, @message-queue-toolkit/sns, fauxqs) / build
Running @message-queue-toolkit/sns with QUEUE_BACKEND=fauxqs
aws-packages (22.x, @message-queue-toolkit/sqs, fauxqs) / build
Running @message-queue-toolkit/sqs with QUEUE_BACKEND=fauxqs
aws-packages (22.x, @message-queue-toolkit/sqs, localstack) / build
Running @message-queue-toolkit/sqs with QUEUE_BACKEND=localstack
aws-packages (22.x, @message-queue-toolkit/sns, localstack) / build
Running @message-queue-toolkit/sns with QUEUE_BACKEND=localstack
aws-packages (24.x, @message-queue-toolkit/sns, localstack) / build
Running @message-queue-toolkit/sns with QUEUE_BACKEND=localstack
aws-packages (24.x, @message-queue-toolkit/sqs, localstack) / build
Running @message-queue-toolkit/sqs with QUEUE_BACKEND=localstack
aws-packages (24.x, @message-queue-toolkit/sqs, fauxqs) / build
Running @message-queue-toolkit/sqs with QUEUE_BACKEND=fauxqs