@mbc-cqrs-serverless/core 1.0.26 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/dist/commands/command.event.handler.d.ts +1 -1
  2. package/dist/commands/command.event.handler.js +1 -1
  3. package/dist/commands/command.event.handler.js.map +1 -1
  4. package/dist/commands/command.service.d.ts +0 -10
  5. package/dist/commands/command.service.js +0 -35
  6. package/dist/commands/command.service.js.map +1 -1
  7. package/dist/constants/tenant.d.ts +21 -1
  8. package/dist/constants/tenant.js +28 -2
  9. package/dist/constants/tenant.js.map +1 -1
  10. package/dist/context/user.d.ts +10 -0
  11. package/dist/context/user.js +17 -2
  12. package/dist/context/user.js.map +1 -1
  13. package/dist/guard/roles.guard.d.ts +53 -0
  14. package/dist/guard/roles.guard.js +79 -4
  15. package/dist/guard/roles.guard.js.map +1 -1
  16. package/dist/helpers/index.d.ts +1 -1
  17. package/dist/helpers/index.js +2 -2
  18. package/dist/helpers/index.js.map +1 -1
  19. package/dist/integration/utilities/aws-error-factory.d.ts +141 -0
  20. package/dist/integration/utilities/aws-error-factory.js +392 -0
  21. package/dist/integration/utilities/aws-error-factory.js.map +1 -0
  22. package/dist/integration/utilities/aws-mock-manager.d.ts +136 -0
  23. package/dist/integration/utilities/aws-mock-manager.js +336 -0
  24. package/dist/integration/utilities/aws-mock-manager.js.map +1 -0
  25. package/dist/integration/utilities/index.d.ts +22 -0
  26. package/dist/integration/utilities/index.js +99 -0
  27. package/dist/integration/utilities/index.js.map +1 -0
  28. package/dist/integration/utilities/test-assertions.d.ts +112 -0
  29. package/dist/integration/utilities/test-assertions.js +345 -0
  30. package/dist/integration/utilities/test-assertions.js.map +1 -0
  31. package/dist/integration/utilities/test-data-builders.d.ts +202 -0
  32. package/dist/integration/utilities/test-data-builders.js +320 -0
  33. package/dist/integration/utilities/test-data-builders.js.map +1 -0
  34. package/dist/interfaces/notification.interface.d.ts +13 -0
  35. package/dist/notifications/email.service.js +16 -4
  36. package/dist/notifications/email.service.js.map +1 -1
  37. package/package.json +2 -2
@@ -0,0 +1,336 @@
1
+ "use strict";
2
+ /**
3
+ * AWS Mock Manager
4
+ *
5
+ * Provides standardized setup and teardown for AWS SDK mock clients
6
+ * in integration tests. This eliminates repetitive mock configuration
7
+ * across test files and ensures consistent mock behavior.
8
+ *
9
+ * Usage:
10
+ * import { AWSMockManager, createDynamoDBMock } from './utilities/aws-mock-manager'
11
+ *
12
+ * // Option 1: Use individual mock creators
13
+ * const { mock, client, reset, restore } = createDynamoDBMock()
14
+ *
15
+ * // Option 2: Use the manager for multiple services
16
+ * const manager = new AWSMockManager()
17
+ * const dynamoDB = manager.getDynamoDB()
18
+ * const s3 = manager.getS3()
19
+ *
20
+ * beforeEach(() => manager.resetAll())
21
+ * afterAll(() => manager.restoreAll())
22
+ */
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.AWSMockManager = void 0;
25
+ exports.createDynamoDBMock = createDynamoDBMock;
26
+ exports.createS3Mock = createS3Mock;
27
+ exports.createSQSMock = createSQSMock;
28
+ exports.createSNSMock = createSNSMock;
29
+ exports.createSFNMock = createSFNMock;
30
+ exports.createSESMock = createSESMock;
31
+ exports.setupAWSMocks = setupAWSMocks;
32
+ exports.createTestMocks = createTestMocks;
33
+ const client_dynamodb_1 = require("@aws-sdk/client-dynamodb");
34
+ const client_s3_1 = require("@aws-sdk/client-s3");
35
+ const client_sesv2_1 = require("@aws-sdk/client-sesv2");
36
+ const client_sfn_1 = require("@aws-sdk/client-sfn");
37
+ const client_sns_1 = require("@aws-sdk/client-sns");
38
+ const client_sqs_1 = require("@aws-sdk/client-sqs");
39
+ const aws_sdk_client_mock_1 = require("aws-sdk-client-mock");
40
+ /**
41
+ * Default AWS region for test clients
42
+ */
43
+ const DEFAULT_REGION = 'ap-northeast-1';
44
+ // ============================================================================
45
+ // Individual Mock Creators
46
+ // ============================================================================
47
+ /**
48
+ * Creates a mocked DynamoDB client
49
+ */
50
+ function createDynamoDBMock(options = {}) {
51
+ const mock = (0, aws_sdk_client_mock_1.mockClient)(client_dynamodb_1.DynamoDBClient);
52
+ const client = new client_dynamodb_1.DynamoDBClient({
53
+ region: options.region || DEFAULT_REGION,
54
+ maxAttempts: options.maxAttempts,
55
+ retryMode: options.retryMode,
56
+ });
57
+ return {
58
+ mock,
59
+ client,
60
+ reset: () => mock.reset(),
61
+ restore: () => {
62
+ mock.restore();
63
+ client.destroy();
64
+ },
65
+ };
66
+ }
67
+ /**
68
+ * Creates a mocked S3 client
69
+ */
70
+ function createS3Mock(options = {}) {
71
+ const mock = (0, aws_sdk_client_mock_1.mockClient)(client_s3_1.S3Client);
72
+ const client = new client_s3_1.S3Client({
73
+ region: options.region || DEFAULT_REGION,
74
+ maxAttempts: options.maxAttempts,
75
+ retryMode: options.retryMode,
76
+ });
77
+ return {
78
+ mock,
79
+ client,
80
+ reset: () => mock.reset(),
81
+ restore: () => {
82
+ mock.restore();
83
+ client.destroy();
84
+ },
85
+ };
86
+ }
87
+ /**
88
+ * Creates a mocked SQS client
89
+ */
90
+ function createSQSMock(options = {}) {
91
+ const mock = (0, aws_sdk_client_mock_1.mockClient)(client_sqs_1.SQSClient);
92
+ const client = new client_sqs_1.SQSClient({
93
+ region: options.region || DEFAULT_REGION,
94
+ maxAttempts: options.maxAttempts,
95
+ retryMode: options.retryMode,
96
+ });
97
+ return {
98
+ mock,
99
+ client,
100
+ reset: () => mock.reset(),
101
+ restore: () => {
102
+ mock.restore();
103
+ client.destroy();
104
+ },
105
+ };
106
+ }
107
+ /**
108
+ * Creates a mocked SNS client
109
+ */
110
+ function createSNSMock(options = {}) {
111
+ const mock = (0, aws_sdk_client_mock_1.mockClient)(client_sns_1.SNSClient);
112
+ const client = new client_sns_1.SNSClient({
113
+ region: options.region || DEFAULT_REGION,
114
+ maxAttempts: options.maxAttempts,
115
+ retryMode: options.retryMode,
116
+ });
117
+ return {
118
+ mock,
119
+ client,
120
+ reset: () => mock.reset(),
121
+ restore: () => {
122
+ mock.restore();
123
+ client.destroy();
124
+ },
125
+ };
126
+ }
127
+ /**
128
+ * Creates a mocked Step Functions client
129
+ */
130
+ function createSFNMock(options = {}) {
131
+ const mock = (0, aws_sdk_client_mock_1.mockClient)(client_sfn_1.SFNClient);
132
+ const client = new client_sfn_1.SFNClient({
133
+ region: options.region || DEFAULT_REGION,
134
+ maxAttempts: options.maxAttempts,
135
+ retryMode: options.retryMode,
136
+ });
137
+ return {
138
+ mock,
139
+ client,
140
+ reset: () => mock.reset(),
141
+ restore: () => {
142
+ mock.restore();
143
+ client.destroy();
144
+ },
145
+ };
146
+ }
147
+ /**
148
+ * Creates a mocked SES v2 client
149
+ */
150
+ function createSESMock(options = {}) {
151
+ const mock = (0, aws_sdk_client_mock_1.mockClient)(client_sesv2_1.SESv2Client);
152
+ const client = new client_sesv2_1.SESv2Client({
153
+ region: options.region || DEFAULT_REGION,
154
+ maxAttempts: options.maxAttempts,
155
+ retryMode: options.retryMode,
156
+ });
157
+ return {
158
+ mock,
159
+ client,
160
+ reset: () => mock.reset(),
161
+ restore: () => {
162
+ mock.restore();
163
+ client.destroy();
164
+ },
165
+ };
166
+ }
167
+ // ============================================================================
168
+ // AWS Mock Manager Class
169
+ // ============================================================================
170
+ /**
171
+ * Manages multiple AWS mock clients for test suites
172
+ */
173
+ class AWSMockManager {
174
+ constructor(options = {}) {
175
+ this.options = options;
176
+ }
177
+ /**
178
+ * Gets or creates the DynamoDB mock
179
+ */
180
+ getDynamoDB() {
181
+ if (!this.dynamoDB) {
182
+ this.dynamoDB = createDynamoDBMock(this.options);
183
+ }
184
+ return this.dynamoDB;
185
+ }
186
+ /**
187
+ * Gets or creates the S3 mock
188
+ */
189
+ getS3() {
190
+ if (!this.s3) {
191
+ this.s3 = createS3Mock(this.options);
192
+ }
193
+ return this.s3;
194
+ }
195
+ /**
196
+ * Gets or creates the SQS mock
197
+ */
198
+ getSQS() {
199
+ if (!this.sqs) {
200
+ this.sqs = createSQSMock(this.options);
201
+ }
202
+ return this.sqs;
203
+ }
204
+ /**
205
+ * Gets or creates the SNS mock
206
+ */
207
+ getSNS() {
208
+ if (!this.sns) {
209
+ this.sns = createSNSMock(this.options);
210
+ }
211
+ return this.sns;
212
+ }
213
+ /**
214
+ * Gets or creates the Step Functions mock
215
+ */
216
+ getSFN() {
217
+ if (!this.sfn) {
218
+ this.sfn = createSFNMock(this.options);
219
+ }
220
+ return this.sfn;
221
+ }
222
+ /**
223
+ * Gets or creates the SES mock
224
+ */
225
+ getSES() {
226
+ if (!this.ses) {
227
+ this.ses = createSESMock(this.options);
228
+ }
229
+ return this.ses;
230
+ }
231
+ /**
232
+ * Resets all active mocks
233
+ */
234
+ resetAll() {
235
+ this.dynamoDB?.reset();
236
+ this.s3?.reset();
237
+ this.sqs?.reset();
238
+ this.sns?.reset();
239
+ this.sfn?.reset();
240
+ this.ses?.reset();
241
+ }
242
+ /**
243
+ * Restores all mocks and destroys clients
244
+ */
245
+ restoreAll() {
246
+ this.dynamoDB?.restore();
247
+ this.s3?.restore();
248
+ this.sqs?.restore();
249
+ this.sns?.restore();
250
+ this.sfn?.restore();
251
+ this.ses?.restore();
252
+ this.dynamoDB = undefined;
253
+ this.s3 = undefined;
254
+ this.sqs = undefined;
255
+ this.sns = undefined;
256
+ this.sfn = undefined;
257
+ this.ses = undefined;
258
+ }
259
+ }
260
+ exports.AWSMockManager = AWSMockManager;
261
+ // ============================================================================
262
+ // Test Setup Helpers
263
+ // ============================================================================
264
+ /**
265
+ * Creates a standard test setup with beforeEach/afterAll hooks
266
+ * for use with Jest describe blocks
267
+ */
268
+ function setupAWSMocks(services, options = {}) {
269
+ const manager = new AWSMockManager(options);
270
+ // Initialize requested services
271
+ services.forEach((service) => {
272
+ switch (service) {
273
+ case 'dynamodb':
274
+ manager.getDynamoDB();
275
+ break;
276
+ case 's3':
277
+ manager.getS3();
278
+ break;
279
+ case 'sqs':
280
+ manager.getSQS();
281
+ break;
282
+ case 'sns':
283
+ manager.getSNS();
284
+ break;
285
+ case 'sfn':
286
+ manager.getSFN();
287
+ break;
288
+ case 'ses':
289
+ manager.getSES();
290
+ break;
291
+ }
292
+ });
293
+ return {
294
+ manager,
295
+ beforeEachHook: () => manager.resetAll(),
296
+ afterAllHook: () => manager.restoreAll(),
297
+ };
298
+ }
299
+ /**
300
+ * Quick setup function that returns individual mocks for common patterns
301
+ */
302
+ function createTestMocks(services, options = {}) {
303
+ const mocks = {};
304
+ services.forEach((service) => {
305
+ switch (service) {
306
+ case 'dynamodb':
307
+ mocks.dynamodb = createDynamoDBMock(options);
308
+ break;
309
+ case 's3':
310
+ mocks.s3 = createS3Mock(options);
311
+ break;
312
+ case 'sqs':
313
+ mocks.sqs = createSQSMock(options);
314
+ break;
315
+ case 'sns':
316
+ mocks.sns = createSNSMock(options);
317
+ break;
318
+ case 'sfn':
319
+ mocks.sfn = createSFNMock(options);
320
+ break;
321
+ case 'ses':
322
+ mocks.ses = createSESMock(options);
323
+ break;
324
+ }
325
+ });
326
+ return {
327
+ ...mocks,
328
+ resetAll: () => {
329
+ Object.values(mocks).forEach((m) => m.reset());
330
+ },
331
+ restoreAll: () => {
332
+ Object.values(mocks).forEach((m) => m.restore());
333
+ },
334
+ };
335
+ }
336
+ //# sourceMappingURL=aws-mock-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aws-mock-manager.js","sourceRoot":"","sources":["../../../src/integration/utilities/aws-mock-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Integration Test Utilities
3
+ *
4
+ * This module provides shared utilities for integration tests:
5
+ *
6
+ * - aws-error-factory: Factory functions for creating AWS SDK errors
7
+ * - aws-mock-manager: Mock client setup and teardown helpers
8
+ * - test-assertions: Reusable assertion functions
9
+ * - test-data-builders: Test data generation utilities
10
+ *
11
+ * Usage:
12
+ * import {
13
+ * createDynamoDBError,
14
+ * createDynamoDBMock,
15
+ * assertIsRetriableError,
16
+ * createTestItem
17
+ * } from './utilities'
18
+ */
19
+ export { type AWSError, type AWSErrorMetadata, type CreateAWSErrorOptions, createDynamoDBError, createHttpStatusError, createNetworkError, createS3Error, createSESError, createSFNError, createSNSError, createSQSError, createTimeoutError, type DynamoDBErrorName, isNetworkError, isRetriableAWSError, isThrottlingError, type NetworkErrorCode, type S3ErrorName, type SESErrorName, type SFNErrorName, type SNSErrorName, type SQSErrorName, } from './aws-error-factory';
20
+ export { AWSMockManager, createDynamoDBMock, createS3Mock, createSESMock, createSFNMock, createSNSMock, createSQSMock, createTestMocks, type MockClientOptions, type MockClientResult, setupAWSMocks, } from './aws-mock-manager';
21
+ export { assertAllMatch, assertArrayLength, assertCompletesWithin, assertDynamoDBResponseMetadata, assertErrorMetadata, assertHasRequestId, assertIsClientFault, assertIsNetworkError, assertIsNotRetriableError, assertIsRetriableError, assertIsServerFault, assertIsThrottlingError, assertIsTimeoutError, assertMemoryIncreaseLessThan, assertNoMemoryLeak, assertResponseStructure, assertTakesAtLeast, assertThrowsErrorMatching, assertThrowsErrorWithName, assertUniqueBy, forceGC, getHeapUsed, } from './test-assertions';
22
+ export { createBatchGetRequest, createBatchWriteRequest, createKey, createKeys, createLargeTestData, createMarshalledItem, createMarshalledItems, createMixedTypeTestData, createNestedTestData, createRandomString, createS3Content, createS3Metadata, createSFNExecutionName, createSFNInput, createSNSMessage, createSQSBatchEntries, createSQSMessageBody, createTestItem, type CreateTestItemOptions, createTestItems, DYNAMODB_BATCH_SIZE, marshall, splitIntoBatches, type TestItem, unmarshall, unmarshallItem, unmarshallItems, } from './test-data-builders';
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ /**
3
+ * Integration Test Utilities
4
+ *
5
+ * This module provides shared utilities for integration tests:
6
+ *
7
+ * - aws-error-factory: Factory functions for creating AWS SDK errors
8
+ * - aws-mock-manager: Mock client setup and teardown helpers
9
+ * - test-assertions: Reusable assertion functions
10
+ * - test-data-builders: Test data generation utilities
11
+ *
12
+ * Usage:
13
+ * import {
14
+ * createDynamoDBError,
15
+ * createDynamoDBMock,
16
+ * assertIsRetriableError,
17
+ * createTestItem
18
+ * } from './utilities'
19
+ */
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.createMarshalledItems = exports.createMarshalledItem = exports.createLargeTestData = exports.createKeys = exports.createKey = exports.createBatchWriteRequest = exports.createBatchGetRequest = exports.getHeapUsed = exports.forceGC = exports.assertUniqueBy = exports.assertThrowsErrorWithName = exports.assertThrowsErrorMatching = exports.assertTakesAtLeast = exports.assertResponseStructure = exports.assertNoMemoryLeak = exports.assertMemoryIncreaseLessThan = exports.assertIsTimeoutError = exports.assertIsThrottlingError = exports.assertIsServerFault = exports.assertIsRetriableError = exports.assertIsNotRetriableError = exports.assertIsNetworkError = exports.assertIsClientFault = exports.assertHasRequestId = exports.assertErrorMetadata = exports.assertDynamoDBResponseMetadata = exports.assertCompletesWithin = exports.assertArrayLength = exports.assertAllMatch = exports.setupAWSMocks = exports.createTestMocks = exports.createSQSMock = exports.createSNSMock = exports.createSFNMock = exports.createSESMock = exports.createS3Mock = exports.createDynamoDBMock = exports.AWSMockManager = exports.isThrottlingError = exports.isRetriableAWSError = exports.isNetworkError = exports.createTimeoutError = exports.createSQSError = exports.createSNSError = exports.createSFNError = exports.createSESError = exports.createS3Error = exports.createNetworkError = exports.createHttpStatusError = exports.createDynamoDBError = void 0;
22
+ exports.unmarshallItems = exports.unmarshallItem = exports.unmarshall = exports.splitIntoBatches = exports.marshall = exports.DYNAMODB_BATCH_SIZE = exports.createTestItems = exports.createTestItem = exports.createSQSMessageBody = exports.createSQSBatchEntries = exports.createSNSMessage = exports.createSFNInput = exports.createSFNExecutionName = exports.createS3Metadata = exports.createS3Content = exports.createRandomString = exports.createNestedTestData = exports.createMixedTypeTestData = void 0;
23
+ // AWS Error Factory
24
+ var aws_error_factory_1 = require("./aws-error-factory");
25
+ Object.defineProperty(exports, "createDynamoDBError", { enumerable: true, get: function () { return aws_error_factory_1.createDynamoDBError; } });
26
+ Object.defineProperty(exports, "createHttpStatusError", { enumerable: true, get: function () { return aws_error_factory_1.createHttpStatusError; } });
27
+ Object.defineProperty(exports, "createNetworkError", { enumerable: true, get: function () { return aws_error_factory_1.createNetworkError; } });
28
+ Object.defineProperty(exports, "createS3Error", { enumerable: true, get: function () { return aws_error_factory_1.createS3Error; } });
29
+ Object.defineProperty(exports, "createSESError", { enumerable: true, get: function () { return aws_error_factory_1.createSESError; } });
30
+ Object.defineProperty(exports, "createSFNError", { enumerable: true, get: function () { return aws_error_factory_1.createSFNError; } });
31
+ Object.defineProperty(exports, "createSNSError", { enumerable: true, get: function () { return aws_error_factory_1.createSNSError; } });
32
+ Object.defineProperty(exports, "createSQSError", { enumerable: true, get: function () { return aws_error_factory_1.createSQSError; } });
33
+ Object.defineProperty(exports, "createTimeoutError", { enumerable: true, get: function () { return aws_error_factory_1.createTimeoutError; } });
34
+ Object.defineProperty(exports, "isNetworkError", { enumerable: true, get: function () { return aws_error_factory_1.isNetworkError; } });
35
+ Object.defineProperty(exports, "isRetriableAWSError", { enumerable: true, get: function () { return aws_error_factory_1.isRetriableAWSError; } });
36
+ Object.defineProperty(exports, "isThrottlingError", { enumerable: true, get: function () { return aws_error_factory_1.isThrottlingError; } });
37
+ // AWS Mock Manager
38
+ var aws_mock_manager_1 = require("./aws-mock-manager");
39
+ Object.defineProperty(exports, "AWSMockManager", { enumerable: true, get: function () { return aws_mock_manager_1.AWSMockManager; } });
40
+ Object.defineProperty(exports, "createDynamoDBMock", { enumerable: true, get: function () { return aws_mock_manager_1.createDynamoDBMock; } });
41
+ Object.defineProperty(exports, "createS3Mock", { enumerable: true, get: function () { return aws_mock_manager_1.createS3Mock; } });
42
+ Object.defineProperty(exports, "createSESMock", { enumerable: true, get: function () { return aws_mock_manager_1.createSESMock; } });
43
+ Object.defineProperty(exports, "createSFNMock", { enumerable: true, get: function () { return aws_mock_manager_1.createSFNMock; } });
44
+ Object.defineProperty(exports, "createSNSMock", { enumerable: true, get: function () { return aws_mock_manager_1.createSNSMock; } });
45
+ Object.defineProperty(exports, "createSQSMock", { enumerable: true, get: function () { return aws_mock_manager_1.createSQSMock; } });
46
+ Object.defineProperty(exports, "createTestMocks", { enumerable: true, get: function () { return aws_mock_manager_1.createTestMocks; } });
47
+ Object.defineProperty(exports, "setupAWSMocks", { enumerable: true, get: function () { return aws_mock_manager_1.setupAWSMocks; } });
48
+ // Test Assertions
49
+ var test_assertions_1 = require("./test-assertions");
50
+ Object.defineProperty(exports, "assertAllMatch", { enumerable: true, get: function () { return test_assertions_1.assertAllMatch; } });
51
+ Object.defineProperty(exports, "assertArrayLength", { enumerable: true, get: function () { return test_assertions_1.assertArrayLength; } });
52
+ Object.defineProperty(exports, "assertCompletesWithin", { enumerable: true, get: function () { return test_assertions_1.assertCompletesWithin; } });
53
+ Object.defineProperty(exports, "assertDynamoDBResponseMetadata", { enumerable: true, get: function () { return test_assertions_1.assertDynamoDBResponseMetadata; } });
54
+ Object.defineProperty(exports, "assertErrorMetadata", { enumerable: true, get: function () { return test_assertions_1.assertErrorMetadata; } });
55
+ Object.defineProperty(exports, "assertHasRequestId", { enumerable: true, get: function () { return test_assertions_1.assertHasRequestId; } });
56
+ Object.defineProperty(exports, "assertIsClientFault", { enumerable: true, get: function () { return test_assertions_1.assertIsClientFault; } });
57
+ Object.defineProperty(exports, "assertIsNetworkError", { enumerable: true, get: function () { return test_assertions_1.assertIsNetworkError; } });
58
+ Object.defineProperty(exports, "assertIsNotRetriableError", { enumerable: true, get: function () { return test_assertions_1.assertIsNotRetriableError; } });
59
+ Object.defineProperty(exports, "assertIsRetriableError", { enumerable: true, get: function () { return test_assertions_1.assertIsRetriableError; } });
60
+ Object.defineProperty(exports, "assertIsServerFault", { enumerable: true, get: function () { return test_assertions_1.assertIsServerFault; } });
61
+ Object.defineProperty(exports, "assertIsThrottlingError", { enumerable: true, get: function () { return test_assertions_1.assertIsThrottlingError; } });
62
+ Object.defineProperty(exports, "assertIsTimeoutError", { enumerable: true, get: function () { return test_assertions_1.assertIsTimeoutError; } });
63
+ Object.defineProperty(exports, "assertMemoryIncreaseLessThan", { enumerable: true, get: function () { return test_assertions_1.assertMemoryIncreaseLessThan; } });
64
+ Object.defineProperty(exports, "assertNoMemoryLeak", { enumerable: true, get: function () { return test_assertions_1.assertNoMemoryLeak; } });
65
+ Object.defineProperty(exports, "assertResponseStructure", { enumerable: true, get: function () { return test_assertions_1.assertResponseStructure; } });
66
+ Object.defineProperty(exports, "assertTakesAtLeast", { enumerable: true, get: function () { return test_assertions_1.assertTakesAtLeast; } });
67
+ Object.defineProperty(exports, "assertThrowsErrorMatching", { enumerable: true, get: function () { return test_assertions_1.assertThrowsErrorMatching; } });
68
+ Object.defineProperty(exports, "assertThrowsErrorWithName", { enumerable: true, get: function () { return test_assertions_1.assertThrowsErrorWithName; } });
69
+ Object.defineProperty(exports, "assertUniqueBy", { enumerable: true, get: function () { return test_assertions_1.assertUniqueBy; } });
70
+ Object.defineProperty(exports, "forceGC", { enumerable: true, get: function () { return test_assertions_1.forceGC; } });
71
+ Object.defineProperty(exports, "getHeapUsed", { enumerable: true, get: function () { return test_assertions_1.getHeapUsed; } });
72
+ // Test Data Builders
73
+ var test_data_builders_1 = require("./test-data-builders");
74
+ Object.defineProperty(exports, "createBatchGetRequest", { enumerable: true, get: function () { return test_data_builders_1.createBatchGetRequest; } });
75
+ Object.defineProperty(exports, "createBatchWriteRequest", { enumerable: true, get: function () { return test_data_builders_1.createBatchWriteRequest; } });
76
+ Object.defineProperty(exports, "createKey", { enumerable: true, get: function () { return test_data_builders_1.createKey; } });
77
+ Object.defineProperty(exports, "createKeys", { enumerable: true, get: function () { return test_data_builders_1.createKeys; } });
78
+ Object.defineProperty(exports, "createLargeTestData", { enumerable: true, get: function () { return test_data_builders_1.createLargeTestData; } });
79
+ Object.defineProperty(exports, "createMarshalledItem", { enumerable: true, get: function () { return test_data_builders_1.createMarshalledItem; } });
80
+ Object.defineProperty(exports, "createMarshalledItems", { enumerable: true, get: function () { return test_data_builders_1.createMarshalledItems; } });
81
+ Object.defineProperty(exports, "createMixedTypeTestData", { enumerable: true, get: function () { return test_data_builders_1.createMixedTypeTestData; } });
82
+ Object.defineProperty(exports, "createNestedTestData", { enumerable: true, get: function () { return test_data_builders_1.createNestedTestData; } });
83
+ Object.defineProperty(exports, "createRandomString", { enumerable: true, get: function () { return test_data_builders_1.createRandomString; } });
84
+ Object.defineProperty(exports, "createS3Content", { enumerable: true, get: function () { return test_data_builders_1.createS3Content; } });
85
+ Object.defineProperty(exports, "createS3Metadata", { enumerable: true, get: function () { return test_data_builders_1.createS3Metadata; } });
86
+ Object.defineProperty(exports, "createSFNExecutionName", { enumerable: true, get: function () { return test_data_builders_1.createSFNExecutionName; } });
87
+ Object.defineProperty(exports, "createSFNInput", { enumerable: true, get: function () { return test_data_builders_1.createSFNInput; } });
88
+ Object.defineProperty(exports, "createSNSMessage", { enumerable: true, get: function () { return test_data_builders_1.createSNSMessage; } });
89
+ Object.defineProperty(exports, "createSQSBatchEntries", { enumerable: true, get: function () { return test_data_builders_1.createSQSBatchEntries; } });
90
+ Object.defineProperty(exports, "createSQSMessageBody", { enumerable: true, get: function () { return test_data_builders_1.createSQSMessageBody; } });
91
+ Object.defineProperty(exports, "createTestItem", { enumerable: true, get: function () { return test_data_builders_1.createTestItem; } });
92
+ Object.defineProperty(exports, "createTestItems", { enumerable: true, get: function () { return test_data_builders_1.createTestItems; } });
93
+ Object.defineProperty(exports, "DYNAMODB_BATCH_SIZE", { enumerable: true, get: function () { return test_data_builders_1.DYNAMODB_BATCH_SIZE; } });
94
+ Object.defineProperty(exports, "marshall", { enumerable: true, get: function () { return test_data_builders_1.marshall; } });
95
+ Object.defineProperty(exports, "splitIntoBatches", { enumerable: true, get: function () { return test_data_builders_1.splitIntoBatches; } });
96
+ Object.defineProperty(exports, "unmarshall", { enumerable: true, get: function () { return test_data_builders_1.unmarshall; } });
97
+ Object.defineProperty(exports, "unmarshallItem", { enumerable: true, get: function () { return test_data_builders_1.unmarshallItem; } });
98
+ Object.defineProperty(exports, "unmarshallItems", { enumerable: true, get: function () { return test_data_builders_1.unmarshallItems; } });
99
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/integration/utilities/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;;;AAEH,oBAAoB;AACpB,yDAuB4B;AAnB1B,wHAAA,mBAAmB,OAAA;AACnB,0HAAA,qBAAqB,OAAA;AACrB,uHAAA,kBAAkB,OAAA;AAClB,kHAAA,aAAa,OAAA;AACb,mHAAA,cAAc,OAAA;AACd,mHAAA,cAAc,OAAA;AACd,mHAAA,cAAc,OAAA;AACd,mHAAA,cAAc,OAAA;AACd,uHAAA,kBAAkB,OAAA;AAElB,mHAAA,cAAc,OAAA;AACd,wHAAA,mBAAmB,OAAA;AACnB,sHAAA,iBAAiB,OAAA;AASnB,mBAAmB;AACnB,uDAY2B;AAXzB,kHAAA,cAAc,OAAA;AACd,sHAAA,kBAAkB,OAAA;AAClB,gHAAA,YAAY,OAAA;AACZ,iHAAA,aAAa,OAAA;AACb,iHAAA,aAAa,OAAA;AACb,iHAAA,aAAa,OAAA;AACb,iHAAA,aAAa,OAAA;AACb,mHAAA,eAAe,OAAA;AAGf,iHAAA,aAAa,OAAA;AAGf,kBAAkB;AAClB,qDAuB0B;AAtBxB,iHAAA,cAAc,OAAA;AACd,oHAAA,iBAAiB,OAAA;AACjB,wHAAA,qBAAqB,OAAA;AACrB,iIAAA,8BAA8B,OAAA;AAC9B,sHAAA,mBAAmB,OAAA;AACnB,qHAAA,kBAAkB,OAAA;AAClB,sHAAA,mBAAmB,OAAA;AACnB,uHAAA,oBAAoB,OAAA;AACpB,4HAAA,yBAAyB,OAAA;AACzB,yHAAA,sBAAsB,OAAA;AACtB,sHAAA,mBAAmB,OAAA;AACnB,0HAAA,uBAAuB,OAAA;AACvB,uHAAA,oBAAoB,OAAA;AACpB,+HAAA,4BAA4B,OAAA;AAC5B,qHAAA,kBAAkB,OAAA;AAClB,0HAAA,uBAAuB,OAAA;AACvB,qHAAA,kBAAkB,OAAA;AAClB,4HAAA,yBAAyB,OAAA;AACzB,4HAAA,yBAAyB,OAAA;AACzB,iHAAA,cAAc,OAAA;AACd,0GAAA,OAAO,OAAA;AACP,8GAAA,WAAW,OAAA;AAGb,qBAAqB;AACrB,2DA4B6B;AA3B3B,2HAAA,qBAAqB,OAAA;AACrB,6HAAA,uBAAuB,OAAA;AACvB,+GAAA,SAAS,OAAA;AACT,gHAAA,UAAU,OAAA;AACV,yHAAA,mBAAmB,OAAA;AACnB,0HAAA,oBAAoB,OAAA;AACpB,2HAAA,qBAAqB,OAAA;AACrB,6HAAA,uBAAuB,OAAA;AACvB,0HAAA,oBAAoB,OAAA;AACpB,wHAAA,kBAAkB,OAAA;AAClB,qHAAA,eAAe,OAAA;AACf,sHAAA,gBAAgB,OAAA;AAChB,4HAAA,sBAAsB,OAAA;AACtB,oHAAA,cAAc,OAAA;AACd,sHAAA,gBAAgB,OAAA;AAChB,2HAAA,qBAAqB,OAAA;AACrB,0HAAA,oBAAoB,OAAA;AACpB,oHAAA,cAAc,OAAA;AAEd,qHAAA,eAAe,OAAA;AACf,yHAAA,mBAAmB,OAAA;AACnB,8GAAA,QAAQ,OAAA;AACR,sHAAA,gBAAgB,OAAA;AAEhB,gHAAA,UAAU,OAAA;AACV,oHAAA,cAAc,OAAA;AACd,qHAAA,eAAe,OAAA"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Test Assertions
3
+ *
4
+ * Provides reusable assertion functions for AWS SDK error patterns
5
+ * and common test scenarios. These helpers ensure consistent
6
+ * validation across integration tests.
7
+ *
8
+ * Usage:
9
+ * import {
10
+ * assertIsRetriableError,
11
+ * assertIsThrottlingError,
12
+ * assertErrorMetadata
13
+ * } from './utilities/test-assertions'
14
+ *
15
+ * it('should be retriable', () => {
16
+ * assertIsRetriableError(error)
17
+ * })
18
+ */
19
+ /**
20
+ * Asserts that an error is retriable based on AWS SDK v3 patterns
21
+ */
22
+ export declare function assertIsRetriableError(error: unknown): void;
23
+ /**
24
+ * Asserts that an error is NOT retriable
25
+ */
26
+ export declare function assertIsNotRetriableError(error: unknown): void;
27
+ /**
28
+ * Asserts that an error is a throttling error
29
+ */
30
+ export declare function assertIsThrottlingError(error: unknown): void;
31
+ /**
32
+ * Asserts that an error is a network error
33
+ */
34
+ export declare function assertIsNetworkError(error: unknown): void;
35
+ /**
36
+ * Asserts that an error is a timeout error
37
+ */
38
+ export declare function assertIsTimeoutError(error: unknown): void;
39
+ /**
40
+ * Asserts that an error has the expected metadata
41
+ */
42
+ export declare function assertErrorMetadata(error: unknown, expected: {
43
+ httpStatusCode?: number;
44
+ requestId?: string;
45
+ name?: string;
46
+ fault?: 'client' | 'server';
47
+ }): void;
48
+ /**
49
+ * Asserts that an error has a valid request ID
50
+ */
51
+ export declare function assertHasRequestId(error: unknown): void;
52
+ /**
53
+ * Asserts that an error is a client fault (4xx)
54
+ */
55
+ export declare function assertIsClientFault(error: unknown): void;
56
+ /**
57
+ * Asserts that an error is a server fault (5xx)
58
+ */
59
+ export declare function assertIsServerFault(error: unknown): void;
60
+ /**
61
+ * Asserts that a response has the expected structure
62
+ */
63
+ export declare function assertResponseStructure<T extends object>(response: unknown, expectedKeys: Array<keyof T>): void;
64
+ /**
65
+ * Asserts that a DynamoDB response has valid metadata
66
+ */
67
+ export declare function assertDynamoDBResponseMetadata(response: unknown): void;
68
+ /**
69
+ * Asserts that an async function throws an error with the expected name
70
+ */
71
+ export declare function assertThrowsErrorWithName(fn: () => Promise<unknown>, expectedName: string): Promise<void>;
72
+ /**
73
+ * Asserts that an async function throws an error matching a predicate
74
+ */
75
+ export declare function assertThrowsErrorMatching(fn: () => Promise<unknown>, predicate: (error: unknown) => boolean, description?: string): Promise<void>;
76
+ /**
77
+ * Asserts that an async operation completes within a time limit
78
+ */
79
+ export declare function assertCompletesWithin<T>(fn: () => Promise<T>, timeoutMs: number): Promise<T>;
80
+ /**
81
+ * Asserts that an async operation takes at least a minimum time
82
+ * (useful for testing retry delays)
83
+ */
84
+ export declare function assertTakesAtLeast<T>(fn: () => Promise<T>, minMs: number): Promise<T>;
85
+ /**
86
+ * Forces garbage collection if available (requires --expose-gc flag)
87
+ */
88
+ export declare function forceGC(): void;
89
+ /**
90
+ * Gets current heap memory usage in bytes
91
+ */
92
+ export declare function getHeapUsed(): number;
93
+ /**
94
+ * Asserts that memory increase is within acceptable limits
95
+ */
96
+ export declare function assertMemoryIncreaseLessThan(initialMemory: number, maxIncreaseBytes: number): void;
97
+ /**
98
+ * Runs a function and asserts memory usage stays within limits
99
+ */
100
+ export declare function assertNoMemoryLeak<T>(fn: () => Promise<T>, maxIncreaseBytes?: number): Promise<T>;
101
+ /**
102
+ * Asserts that an array has the expected length
103
+ */
104
+ export declare function assertArrayLength<T>(array: T[], expectedLength: number): void;
105
+ /**
106
+ * Asserts that all items in an array match a predicate
107
+ */
108
+ export declare function assertAllMatch<T>(array: T[], predicate: (item: T) => boolean, description?: string): void;
109
+ /**
110
+ * Asserts that an array contains unique items based on a key function
111
+ */
112
+ export declare function assertUniqueBy<T, K>(array: T[], keyFn: (item: T) => K): void;