@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.
- package/dist/commands/command.event.handler.d.ts +1 -1
- package/dist/commands/command.event.handler.js +1 -1
- package/dist/commands/command.event.handler.js.map +1 -1
- package/dist/commands/command.service.d.ts +0 -10
- package/dist/commands/command.service.js +0 -35
- package/dist/commands/command.service.js.map +1 -1
- package/dist/constants/tenant.d.ts +21 -1
- package/dist/constants/tenant.js +28 -2
- package/dist/constants/tenant.js.map +1 -1
- package/dist/context/user.d.ts +10 -0
- package/dist/context/user.js +17 -2
- package/dist/context/user.js.map +1 -1
- package/dist/guard/roles.guard.d.ts +53 -0
- package/dist/guard/roles.guard.js +79 -4
- package/dist/guard/roles.guard.js.map +1 -1
- package/dist/helpers/index.d.ts +1 -1
- package/dist/helpers/index.js +2 -2
- package/dist/helpers/index.js.map +1 -1
- package/dist/integration/utilities/aws-error-factory.d.ts +141 -0
- package/dist/integration/utilities/aws-error-factory.js +392 -0
- package/dist/integration/utilities/aws-error-factory.js.map +1 -0
- package/dist/integration/utilities/aws-mock-manager.d.ts +136 -0
- package/dist/integration/utilities/aws-mock-manager.js +336 -0
- package/dist/integration/utilities/aws-mock-manager.js.map +1 -0
- package/dist/integration/utilities/index.d.ts +22 -0
- package/dist/integration/utilities/index.js +99 -0
- package/dist/integration/utilities/index.js.map +1 -0
- package/dist/integration/utilities/test-assertions.d.ts +112 -0
- package/dist/integration/utilities/test-assertions.js +345 -0
- package/dist/integration/utilities/test-assertions.js.map +1 -0
- package/dist/integration/utilities/test-data-builders.d.ts +202 -0
- package/dist/integration/utilities/test-data-builders.js +320 -0
- package/dist/integration/utilities/test-data-builders.js.map +1 -0
- package/dist/interfaces/notification.interface.d.ts +13 -0
- package/dist/notifications/email.service.js +16 -4
- package/dist/notifications/email.service.js.map +1 -1
- 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;
|