lesgo 0.7.8 → 2.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/README.md +5 -4
- package/bin/lesgo-scripts.sh +52 -7
- package/dist/config/app.d.ts +7 -0
- package/dist/config/app.js +9 -0
- package/dist/config/aws.d.ts +5 -0
- package/dist/config/aws.js +4 -0
- package/dist/config/basicAuth.d.ts +7 -0
- package/dist/config/basicAuth.js +8 -0
- package/dist/config/crypto.d.ts +10 -0
- package/dist/config/crypto.js +9 -0
- package/dist/config/dynamodb.d.ts +8 -0
- package/dist/config/dynamodb.js +14 -0
- package/dist/config/elasticache.d.ts +7 -0
- package/dist/config/elasticache.js +6 -0
- package/dist/config/index.d.ts +11 -0
- package/dist/config/index.js +11 -0
- package/dist/config/jwt.d.ts +12 -0
- package/dist/config/jwt.js +16 -0
- package/dist/config/rds.d.ts +12 -0
- package/dist/config/rds.js +13 -0
- package/dist/config/s3.d.ts +5 -0
- package/dist/config/s3.js +5 -0
- package/dist/config/secretsManager.d.ts +4 -0
- package/dist/config/secretsManager.js +4 -0
- package/dist/config/sqs.d.ts +9 -0
- package/dist/config/sqs.js +18 -0
- package/dist/exceptions/LesgoException.d.ts +6 -0
- package/{src → dist}/exceptions/LesgoException.js +5 -4
- package/dist/exceptions/index.d.ts +1 -0
- package/dist/exceptions/index.js +1 -0
- package/dist/middlewares/disconnectMiddleware.d.ts +8 -0
- package/dist/middlewares/disconnectMiddleware.js +78 -0
- package/dist/middlewares/httpMiddleware.d.ts +12 -0
- package/dist/middlewares/httpMiddleware.js +74 -0
- package/dist/middlewares/httpResponseMiddleware.d.ts +7 -0
- package/dist/middlewares/httpResponseMiddleware.js +128 -0
- package/dist/middlewares/index.d.ts +7 -0
- package/dist/middlewares/index.js +7 -0
- package/dist/middlewares/invokeCommandMiddleware.d.ts +12 -0
- package/dist/middlewares/invokeCommandMiddleware.js +70 -0
- package/dist/middlewares/sqsMiddleware.d.ts +10 -0
- package/dist/middlewares/sqsMiddleware.js +70 -0
- package/dist/middlewares/verifyBasicAuthMiddleware.d.ts +8 -0
- package/dist/middlewares/verifyBasicAuthMiddleware.js +59 -0
- package/dist/middlewares/verifyJwtMiddleware.d.ts +6 -0
- package/dist/middlewares/verifyJwtMiddleware.js +37 -0
- package/dist/services/DynamoDbService/deleteRecord.d.ts +8 -0
- package/dist/services/DynamoDbService/deleteRecord.js +69 -0
- package/dist/services/DynamoDbService/getClient.d.ts +7 -0
- package/dist/services/DynamoDbService/getClient.js +30 -0
- package/dist/services/DynamoDbService/getTableName.d.ts +2 -0
- package/dist/services/DynamoDbService/getTableName.js +15 -0
- package/dist/services/DynamoDbService/index.d.ts +6 -0
- package/dist/services/DynamoDbService/index.js +6 -0
- package/dist/services/DynamoDbService/putRecord.d.ts +8 -0
- package/dist/services/DynamoDbService/putRecord.js +64 -0
- package/dist/services/DynamoDbService/query.d.ts +7 -0
- package/dist/services/DynamoDbService/query.js +78 -0
- package/dist/services/DynamoDbService/scan.d.ts +7 -0
- package/dist/services/DynamoDbService/scan.js +60 -0
- package/dist/services/DynamoDbService/updateRecord.d.ts +9 -0
- package/dist/services/DynamoDbService/updateRecord.js +89 -0
- package/dist/services/ElastiCacheRedisService/deleteRedisCache.d.ts +3 -0
- package/dist/services/ElastiCacheRedisService/deleteRedisCache.js +62 -0
- package/dist/services/ElastiCacheRedisService/disconnectElastiCacheRedisClient.d.ts +11 -0
- package/dist/services/ElastiCacheRedisService/disconnectElastiCacheRedisClient.js +69 -0
- package/dist/services/ElastiCacheRedisService/getElastiCacheRedisClient.d.ts +12 -0
- package/dist/services/ElastiCacheRedisService/getElastiCacheRedisClient.js +114 -0
- package/dist/services/ElastiCacheRedisService/getRedisCache.d.ts +3 -0
- package/dist/services/ElastiCacheRedisService/getRedisCache.js +70 -0
- package/dist/services/ElastiCacheRedisService/index.d.ts +5 -0
- package/dist/services/ElastiCacheRedisService/index.js +5 -0
- package/dist/services/ElastiCacheRedisService/setRedisCache.d.ts +6 -0
- package/dist/services/ElastiCacheRedisService/setRedisCache.js +77 -0
- package/dist/services/JWTService/decodeJwt.d.ts +7 -0
- package/dist/services/JWTService/decodeJwt.js +9 -0
- package/dist/services/JWTService/getJwtSecret.d.ts +13 -0
- package/dist/services/JWTService/getJwtSecret.js +54 -0
- package/dist/services/JWTService/index.d.ts +2 -0
- package/dist/services/JWTService/index.js +2 -0
- package/dist/services/JWTService/sign.d.ts +3 -0
- package/dist/services/JWTService/sign.js +31 -0
- package/dist/services/JWTService/verify.d.ts +7 -0
- package/dist/services/JWTService/verify.js +61 -0
- package/dist/services/LoggerService.d.ts +46 -0
- package/{src → dist}/services/LoggerService.js +36 -60
- package/dist/services/RDSAuroraMySQLProxyService/disconnectMySQLProxyClient.d.ts +2 -0
- package/dist/services/RDSAuroraMySQLProxyService/disconnectMySQLProxyClient.js +60 -0
- package/dist/services/RDSAuroraMySQLProxyService/getMySQLProxyClient.d.ts +8 -0
- package/dist/services/RDSAuroraMySQLProxyService/getMySQLProxyClient.js +87 -0
- package/dist/services/RDSAuroraMySQLProxyService/index.d.ts +3 -0
- package/dist/services/RDSAuroraMySQLProxyService/index.js +3 -0
- package/dist/services/RDSAuroraMySQLProxyService/query.d.ts +4 -0
- package/dist/services/RDSAuroraMySQLProxyService/query.js +63 -0
- package/dist/services/S3Service/getClient.d.ts +4 -0
- package/dist/services/S3Service/getClient.js +28 -0
- package/dist/services/S3Service/getDownloadSignedUrl.d.ts +7 -0
- package/dist/services/S3Service/getDownloadSignedUrl.js +58 -0
- package/dist/services/S3Service/getHeadObject.d.ts +13 -0
- package/dist/services/S3Service/getHeadObject.js +83 -0
- package/dist/services/S3Service/getObject.d.ts +10 -0
- package/dist/services/S3Service/getObject.js +89 -0
- package/dist/services/S3Service/getUploadSignedUrl.d.ts +7 -0
- package/dist/services/S3Service/getUploadSignedUrl.js +61 -0
- package/dist/services/S3Service/index.d.ts +6 -0
- package/dist/services/S3Service/index.js +6 -0
- package/dist/services/S3Service/putObject.d.ts +9 -0
- package/dist/services/S3Service/putObject.js +77 -0
- package/dist/services/SQSService/deleteMessage.d.ts +9 -0
- package/dist/services/SQSService/deleteMessage.js +69 -0
- package/dist/services/SQSService/dispatch.d.ts +9 -0
- package/dist/services/SQSService/dispatch.js +71 -0
- package/dist/services/SQSService/getClient.d.ts +4 -0
- package/dist/services/SQSService/getClient.js +28 -0
- package/dist/services/SQSService/getQueueUrl.d.ts +7 -0
- package/dist/services/SQSService/getQueueUrl.js +25 -0
- package/dist/services/SQSService/index.d.ts +4 -0
- package/dist/services/SQSService/index.js +4 -0
- package/dist/services/SQSService/receiveMessages.d.ts +8 -0
- package/dist/services/SQSService/receiveMessages.js +65 -0
- package/dist/services/SecretsManagerService/getClient.d.ts +7 -0
- package/dist/services/SecretsManagerService/getClient.js +28 -0
- package/dist/services/SecretsManagerService/getSecretValue.d.ts +7 -0
- package/dist/services/SecretsManagerService/getSecretValue.js +65 -0
- package/dist/services/SecretsManagerService/index.d.ts +2 -0
- package/dist/services/SecretsManagerService/index.js +2 -0
- package/dist/services/index.d.ts +1 -0
- package/dist/services/index.js +1 -0
- package/dist/types/aws.d.ts +8 -0
- package/dist/types/aws.js +1 -0
- package/dist/utils/cache/redis/deleteCache.d.ts +19 -0
- package/dist/utils/cache/redis/deleteCache.js +21 -0
- package/dist/utils/cache/redis/getCache.d.ts +22 -0
- package/dist/utils/cache/redis/getCache.js +24 -0
- package/dist/utils/cache/redis/getClient.d.ts +30 -0
- package/dist/utils/cache/redis/getClient.js +32 -0
- package/dist/utils/cache/redis/index.d.ts +4 -0
- package/dist/utils/cache/redis/index.js +4 -0
- package/dist/utils/cache/redis/setCache.d.ts +25 -0
- package/dist/utils/cache/redis/setCache.js +26 -0
- package/dist/utils/crypto/decrypt.d.ts +33 -0
- package/dist/utils/crypto/decrypt.js +59 -0
- package/dist/utils/crypto/encrypt.d.ts +31 -0
- package/dist/utils/crypto/encrypt.js +41 -0
- package/dist/utils/crypto/hash.d.ts +31 -0
- package/dist/utils/crypto/hash.js +56 -0
- package/dist/utils/crypto/index.d.ts +3 -0
- package/dist/utils/crypto/index.js +3 -0
- package/dist/utils/crypto/validateEncryptionFields.d.ts +19 -0
- package/dist/utils/crypto/validateEncryptionFields.js +71 -0
- package/dist/utils/db/mysql/proxy/disconnect.d.ts +2 -0
- package/dist/utils/db/mysql/proxy/disconnect.js +5 -0
- package/dist/utils/db/mysql/proxy/disconnectDb.d.ts +2 -0
- package/dist/utils/db/mysql/proxy/disconnectDb.js +5 -0
- package/dist/utils/db/mysql/proxy/getClient.d.ts +4 -0
- package/dist/utils/db/mysql/proxy/getClient.js +5 -0
- package/dist/utils/db/mysql/proxy/index.d.ts +3 -0
- package/dist/utils/db/mysql/proxy/index.js +3 -0
- package/dist/utils/db/mysql/proxy/query.d.ts +4 -0
- package/dist/utils/db/mysql/proxy/query.js +45 -0
- package/dist/utils/dynamodb/deleteRecord.d.ts +5 -0
- package/dist/utils/dynamodb/deleteRecord.js +39 -0
- package/dist/utils/dynamodb/getClient.d.ts +3 -0
- package/dist/utils/dynamodb/getClient.js +5 -0
- package/dist/utils/dynamodb/index.d.ts +6 -0
- package/dist/utils/dynamodb/index.js +6 -0
- package/dist/utils/dynamodb/putRecord.d.ts +4 -0
- package/dist/utils/dynamodb/putRecord.js +39 -0
- package/dist/utils/dynamodb/query.d.ts +5 -0
- package/dist/utils/dynamodb/query.js +52 -0
- package/dist/utils/dynamodb/scan.d.ts +4 -0
- package/dist/utils/dynamodb/scan.js +40 -0
- package/dist/utils/dynamodb/updateRecord.d.ts +5 -0
- package/dist/utils/dynamodb/updateRecord.js +53 -0
- package/dist/utils/formatUnixTimestamp.d.ts +8 -0
- package/dist/utils/formatUnixTimestamp.js +17 -0
- package/dist/utils/generateUid.d.ts +13 -0
- package/{src → dist}/utils/generateUid.js +9 -4
- package/dist/utils/getCurrentDatetime.d.ts +2 -0
- package/dist/utils/getCurrentDatetime.js +4 -0
- package/dist/utils/getCurrentTimestamp.d.ts +7 -0
- package/dist/utils/getCurrentTimestamp.js +9 -0
- package/dist/utils/getJwtSubFromAuthHeader.d.ts +9 -0
- package/dist/utils/getJwtSubFromAuthHeader.js +24 -0
- package/dist/utils/index.d.ts +9 -0
- package/dist/utils/index.js +9 -0
- package/dist/utils/isDecimal.d.ts +8 -0
- package/dist/utils/isDecimal.js +9 -0
- package/dist/utils/isEmail.d.ts +9 -0
- package/{src → dist}/utils/isEmail.js +9 -4
- package/dist/utils/isEmpty.d.ts +8 -0
- package/dist/utils/isEmpty.js +19 -0
- package/dist/utils/jwt/index.d.ts +2 -0
- package/dist/utils/jwt/index.js +2 -0
- package/dist/utils/jwt/sign.d.ts +3 -0
- package/dist/utils/jwt/sign.js +5 -0
- package/dist/utils/jwt/verify.d.ts +3 -0
- package/dist/utils/jwt/verify.js +12 -0
- package/dist/utils/logger.d.ts +20 -0
- package/dist/utils/logger.js +38 -0
- package/dist/utils/s3/getClient.d.ts +3 -0
- package/dist/utils/s3/getClient.js +5 -0
- package/dist/utils/s3/getDownloadSignedUrl.d.ts +5 -0
- package/dist/utils/s3/getDownloadSignedUrl.js +39 -0
- package/dist/utils/s3/getHeadObject.d.ts +10 -0
- package/dist/utils/s3/getHeadObject.js +39 -0
- package/dist/utils/s3/getObject.d.ts +13 -0
- package/dist/utils/s3/getObject.js +51 -0
- package/dist/utils/s3/getUploadSignedUrl.d.ts +5 -0
- package/dist/utils/s3/getUploadSignedUrl.js +39 -0
- package/dist/utils/s3/index.d.ts +6 -0
- package/dist/utils/s3/index.js +6 -0
- package/dist/utils/s3/putObject.d.ts +5 -0
- package/dist/utils/s3/putObject.js +39 -0
- package/dist/utils/secretsmanager/getClient.d.ts +3 -0
- package/dist/utils/secretsmanager/getClient.js +5 -0
- package/dist/utils/secretsmanager/getSecretValue.d.ts +4 -0
- package/dist/utils/secretsmanager/getSecretValue.js +68 -0
- package/dist/utils/secretsmanager/index.d.ts +2 -0
- package/dist/utils/secretsmanager/index.js +2 -0
- package/dist/utils/sqs/deleteMessage.d.ts +5 -0
- package/dist/utils/sqs/deleteMessage.js +39 -0
- package/dist/utils/sqs/dispatch.d.ts +5 -0
- package/dist/utils/sqs/dispatch.js +39 -0
- package/dist/utils/sqs/getClient.d.ts +3 -0
- package/dist/utils/sqs/getClient.js +5 -0
- package/dist/utils/sqs/index.d.ts +4 -0
- package/dist/utils/sqs/index.js +4 -0
- package/dist/utils/sqs/receiveMessages.d.ts +5 -0
- package/dist/utils/sqs/receiveMessages.js +39 -0
- package/dist/utils/validateFields.d.ts +22 -0
- package/{src → dist}/utils/validateFields.js +13 -19
- package/package.json +145 -34
- package/CHANGELOG.md +0 -9
- package/src/exceptions/__tests__/LesgoException.spec.js +0 -24
- package/src/exceptions/index.js +0 -4
- package/src/index.js +0 -4
- package/src/middlewares/__mocks__/ValidationErrorException.js +0 -18
- package/src/middlewares/__tests__/basicAuthMiddleware.spec.js +0 -225
- package/src/middlewares/__tests__/clientAuthMiddleware.spec.js +0 -137
- package/src/middlewares/__tests__/errorHttpResponseMiddleware.spec.js +0 -190
- package/src/middlewares/__tests__/gzipHttpResponse.spec.js +0 -185
- package/src/middlewares/__tests__/httpNoOutputMiddleware.spec.js +0 -199
- package/src/middlewares/__tests__/normalizeHttpRequestMiddleware.spec.js +0 -181
- package/src/middlewares/__tests__/normalizeSQSMessageMiddleware.spec.js +0 -120
- package/src/middlewares/__tests__/serverAuthMiddleware.spec.js +0 -170
- package/src/middlewares/__tests__/successHttpResponseMiddleware.spec.js +0 -159
- package/src/middlewares/__tests__/verifyJwtMiddleware.spec.js +0 -222
- package/src/middlewares/basicAuthMiddleware.js +0 -145
- package/src/middlewares/clientAuthMiddleware.js +0 -82
- package/src/middlewares/errorHttpResponseMiddleware.js +0 -99
- package/src/middlewares/gzipHttpResponse.js +0 -98
- package/src/middlewares/httpMiddleware.js +0 -19
- package/src/middlewares/httpNoOutputMiddleware.js +0 -87
- package/src/middlewares/index.js +0 -15
- package/src/middlewares/normalizeHttpRequestMiddleware.js +0 -101
- package/src/middlewares/normalizeSQSMessageMiddleware.js +0 -67
- package/src/middlewares/serverAuthMiddleware.js +0 -29
- package/src/middlewares/successHttpResponseMiddleware.js +0 -83
- package/src/middlewares/verifyJwtMiddleware.js +0 -62
- package/src/services/AuroraDbRDSProxyService.js +0 -182
- package/src/services/AuroraDbService.js +0 -111
- package/src/services/DynamoDbService.js +0 -177
- package/src/services/ElastiCacheService.js +0 -17
- package/src/services/ElasticsearchService.js +0 -181
- package/src/services/FirebaseAdminService.js +0 -108
- package/src/services/JwtService.js +0 -52
- package/src/services/S3Service.js +0 -59
- package/src/services/SQSService.js +0 -65
- package/src/services/__tests__/AuroraDbRDSProxyService.spec.js +0 -278
- package/src/services/__tests__/AuroraDbService.spec.js +0 -211
- package/src/services/__tests__/AwsElasticsearchConnection.spec.js +0 -89
- package/src/services/__tests__/DynamoDbService.spec.js +0 -314
- package/src/services/__tests__/ElasticsearchService.spec.js +0 -201
- package/src/services/__tests__/FirebaseAdminService.spec.js +0 -356
- package/src/services/__tests__/JwtService.spec.js +0 -35
- package/src/services/__tests__/LengthAwarePaginator.spec.js +0 -223
- package/src/services/__tests__/LoggerService.spec.js +0 -252
- package/src/services/__tests__/Paginator.spec.js +0 -383
- package/src/services/__tests__/S3Service.spec.js +0 -55
- package/src/services/__tests__/SQSService.spec.js +0 -47
- package/src/services/__tests__/SignedRequest.spec.js +0 -103
- package/src/services/aws/AwsElasticsearchConnection.js +0 -59
- package/src/services/aws/SignedRequest.js +0 -158
- package/src/services/index.js +0 -19
- package/src/services/pagination/LengthAwarePaginator.js +0 -49
- package/src/services/pagination/Paginator.js +0 -260
- package/src/utils/__mocks__/db.js +0 -109
- package/src/utils/__tests__/cache.spec.js +0 -131
- package/src/utils/__tests__/crypto.spec.js +0 -122
- package/src/utils/__tests__/db.spec.js +0 -70
- package/src/utils/__tests__/dynamodb.spec.js +0 -27
- package/src/utils/__tests__/elasticsearch.spec.js +0 -43
- package/src/utils/__tests__/generateUid.spec.js +0 -36
- package/src/utils/__tests__/getJwtSubFromAuthHeader.spec.js +0 -20
- package/src/utils/__tests__/isDecimal.spec.js +0 -12
- package/src/utils/__tests__/isEmail.spec.js +0 -28
- package/src/utils/__tests__/isEmpty.spec.js +0 -31
- package/src/utils/__tests__/logger.spec.js +0 -11
- package/src/utils/__tests__/objectStore.spec.js +0 -67
- package/src/utils/__tests__/prepSQLInsertParams.spec.js +0 -46
- package/src/utils/__tests__/prepSQLUpdateParams.spec.js +0 -36
- package/src/utils/__tests__/queue.spec.js +0 -54
- package/src/utils/__tests__/validateFields.spec.js +0 -374
- package/src/utils/cache.js +0 -215
- package/src/utils/crypto.js +0 -77
- package/src/utils/db.js +0 -17
- package/src/utils/dynamodb.js +0 -6
- package/src/utils/elasticsearch.js +0 -20
- package/src/utils/getJwtSubFromAuthHeader.js +0 -18
- package/src/utils/index.js +0 -26
- package/src/utils/isDecimal.js +0 -2
- package/src/utils/isEmpty.js +0 -6
- package/src/utils/logger.js +0 -25
- package/src/utils/objectStore.js +0 -11
- package/src/utils/prepSQLInsertParams.js +0 -21
- package/src/utils/prepSQLUpdateParams.js +0 -25
- package/src/utils/queue.js +0 -11
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
determineRequestAcceptEncoding,
|
|
3
|
-
determineRequestOrigin,
|
|
4
|
-
gzip,
|
|
5
|
-
gzipHttpResponse,
|
|
6
|
-
} from '../gzipHttpResponse';
|
|
7
|
-
|
|
8
|
-
describe('test gzipHttpResponse determineRequestOrigin', () => {
|
|
9
|
-
it('should return APIGATEWAY by default', () => {
|
|
10
|
-
const handler = { event: { requestContext: {} } };
|
|
11
|
-
|
|
12
|
-
expect(determineRequestOrigin(handler)).toEqual('APIGATEWAY');
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
it('should return ELB when requestContext has property elb', () => {
|
|
16
|
-
const handler = { event: { requestContext: { elb: {} } } };
|
|
17
|
-
|
|
18
|
-
expect(determineRequestOrigin(handler)).toEqual('ELB');
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
it('should return APIGATEWAY when requestContext has property apiId', () => {
|
|
22
|
-
const handler = { event: { requestContext: { apiId: 'asd-123' } } };
|
|
23
|
-
|
|
24
|
-
expect(determineRequestOrigin(handler)).toEqual('APIGATEWAY');
|
|
25
|
-
});
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
describe('test gzipHttpResponse determineRequestAcceptEncoding', () => {
|
|
29
|
-
it('should return false when no Accept-Encoding header exists', () => {
|
|
30
|
-
const handler = { event: { headers: {} } };
|
|
31
|
-
|
|
32
|
-
expect(determineRequestAcceptEncoding(handler)).toBeFalsy();
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
it('should return true when Accept-Encoding header exists with gzip', () => {
|
|
36
|
-
const handler = { event: { headers: { 'Accept-Encoding': 'gzip' } } };
|
|
37
|
-
|
|
38
|
-
expect(determineRequestAcceptEncoding(handler)).toBeTruthy();
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
it('should return true when Accept-encoding header exists with gzip', () => {
|
|
42
|
-
const handler = { event: { headers: { 'Accept-encoding': 'gzip' } } };
|
|
43
|
-
|
|
44
|
-
expect(determineRequestAcceptEncoding(handler)).toBeTruthy();
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
it('should return true when accept-encoding header exists with gzip', () => {
|
|
48
|
-
const handler = { event: { headers: { 'accept-encoding': 'gzip' } } };
|
|
49
|
-
|
|
50
|
-
expect(determineRequestAcceptEncoding(handler)).toBeTruthy();
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
it('should return true when Accept-Encoding header exists with Multiple algorithms containing gzip', () => {
|
|
54
|
-
const handler = {
|
|
55
|
-
event: { headers: { 'Accept-Encoding': 'deflate, gzip' } },
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
expect(determineRequestAcceptEncoding(handler)).toBeTruthy();
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
// FIXME: Currently this is not being handled
|
|
62
|
-
// it('should return true when Accept-Encoding header exists with Multiple algorithms containing gzip, weighted with the quality value syntax', () => {
|
|
63
|
-
// const handler = {
|
|
64
|
-
// event: { headers: { 'Accept-Encoding': 'deflate, gzip;q=1.0, *;q=0.5' } },
|
|
65
|
-
// };
|
|
66
|
-
|
|
67
|
-
// expect(determineRequestAcceptEncoding(handler)).toBeTruthy();
|
|
68
|
-
// });
|
|
69
|
-
|
|
70
|
-
it('should return false when Accept-Encoding header exists with other than gzip', () => {
|
|
71
|
-
const handler = { event: { headers: { 'Accept-Encoding': 'compress' } } };
|
|
72
|
-
|
|
73
|
-
expect(determineRequestAcceptEncoding(handler)).toBeFalsy();
|
|
74
|
-
});
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
describe('test gzipHttpResponse gzip', () => {
|
|
78
|
-
it('should return gzipped data with necessary headers', async () => {
|
|
79
|
-
const response = {
|
|
80
|
-
body: JSON.stringify({ someKey: 'someValue' }),
|
|
81
|
-
};
|
|
82
|
-
// const gzippedBody = 'H4sIAAAAAAAAE6tWKs7PTfVOrVSyArPCEnNKU5VqASj48/MXAAAA';
|
|
83
|
-
|
|
84
|
-
const resp = await gzip(response);
|
|
85
|
-
// expect(resp.body).toEqual(gzippedBody);
|
|
86
|
-
expect(resp.isBase64Encoded).toBeTruthy();
|
|
87
|
-
expect(resp.headers['Content-Encoding']).toEqual('gzip');
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
it('should return zlib.gzip error when passing non-string object', async () => {
|
|
91
|
-
const response = {
|
|
92
|
-
body: { someKey: 'someValue' },
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
try {
|
|
96
|
-
const resp = await gzip(response);
|
|
97
|
-
expect(resp).toThrow();
|
|
98
|
-
} catch (err) {
|
|
99
|
-
expect(err.name).toEqual('LesgoException');
|
|
100
|
-
expect(err.code).toEqual('GZIP_LIB_ERROR');
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
describe('test gzipHttpResponse gzipHttpResponse', () => {
|
|
106
|
-
it('should return gzipped response for ELB requests', async () => {
|
|
107
|
-
const handler = {
|
|
108
|
-
event: {
|
|
109
|
-
headers: { 'accept-encoding': 'gzip' },
|
|
110
|
-
requestContext: { elb: {} },
|
|
111
|
-
},
|
|
112
|
-
response: {
|
|
113
|
-
body: JSON.stringify({ someKey: 'someValue' }),
|
|
114
|
-
},
|
|
115
|
-
};
|
|
116
|
-
|
|
117
|
-
// const gzippedBody = 'H4sIAAAAAAAAE6tWKs7PTfVOrVSyArPCEnNKU5VqASj48/MXAAAA';
|
|
118
|
-
|
|
119
|
-
const handlerResp = await gzipHttpResponse(handler);
|
|
120
|
-
|
|
121
|
-
// expect(handlerResp.body).toEqual(gzippedBody);
|
|
122
|
-
expect(handlerResp.isBase64Encoded).toBeTruthy();
|
|
123
|
-
expect(handlerResp.headers['Content-Encoding']).toEqual('gzip');
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
it('should return non-gzipped response for API Gateway requests', async () => {
|
|
127
|
-
const handler = {
|
|
128
|
-
event: {
|
|
129
|
-
headers: { 'accept-encoding': 'gzip' },
|
|
130
|
-
requestContext: { apiId: 'asd-123' },
|
|
131
|
-
},
|
|
132
|
-
response: {
|
|
133
|
-
body: JSON.stringify({ someKey: 'someValue' }),
|
|
134
|
-
},
|
|
135
|
-
};
|
|
136
|
-
|
|
137
|
-
const handlerResp = await gzipHttpResponse(handler);
|
|
138
|
-
|
|
139
|
-
expect(handlerResp.body).toEqual(handler.response.body);
|
|
140
|
-
expect(handlerResp.isBase64Encoded).toBeUndefined();
|
|
141
|
-
expect(handlerResp.headers).toBeUndefined();
|
|
142
|
-
});
|
|
143
|
-
|
|
144
|
-
it('should return gzipped response for ELB requests from options', async () => {
|
|
145
|
-
const handler = {
|
|
146
|
-
event: {
|
|
147
|
-
headers: { 'accept-encoding': 'gzip' },
|
|
148
|
-
requestContext: { elb: {} },
|
|
149
|
-
},
|
|
150
|
-
response: {
|
|
151
|
-
body: JSON.stringify({ someKey: 'someValue' }),
|
|
152
|
-
},
|
|
153
|
-
};
|
|
154
|
-
|
|
155
|
-
// const gzippedBody = 'H4sIAAAAAAAAE6tWKs7PTfVOrVSyArPCEnNKU5VqASj48/MXAAAA';
|
|
156
|
-
|
|
157
|
-
const handlerResp = await gzipHttpResponse(handler, {
|
|
158
|
-
zipWhenRequest: ['ELB'],
|
|
159
|
-
});
|
|
160
|
-
|
|
161
|
-
// expect(handlerResp.body).toEqual(gzippedBody);
|
|
162
|
-
expect(handlerResp.isBase64Encoded).toBeTruthy();
|
|
163
|
-
expect(handlerResp.headers['Content-Encoding']).toEqual('gzip');
|
|
164
|
-
});
|
|
165
|
-
|
|
166
|
-
it('should return non-gzipped response for ELB requests with custom non-elb option', async () => {
|
|
167
|
-
const handler = {
|
|
168
|
-
event: {
|
|
169
|
-
headers: { 'accept-encoding': 'gzip' },
|
|
170
|
-
requestContext: { elb: {} },
|
|
171
|
-
},
|
|
172
|
-
response: {
|
|
173
|
-
body: JSON.stringify({ someKey: 'someValue' }),
|
|
174
|
-
},
|
|
175
|
-
};
|
|
176
|
-
|
|
177
|
-
const handlerResp = await gzipHttpResponse(handler, {
|
|
178
|
-
zipWhenRequest: ['apiId'],
|
|
179
|
-
});
|
|
180
|
-
|
|
181
|
-
expect(handlerResp.body).toEqual(handler.response.body);
|
|
182
|
-
expect(handlerResp.isBase64Encoded).toBeUndefined();
|
|
183
|
-
expect(handlerResp.headers).toBeUndefined();
|
|
184
|
-
});
|
|
185
|
-
});
|
|
@@ -1,199 +0,0 @@
|
|
|
1
|
-
import app from 'Config/app'; // eslint-disable-line import/no-unresolved
|
|
2
|
-
import {
|
|
3
|
-
successHttpNoOutputResponseAfterHandler,
|
|
4
|
-
errorHttpNoOutputResponseAfterHandler,
|
|
5
|
-
} from '../httpNoOutputMiddleware';
|
|
6
|
-
|
|
7
|
-
describe('MiddlewareGroup: test successHttpNoOutputResponseAfterHandler', () => {
|
|
8
|
-
it('should have no body without debug', async () => {
|
|
9
|
-
const handler = {
|
|
10
|
-
response: {},
|
|
11
|
-
event: {},
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
await successHttpNoOutputResponseAfterHandler(handler, () => {}, {
|
|
15
|
-
response: 'Some message',
|
|
16
|
-
});
|
|
17
|
-
expect(handler.response).toHaveProperty('statusCode', 200);
|
|
18
|
-
expect(handler.response).toHaveProperty('body', null);
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
it('should return the body when debug is enabled via query string parameters', async () => {
|
|
22
|
-
const handler = {
|
|
23
|
-
response: {},
|
|
24
|
-
event: {
|
|
25
|
-
queryStringParameters: {
|
|
26
|
-
debug: '1',
|
|
27
|
-
},
|
|
28
|
-
someEventKey: 'someEventValue',
|
|
29
|
-
},
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
await successHttpNoOutputResponseAfterHandler(handler, () => {}, {
|
|
33
|
-
response: 'Some message',
|
|
34
|
-
});
|
|
35
|
-
expect(handler.response).toHaveProperty('statusCode', 200);
|
|
36
|
-
expect(handler.response).toHaveProperty(
|
|
37
|
-
'body',
|
|
38
|
-
JSON.stringify({
|
|
39
|
-
status: 'success',
|
|
40
|
-
data: 'Some message',
|
|
41
|
-
_meta: {},
|
|
42
|
-
})
|
|
43
|
-
);
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
it('should have null body even when enabled when configuration has is disabled', async () => {
|
|
47
|
-
app.debug = false;
|
|
48
|
-
|
|
49
|
-
const handler = {
|
|
50
|
-
response: {},
|
|
51
|
-
event: {
|
|
52
|
-
queryStringParameters: {
|
|
53
|
-
debug: '1',
|
|
54
|
-
},
|
|
55
|
-
someEventKey: 'someEventValue',
|
|
56
|
-
},
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
await successHttpNoOutputResponseAfterHandler(handler, () => {}, {
|
|
60
|
-
response: 'Some message',
|
|
61
|
-
});
|
|
62
|
-
expect(handler.response).toHaveProperty('statusCode', 200);
|
|
63
|
-
expect(handler.response).toHaveProperty('body', null);
|
|
64
|
-
app.debug = true;
|
|
65
|
-
});
|
|
66
|
-
|
|
67
|
-
it('should return a response when allowResponse override is passed via options', async () => {
|
|
68
|
-
app.debug = false;
|
|
69
|
-
|
|
70
|
-
const handler = {
|
|
71
|
-
response: {},
|
|
72
|
-
event: {
|
|
73
|
-
someEventKey: 'someEventValue',
|
|
74
|
-
},
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
await successHttpNoOutputResponseAfterHandler(handler, () => {}, {
|
|
78
|
-
response: 'Some message',
|
|
79
|
-
allowResponse: () => true,
|
|
80
|
-
});
|
|
81
|
-
expect(handler.response).toHaveProperty('statusCode', 200);
|
|
82
|
-
expect(handler.response).toHaveProperty(
|
|
83
|
-
'body',
|
|
84
|
-
JSON.stringify({
|
|
85
|
-
status: 'success',
|
|
86
|
-
data: 'Some message',
|
|
87
|
-
_meta: {},
|
|
88
|
-
})
|
|
89
|
-
);
|
|
90
|
-
|
|
91
|
-
app.debug = true;
|
|
92
|
-
});
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
describe('MiddlewareGroup: test errorHttpNoOutputResponseAfterHandler', () => {
|
|
96
|
-
it('should have no body without debug', async () => {
|
|
97
|
-
const handler = {
|
|
98
|
-
response: {},
|
|
99
|
-
event: {},
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
await errorHttpNoOutputResponseAfterHandler(handler, () => {}, {
|
|
103
|
-
error: new Error('Test validation error'),
|
|
104
|
-
});
|
|
105
|
-
expect(handler.response).toHaveProperty('statusCode', 200);
|
|
106
|
-
expect(handler.response).toHaveProperty('body', null);
|
|
107
|
-
});
|
|
108
|
-
|
|
109
|
-
it('should return the body when debug is enabled via query string parameters', async () => {
|
|
110
|
-
const handler = {
|
|
111
|
-
response: {},
|
|
112
|
-
event: {
|
|
113
|
-
queryStringParameters: {
|
|
114
|
-
debug: '1',
|
|
115
|
-
},
|
|
116
|
-
someEventKey: 'someEventValue',
|
|
117
|
-
},
|
|
118
|
-
};
|
|
119
|
-
|
|
120
|
-
await errorHttpNoOutputResponseAfterHandler(handler, () => {}, {
|
|
121
|
-
error: new Error('Test validation error'),
|
|
122
|
-
});
|
|
123
|
-
expect(handler.response).toHaveProperty('statusCode', 500);
|
|
124
|
-
expect(handler.response).toHaveProperty(
|
|
125
|
-
'body',
|
|
126
|
-
JSON.stringify({
|
|
127
|
-
status: 'error',
|
|
128
|
-
data: null,
|
|
129
|
-
error: {
|
|
130
|
-
code: 'UNHANDLED_ERROR',
|
|
131
|
-
message: 'Error: Test validation error',
|
|
132
|
-
details: '',
|
|
133
|
-
},
|
|
134
|
-
_meta: {
|
|
135
|
-
queryStringParameters: {
|
|
136
|
-
debug: '1',
|
|
137
|
-
},
|
|
138
|
-
someEventKey: 'someEventValue',
|
|
139
|
-
},
|
|
140
|
-
})
|
|
141
|
-
);
|
|
142
|
-
});
|
|
143
|
-
|
|
144
|
-
it('should have null body even when enabled when configuration has is disabled', async () => {
|
|
145
|
-
app.debug = false;
|
|
146
|
-
|
|
147
|
-
const handler = {
|
|
148
|
-
response: {},
|
|
149
|
-
event: {
|
|
150
|
-
queryStringParameters: {
|
|
151
|
-
debug: '1',
|
|
152
|
-
},
|
|
153
|
-
someEventKey: 'someEventValue',
|
|
154
|
-
},
|
|
155
|
-
};
|
|
156
|
-
|
|
157
|
-
await errorHttpNoOutputResponseAfterHandler(handler, () => {}, {
|
|
158
|
-
error: new Error('Test validation error'),
|
|
159
|
-
});
|
|
160
|
-
expect(handler.response).toHaveProperty('statusCode', 200);
|
|
161
|
-
expect(handler.response).toHaveProperty('body', null);
|
|
162
|
-
app.debug = true;
|
|
163
|
-
});
|
|
164
|
-
|
|
165
|
-
it('should return a response when allowResponse override is passed via options', async () => {
|
|
166
|
-
app.debug = false;
|
|
167
|
-
|
|
168
|
-
const handler = {
|
|
169
|
-
response: {},
|
|
170
|
-
event: {
|
|
171
|
-
queryStringParameters: {
|
|
172
|
-
debug: '1',
|
|
173
|
-
},
|
|
174
|
-
someEventKey: 'someEventValue',
|
|
175
|
-
},
|
|
176
|
-
};
|
|
177
|
-
|
|
178
|
-
await errorHttpNoOutputResponseAfterHandler(handler, () => {}, {
|
|
179
|
-
error: new Error('Test validation error'),
|
|
180
|
-
allowResponse: () => true,
|
|
181
|
-
});
|
|
182
|
-
expect(handler.response).toHaveProperty('statusCode', 500);
|
|
183
|
-
expect(handler.response).toHaveProperty(
|
|
184
|
-
'body',
|
|
185
|
-
JSON.stringify({
|
|
186
|
-
status: 'error',
|
|
187
|
-
data: null,
|
|
188
|
-
error: {
|
|
189
|
-
code: 'UNHANDLED_ERROR',
|
|
190
|
-
message: 'Error: Test validation error',
|
|
191
|
-
details: '',
|
|
192
|
-
},
|
|
193
|
-
_meta: {},
|
|
194
|
-
})
|
|
195
|
-
);
|
|
196
|
-
|
|
197
|
-
app.debug = false;
|
|
198
|
-
});
|
|
199
|
-
});
|
|
@@ -1,181 +0,0 @@
|
|
|
1
|
-
import app from 'Config/app'; // eslint-disable-line import/no-unresolved
|
|
2
|
-
import {
|
|
3
|
-
normalizeRequest,
|
|
4
|
-
normalizeHttpRequestBeforeHandler,
|
|
5
|
-
} from '../normalizeHttpRequestMiddleware';
|
|
6
|
-
import logger from '../../utils/logger';
|
|
7
|
-
|
|
8
|
-
describe('MiddlewareGroup: test normalizeRequest', () => {
|
|
9
|
-
it('test with default parameters', () => {
|
|
10
|
-
const data = normalizeRequest({ headers: null, qs: null, body: null });
|
|
11
|
-
expect(data).toBe(null);
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
it('test with empty parameters from alb', () => {
|
|
15
|
-
const data = normalizeRequest({ headers: null, qs: {}, body: null });
|
|
16
|
-
expect(data).toBe(null);
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
it('test with empty header parameters', () => {
|
|
20
|
-
const data = normalizeRequest({ headers: {}, qs: null, body: null });
|
|
21
|
-
expect(data).toBe(null);
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
it('test with valid query string', () => {
|
|
25
|
-
const data = normalizeRequest({
|
|
26
|
-
headers: {},
|
|
27
|
-
qs: { someKey: 'someValue', body: null },
|
|
28
|
-
});
|
|
29
|
-
expect(data).toMatchObject({ someKey: 'someValue' });
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
it('test with valid body and content-type', () => {
|
|
33
|
-
const data = normalizeRequest({
|
|
34
|
-
headers: { 'content-type': 'application/json' },
|
|
35
|
-
qs: null,
|
|
36
|
-
body: JSON.stringify({ someKey: 'someValue' }),
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
expect(data).toMatchObject({ someKey: 'someValue' });
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
it('test with valid body and Content-Type', () => {
|
|
43
|
-
const data = normalizeRequest({
|
|
44
|
-
headers: { 'Content-Type': 'application/json' },
|
|
45
|
-
qs: null,
|
|
46
|
-
body: JSON.stringify({ someKey: 'someValue' }),
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
expect(data).toMatchObject({ someKey: 'someValue' });
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
it('test with valid query string and body and Content-Type', () => {
|
|
53
|
-
const data = normalizeRequest({
|
|
54
|
-
headers: { 'Content-Type': 'application/json' },
|
|
55
|
-
qs: { someKeyQS: 'someValueQS' },
|
|
56
|
-
body: JSON.stringify({ someKeyBody: 'someValueBody' }),
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
expect(data).toMatchObject({
|
|
60
|
-
someKeyQS: 'someValueQS',
|
|
61
|
-
someKeyBody: 'someValueBody',
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
it('test with invalid body and valid Content-Type', () => {
|
|
66
|
-
expect(() => {
|
|
67
|
-
normalizeRequest({
|
|
68
|
-
headers: { 'Content-Type': 'application/json' },
|
|
69
|
-
qs: null,
|
|
70
|
-
body: {
|
|
71
|
-
someKey: 'someValue',
|
|
72
|
-
},
|
|
73
|
-
});
|
|
74
|
-
}).toThrow(
|
|
75
|
-
new Error('Content type defined as JSON but an invalid JSON was provided')
|
|
76
|
-
);
|
|
77
|
-
});
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
describe('MiddlewareGroup: test normalizeHttpRequestBeforeHandler', () => {
|
|
81
|
-
it('test with default parameters', () => {
|
|
82
|
-
const handler = {
|
|
83
|
-
event: {
|
|
84
|
-
headers: {},
|
|
85
|
-
queryStringParameters: null,
|
|
86
|
-
body: null,
|
|
87
|
-
},
|
|
88
|
-
};
|
|
89
|
-
|
|
90
|
-
normalizeHttpRequestBeforeHandler(handler, () => {});
|
|
91
|
-
expect(handler.event.input).toBe(null);
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
it('test with request context', () => {
|
|
95
|
-
const handler = {
|
|
96
|
-
event: {
|
|
97
|
-
headers: {},
|
|
98
|
-
requestContext: {
|
|
99
|
-
requestId: 'requestId',
|
|
100
|
-
},
|
|
101
|
-
},
|
|
102
|
-
};
|
|
103
|
-
|
|
104
|
-
normalizeHttpRequestBeforeHandler(handler, () => {});
|
|
105
|
-
});
|
|
106
|
-
|
|
107
|
-
it('should return auth.sub if Authorization exists', () => {
|
|
108
|
-
const handler = {
|
|
109
|
-
event: {
|
|
110
|
-
headers: {
|
|
111
|
-
Authorization:
|
|
112
|
-
'eyJraWQiOiIzSHc3YmRuUHBIMnJSZWhjT3k5NFRLZm5ybzU0Y1RFUW1lcGtVYWc2bW1vPSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiJmMmI1MzQ5ZC1mNWUzLTQ0ZjUtOWMwOC1hZTZiMDFlOTU0MzQiLCJhdWQiOiI0aHM0a2ZpNTAwZWtkajJhZTdiOWExazU4byIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiZXZlbnRfaWQiOiJlNzdiZGZmYy0wYjFjLTQzMzMtYWUxZS1lM2QwNjZkNzAyZGMiLCJ0b2tlbl91c2UiOiJpZCIsImF1dGhfdGltZSI6MTYxNTYxMTc3NywiaXNzIjoiaHR0cHM6XC9cL2NvZ25pdG8taWRwLmFwLXNvdXRoZWFzdC0xLmFtYXpvbmF3cy5jb21cL2FwLXNvdXRoZWFzdC0xXzR3QjFuSmNvSyIsImNvZ25pdG86dXNlcm5hbWUiOiJmMmI1MzQ5ZC1mNWUzLTQ0ZjUtOWMwOC1hZTZiMDFlOTU0MzQiLCJleHAiOjE2MTU2MTUzNzcsImlhdCI6MTYxNTYxMTc3NywiZW1haWwiOiJzdWZpeWFuK3Rlc3RAaW5jdWJlOC5zZyJ9.hbNYnVt6_fhX5KJEfn6Fi9cOZkQAldHGitVBWXSd0_YcWDU_BJ1OVu_VFEKzIvaRLR_zy2eW3dIJ27pn1_6U0sS8MZMsvtz0SKQP4M1hTEnhb5TOSIcOs9Y6ZPy1e1ShIqQmq2j_K1JFzEZH7u3eOmCTmFcs8X5vUk8O1sT2KqBP5UCBVB_4rCVEjbRGdyynqEKcdKkd7Nk6v9onpxRbG3FOg6vlsKSlfZ6RIz3jbjO4ZkCJiYAgrI7bsh2VGwE8pZq80GuQy9pocLkTcZiAFcni50-yvePQX8tkXhPzbp7DibAI6nU87Ol6TW4ZmB-0BZ56Nfeowoe7tT-7hvGkGA',
|
|
113
|
-
},
|
|
114
|
-
},
|
|
115
|
-
};
|
|
116
|
-
|
|
117
|
-
normalizeHttpRequestBeforeHandler(handler, () => {});
|
|
118
|
-
expect(handler.event.auth.sub).toBe('f2b5349d-f5e3-44f5-9c08-ae6b01e95434');
|
|
119
|
-
});
|
|
120
|
-
|
|
121
|
-
it.each`
|
|
122
|
-
version | tags
|
|
123
|
-
${'1.0'} | ${{ path: '/v1/path', httpMethod: 'GET' }}
|
|
124
|
-
${'2.0'} | ${{ path: '/v2/path', httpMethod: 'POST' }}
|
|
125
|
-
${'3.0'} | ${{ path: '/v2/path', httpMethod: 'POST' }}
|
|
126
|
-
`(
|
|
127
|
-
'should identify path and httpMethod based on version',
|
|
128
|
-
({ version, tags }) => {
|
|
129
|
-
const handler = {
|
|
130
|
-
event: {
|
|
131
|
-
version,
|
|
132
|
-
headers: {},
|
|
133
|
-
...tags,
|
|
134
|
-
requestContext: {
|
|
135
|
-
http: {
|
|
136
|
-
...tags,
|
|
137
|
-
method: tags.httpMethod,
|
|
138
|
-
},
|
|
139
|
-
},
|
|
140
|
-
},
|
|
141
|
-
};
|
|
142
|
-
normalizeHttpRequestBeforeHandler(handler, () => {});
|
|
143
|
-
expect(logger.meta.tags).toStrictEqual(tags);
|
|
144
|
-
}
|
|
145
|
-
);
|
|
146
|
-
|
|
147
|
-
it('should not set tags when using API Gateway v2 and requestContext is empty', () => {
|
|
148
|
-
const handler = {
|
|
149
|
-
event: {
|
|
150
|
-
version: '2.0',
|
|
151
|
-
headers: {},
|
|
152
|
-
},
|
|
153
|
-
};
|
|
154
|
-
|
|
155
|
-
normalizeHttpRequestBeforeHandler(handler, () => {});
|
|
156
|
-
expect(logger.meta.tags).toStrictEqual({});
|
|
157
|
-
});
|
|
158
|
-
|
|
159
|
-
it('should not set meta on debug', () => {
|
|
160
|
-
app.debug = true;
|
|
161
|
-
const handler = {
|
|
162
|
-
event: {
|
|
163
|
-
headers: {},
|
|
164
|
-
auth: '1',
|
|
165
|
-
queryStringParameters: {
|
|
166
|
-
foo: 'bar',
|
|
167
|
-
},
|
|
168
|
-
body: {
|
|
169
|
-
test: 'body',
|
|
170
|
-
},
|
|
171
|
-
},
|
|
172
|
-
};
|
|
173
|
-
|
|
174
|
-
normalizeHttpRequestBeforeHandler(handler, () => {});
|
|
175
|
-
expect(logger.meta.auth).toBe(handler.event.auth);
|
|
176
|
-
expect(logger.meta.queryStringParameters).toStrictEqual(
|
|
177
|
-
handler.event.queryStringParameters
|
|
178
|
-
);
|
|
179
|
-
expect(logger.meta.body).toStrictEqual(handler.event.body);
|
|
180
|
-
});
|
|
181
|
-
});
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
normalizeHandler,
|
|
3
|
-
disconnectConnections,
|
|
4
|
-
} from '../normalizeSQSMessageMiddleware';
|
|
5
|
-
|
|
6
|
-
describe('MiddlewareGroup: test normalizeRecords middleware', () => {
|
|
7
|
-
it('test without parameters', () => {
|
|
8
|
-
const data = normalizeHandler(undefined);
|
|
9
|
-
expect(data).toBe(null);
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
it('test with valid empty records', () => {
|
|
13
|
-
const data = normalizeHandler({});
|
|
14
|
-
expect(data).toBe(null);
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
it('test with valid SQS records', () => {
|
|
18
|
-
const data = normalizeHandler([
|
|
19
|
-
{
|
|
20
|
-
messageId: 'messageId',
|
|
21
|
-
receiptHandle: 'receiptHandle',
|
|
22
|
-
body: '{"data":{"testQueueKey":"testQueueValue"}}',
|
|
23
|
-
},
|
|
24
|
-
]);
|
|
25
|
-
expect(data).toMatchObject([
|
|
26
|
-
{
|
|
27
|
-
messageId: 'messageId',
|
|
28
|
-
receiptHandle: 'receiptHandle',
|
|
29
|
-
data: {
|
|
30
|
-
testQueueKey: 'testQueueValue',
|
|
31
|
-
},
|
|
32
|
-
},
|
|
33
|
-
]);
|
|
34
|
-
});
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
describe('MiddlewareGroup: test disconnectConnections db middleware', () => {
|
|
38
|
-
it('should not call db.end() whenever a db options is not present', async () => {
|
|
39
|
-
const end = jest.fn().mockResolvedValue();
|
|
40
|
-
await disconnectConnections();
|
|
41
|
-
|
|
42
|
-
expect(end).toHaveBeenCalledTimes(0);
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
it('should not call db.end() whenever a db options is not set', async () => {
|
|
46
|
-
const end = jest.fn().mockResolvedValue();
|
|
47
|
-
await disconnectConnections({ db: {} });
|
|
48
|
-
|
|
49
|
-
expect(end).toHaveBeenCalledTimes(0);
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
it('should call db.end() whenever a db options is set', async () => {
|
|
53
|
-
const end = jest.fn().mockResolvedValue();
|
|
54
|
-
await disconnectConnections({
|
|
55
|
-
db: {
|
|
56
|
-
end,
|
|
57
|
-
},
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
expect(end).toHaveBeenCalledTimes(1);
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
it('should return exception if failure is detected', async () => {
|
|
64
|
-
const end = jest.fn().mockImplementationOnce(() => {
|
|
65
|
-
throw new Error('Test Error');
|
|
66
|
-
});
|
|
67
|
-
await disconnectConnections({
|
|
68
|
-
db: {
|
|
69
|
-
end,
|
|
70
|
-
},
|
|
71
|
-
});
|
|
72
|
-
});
|
|
73
|
-
});
|
|
74
|
-
|
|
75
|
-
describe('MiddlewareGroup: test disconnectConnections dbRead middleware', () => {
|
|
76
|
-
it('should not call dbRead.end() whenever a dbRead options is not set', async () => {
|
|
77
|
-
const end = jest.fn().mockResolvedValue();
|
|
78
|
-
await disconnectConnections({ dbRead: {} });
|
|
79
|
-
|
|
80
|
-
expect(end).toHaveBeenCalledTimes(0);
|
|
81
|
-
});
|
|
82
|
-
|
|
83
|
-
it('should not call anything whenever no options is passed', async () => {
|
|
84
|
-
const end = jest.fn().mockResolvedValue();
|
|
85
|
-
await disconnectConnections();
|
|
86
|
-
|
|
87
|
-
expect(end).toHaveBeenCalledTimes(0);
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
it('should call dbRead.end() whenever a dbRead options is set', async () => {
|
|
91
|
-
const end = jest.fn().mockResolvedValue();
|
|
92
|
-
await disconnectConnections({
|
|
93
|
-
dbRead: {
|
|
94
|
-
end,
|
|
95
|
-
},
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
expect(end).toHaveBeenCalledTimes(1);
|
|
99
|
-
});
|
|
100
|
-
});
|
|
101
|
-
|
|
102
|
-
describe('MiddlewareGroup: test disconnectConnections cache middleware', () => {
|
|
103
|
-
it('should not call cache.end() whenever a cache options is not set', async () => {
|
|
104
|
-
const cache = jest.fn().mockResolvedValue();
|
|
105
|
-
await disconnectConnections({ cache: {} });
|
|
106
|
-
|
|
107
|
-
expect(cache).toHaveBeenCalledTimes(0);
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
it('should call cache.end() whenever a cache options is set', async () => {
|
|
111
|
-
const end = jest.fn().mockResolvedValue();
|
|
112
|
-
await disconnectConnections({
|
|
113
|
-
cache: {
|
|
114
|
-
end,
|
|
115
|
-
},
|
|
116
|
-
});
|
|
117
|
-
|
|
118
|
-
expect(end).toHaveBeenCalledTimes(1);
|
|
119
|
-
});
|
|
120
|
-
});
|