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.
Files changed (318) hide show
  1. package/README.md +5 -4
  2. package/bin/lesgo-scripts.sh +52 -7
  3. package/dist/config/app.d.ts +7 -0
  4. package/dist/config/app.js +9 -0
  5. package/dist/config/aws.d.ts +5 -0
  6. package/dist/config/aws.js +4 -0
  7. package/dist/config/basicAuth.d.ts +7 -0
  8. package/dist/config/basicAuth.js +8 -0
  9. package/dist/config/crypto.d.ts +10 -0
  10. package/dist/config/crypto.js +9 -0
  11. package/dist/config/dynamodb.d.ts +8 -0
  12. package/dist/config/dynamodb.js +14 -0
  13. package/dist/config/elasticache.d.ts +7 -0
  14. package/dist/config/elasticache.js +6 -0
  15. package/dist/config/index.d.ts +11 -0
  16. package/dist/config/index.js +11 -0
  17. package/dist/config/jwt.d.ts +12 -0
  18. package/dist/config/jwt.js +16 -0
  19. package/dist/config/rds.d.ts +12 -0
  20. package/dist/config/rds.js +13 -0
  21. package/dist/config/s3.d.ts +5 -0
  22. package/dist/config/s3.js +5 -0
  23. package/dist/config/secretsManager.d.ts +4 -0
  24. package/dist/config/secretsManager.js +4 -0
  25. package/dist/config/sqs.d.ts +9 -0
  26. package/dist/config/sqs.js +18 -0
  27. package/dist/exceptions/LesgoException.d.ts +6 -0
  28. package/{src → dist}/exceptions/LesgoException.js +5 -4
  29. package/dist/exceptions/index.d.ts +1 -0
  30. package/dist/exceptions/index.js +1 -0
  31. package/dist/middlewares/disconnectMiddleware.d.ts +8 -0
  32. package/dist/middlewares/disconnectMiddleware.js +78 -0
  33. package/dist/middlewares/httpMiddleware.d.ts +12 -0
  34. package/dist/middlewares/httpMiddleware.js +74 -0
  35. package/dist/middlewares/httpResponseMiddleware.d.ts +7 -0
  36. package/dist/middlewares/httpResponseMiddleware.js +128 -0
  37. package/dist/middlewares/index.d.ts +7 -0
  38. package/dist/middlewares/index.js +7 -0
  39. package/dist/middlewares/invokeCommandMiddleware.d.ts +12 -0
  40. package/dist/middlewares/invokeCommandMiddleware.js +70 -0
  41. package/dist/middlewares/sqsMiddleware.d.ts +10 -0
  42. package/dist/middlewares/sqsMiddleware.js +70 -0
  43. package/dist/middlewares/verifyBasicAuthMiddleware.d.ts +8 -0
  44. package/dist/middlewares/verifyBasicAuthMiddleware.js +59 -0
  45. package/dist/middlewares/verifyJwtMiddleware.d.ts +6 -0
  46. package/dist/middlewares/verifyJwtMiddleware.js +37 -0
  47. package/dist/services/DynamoDbService/deleteRecord.d.ts +8 -0
  48. package/dist/services/DynamoDbService/deleteRecord.js +69 -0
  49. package/dist/services/DynamoDbService/getClient.d.ts +7 -0
  50. package/dist/services/DynamoDbService/getClient.js +30 -0
  51. package/dist/services/DynamoDbService/getTableName.d.ts +2 -0
  52. package/dist/services/DynamoDbService/getTableName.js +15 -0
  53. package/dist/services/DynamoDbService/index.d.ts +6 -0
  54. package/dist/services/DynamoDbService/index.js +6 -0
  55. package/dist/services/DynamoDbService/putRecord.d.ts +8 -0
  56. package/dist/services/DynamoDbService/putRecord.js +64 -0
  57. package/dist/services/DynamoDbService/query.d.ts +7 -0
  58. package/dist/services/DynamoDbService/query.js +78 -0
  59. package/dist/services/DynamoDbService/scan.d.ts +7 -0
  60. package/dist/services/DynamoDbService/scan.js +60 -0
  61. package/dist/services/DynamoDbService/updateRecord.d.ts +9 -0
  62. package/dist/services/DynamoDbService/updateRecord.js +89 -0
  63. package/dist/services/ElastiCacheRedisService/deleteRedisCache.d.ts +3 -0
  64. package/dist/services/ElastiCacheRedisService/deleteRedisCache.js +62 -0
  65. package/dist/services/ElastiCacheRedisService/disconnectElastiCacheRedisClient.d.ts +11 -0
  66. package/dist/services/ElastiCacheRedisService/disconnectElastiCacheRedisClient.js +69 -0
  67. package/dist/services/ElastiCacheRedisService/getElastiCacheRedisClient.d.ts +12 -0
  68. package/dist/services/ElastiCacheRedisService/getElastiCacheRedisClient.js +114 -0
  69. package/dist/services/ElastiCacheRedisService/getRedisCache.d.ts +3 -0
  70. package/dist/services/ElastiCacheRedisService/getRedisCache.js +70 -0
  71. package/dist/services/ElastiCacheRedisService/index.d.ts +5 -0
  72. package/dist/services/ElastiCacheRedisService/index.js +5 -0
  73. package/dist/services/ElastiCacheRedisService/setRedisCache.d.ts +6 -0
  74. package/dist/services/ElastiCacheRedisService/setRedisCache.js +77 -0
  75. package/dist/services/JWTService/decodeJwt.d.ts +7 -0
  76. package/dist/services/JWTService/decodeJwt.js +9 -0
  77. package/dist/services/JWTService/getJwtSecret.d.ts +13 -0
  78. package/dist/services/JWTService/getJwtSecret.js +54 -0
  79. package/dist/services/JWTService/index.d.ts +2 -0
  80. package/dist/services/JWTService/index.js +2 -0
  81. package/dist/services/JWTService/sign.d.ts +3 -0
  82. package/dist/services/JWTService/sign.js +31 -0
  83. package/dist/services/JWTService/verify.d.ts +7 -0
  84. package/dist/services/JWTService/verify.js +61 -0
  85. package/dist/services/LoggerService.d.ts +46 -0
  86. package/{src → dist}/services/LoggerService.js +36 -60
  87. package/dist/services/RDSAuroraMySQLProxyService/disconnectMySQLProxyClient.d.ts +2 -0
  88. package/dist/services/RDSAuroraMySQLProxyService/disconnectMySQLProxyClient.js +60 -0
  89. package/dist/services/RDSAuroraMySQLProxyService/getMySQLProxyClient.d.ts +8 -0
  90. package/dist/services/RDSAuroraMySQLProxyService/getMySQLProxyClient.js +87 -0
  91. package/dist/services/RDSAuroraMySQLProxyService/index.d.ts +3 -0
  92. package/dist/services/RDSAuroraMySQLProxyService/index.js +3 -0
  93. package/dist/services/RDSAuroraMySQLProxyService/query.d.ts +4 -0
  94. package/dist/services/RDSAuroraMySQLProxyService/query.js +63 -0
  95. package/dist/services/S3Service/getClient.d.ts +4 -0
  96. package/dist/services/S3Service/getClient.js +28 -0
  97. package/dist/services/S3Service/getDownloadSignedUrl.d.ts +7 -0
  98. package/dist/services/S3Service/getDownloadSignedUrl.js +58 -0
  99. package/dist/services/S3Service/getHeadObject.d.ts +13 -0
  100. package/dist/services/S3Service/getHeadObject.js +83 -0
  101. package/dist/services/S3Service/getObject.d.ts +10 -0
  102. package/dist/services/S3Service/getObject.js +89 -0
  103. package/dist/services/S3Service/getUploadSignedUrl.d.ts +7 -0
  104. package/dist/services/S3Service/getUploadSignedUrl.js +61 -0
  105. package/dist/services/S3Service/index.d.ts +6 -0
  106. package/dist/services/S3Service/index.js +6 -0
  107. package/dist/services/S3Service/putObject.d.ts +9 -0
  108. package/dist/services/S3Service/putObject.js +77 -0
  109. package/dist/services/SQSService/deleteMessage.d.ts +9 -0
  110. package/dist/services/SQSService/deleteMessage.js +69 -0
  111. package/dist/services/SQSService/dispatch.d.ts +9 -0
  112. package/dist/services/SQSService/dispatch.js +71 -0
  113. package/dist/services/SQSService/getClient.d.ts +4 -0
  114. package/dist/services/SQSService/getClient.js +28 -0
  115. package/dist/services/SQSService/getQueueUrl.d.ts +7 -0
  116. package/dist/services/SQSService/getQueueUrl.js +25 -0
  117. package/dist/services/SQSService/index.d.ts +4 -0
  118. package/dist/services/SQSService/index.js +4 -0
  119. package/dist/services/SQSService/receiveMessages.d.ts +8 -0
  120. package/dist/services/SQSService/receiveMessages.js +65 -0
  121. package/dist/services/SecretsManagerService/getClient.d.ts +7 -0
  122. package/dist/services/SecretsManagerService/getClient.js +28 -0
  123. package/dist/services/SecretsManagerService/getSecretValue.d.ts +7 -0
  124. package/dist/services/SecretsManagerService/getSecretValue.js +65 -0
  125. package/dist/services/SecretsManagerService/index.d.ts +2 -0
  126. package/dist/services/SecretsManagerService/index.js +2 -0
  127. package/dist/services/index.d.ts +1 -0
  128. package/dist/services/index.js +1 -0
  129. package/dist/types/aws.d.ts +8 -0
  130. package/dist/types/aws.js +1 -0
  131. package/dist/utils/cache/redis/deleteCache.d.ts +19 -0
  132. package/dist/utils/cache/redis/deleteCache.js +21 -0
  133. package/dist/utils/cache/redis/getCache.d.ts +22 -0
  134. package/dist/utils/cache/redis/getCache.js +24 -0
  135. package/dist/utils/cache/redis/getClient.d.ts +30 -0
  136. package/dist/utils/cache/redis/getClient.js +32 -0
  137. package/dist/utils/cache/redis/index.d.ts +4 -0
  138. package/dist/utils/cache/redis/index.js +4 -0
  139. package/dist/utils/cache/redis/setCache.d.ts +25 -0
  140. package/dist/utils/cache/redis/setCache.js +26 -0
  141. package/dist/utils/crypto/decrypt.d.ts +33 -0
  142. package/dist/utils/crypto/decrypt.js +59 -0
  143. package/dist/utils/crypto/encrypt.d.ts +31 -0
  144. package/dist/utils/crypto/encrypt.js +41 -0
  145. package/dist/utils/crypto/hash.d.ts +31 -0
  146. package/dist/utils/crypto/hash.js +56 -0
  147. package/dist/utils/crypto/index.d.ts +3 -0
  148. package/dist/utils/crypto/index.js +3 -0
  149. package/dist/utils/crypto/validateEncryptionFields.d.ts +19 -0
  150. package/dist/utils/crypto/validateEncryptionFields.js +71 -0
  151. package/dist/utils/db/mysql/proxy/disconnect.d.ts +2 -0
  152. package/dist/utils/db/mysql/proxy/disconnect.js +5 -0
  153. package/dist/utils/db/mysql/proxy/disconnectDb.d.ts +2 -0
  154. package/dist/utils/db/mysql/proxy/disconnectDb.js +5 -0
  155. package/dist/utils/db/mysql/proxy/getClient.d.ts +4 -0
  156. package/dist/utils/db/mysql/proxy/getClient.js +5 -0
  157. package/dist/utils/db/mysql/proxy/index.d.ts +3 -0
  158. package/dist/utils/db/mysql/proxy/index.js +3 -0
  159. package/dist/utils/db/mysql/proxy/query.d.ts +4 -0
  160. package/dist/utils/db/mysql/proxy/query.js +45 -0
  161. package/dist/utils/dynamodb/deleteRecord.d.ts +5 -0
  162. package/dist/utils/dynamodb/deleteRecord.js +39 -0
  163. package/dist/utils/dynamodb/getClient.d.ts +3 -0
  164. package/dist/utils/dynamodb/getClient.js +5 -0
  165. package/dist/utils/dynamodb/index.d.ts +6 -0
  166. package/dist/utils/dynamodb/index.js +6 -0
  167. package/dist/utils/dynamodb/putRecord.d.ts +4 -0
  168. package/dist/utils/dynamodb/putRecord.js +39 -0
  169. package/dist/utils/dynamodb/query.d.ts +5 -0
  170. package/dist/utils/dynamodb/query.js +52 -0
  171. package/dist/utils/dynamodb/scan.d.ts +4 -0
  172. package/dist/utils/dynamodb/scan.js +40 -0
  173. package/dist/utils/dynamodb/updateRecord.d.ts +5 -0
  174. package/dist/utils/dynamodb/updateRecord.js +53 -0
  175. package/dist/utils/formatUnixTimestamp.d.ts +8 -0
  176. package/dist/utils/formatUnixTimestamp.js +17 -0
  177. package/dist/utils/generateUid.d.ts +13 -0
  178. package/{src → dist}/utils/generateUid.js +9 -4
  179. package/dist/utils/getCurrentDatetime.d.ts +2 -0
  180. package/dist/utils/getCurrentDatetime.js +4 -0
  181. package/dist/utils/getCurrentTimestamp.d.ts +7 -0
  182. package/dist/utils/getCurrentTimestamp.js +9 -0
  183. package/dist/utils/getJwtSubFromAuthHeader.d.ts +9 -0
  184. package/dist/utils/getJwtSubFromAuthHeader.js +24 -0
  185. package/dist/utils/index.d.ts +9 -0
  186. package/dist/utils/index.js +9 -0
  187. package/dist/utils/isDecimal.d.ts +8 -0
  188. package/dist/utils/isDecimal.js +9 -0
  189. package/dist/utils/isEmail.d.ts +9 -0
  190. package/{src → dist}/utils/isEmail.js +9 -4
  191. package/dist/utils/isEmpty.d.ts +8 -0
  192. package/dist/utils/isEmpty.js +19 -0
  193. package/dist/utils/jwt/index.d.ts +2 -0
  194. package/dist/utils/jwt/index.js +2 -0
  195. package/dist/utils/jwt/sign.d.ts +3 -0
  196. package/dist/utils/jwt/sign.js +5 -0
  197. package/dist/utils/jwt/verify.d.ts +3 -0
  198. package/dist/utils/jwt/verify.js +12 -0
  199. package/dist/utils/logger.d.ts +20 -0
  200. package/dist/utils/logger.js +38 -0
  201. package/dist/utils/s3/getClient.d.ts +3 -0
  202. package/dist/utils/s3/getClient.js +5 -0
  203. package/dist/utils/s3/getDownloadSignedUrl.d.ts +5 -0
  204. package/dist/utils/s3/getDownloadSignedUrl.js +39 -0
  205. package/dist/utils/s3/getHeadObject.d.ts +10 -0
  206. package/dist/utils/s3/getHeadObject.js +39 -0
  207. package/dist/utils/s3/getObject.d.ts +13 -0
  208. package/dist/utils/s3/getObject.js +51 -0
  209. package/dist/utils/s3/getUploadSignedUrl.d.ts +5 -0
  210. package/dist/utils/s3/getUploadSignedUrl.js +39 -0
  211. package/dist/utils/s3/index.d.ts +6 -0
  212. package/dist/utils/s3/index.js +6 -0
  213. package/dist/utils/s3/putObject.d.ts +5 -0
  214. package/dist/utils/s3/putObject.js +39 -0
  215. package/dist/utils/secretsmanager/getClient.d.ts +3 -0
  216. package/dist/utils/secretsmanager/getClient.js +5 -0
  217. package/dist/utils/secretsmanager/getSecretValue.d.ts +4 -0
  218. package/dist/utils/secretsmanager/getSecretValue.js +68 -0
  219. package/dist/utils/secretsmanager/index.d.ts +2 -0
  220. package/dist/utils/secretsmanager/index.js +2 -0
  221. package/dist/utils/sqs/deleteMessage.d.ts +5 -0
  222. package/dist/utils/sqs/deleteMessage.js +39 -0
  223. package/dist/utils/sqs/dispatch.d.ts +5 -0
  224. package/dist/utils/sqs/dispatch.js +39 -0
  225. package/dist/utils/sqs/getClient.d.ts +3 -0
  226. package/dist/utils/sqs/getClient.js +5 -0
  227. package/dist/utils/sqs/index.d.ts +4 -0
  228. package/dist/utils/sqs/index.js +4 -0
  229. package/dist/utils/sqs/receiveMessages.d.ts +5 -0
  230. package/dist/utils/sqs/receiveMessages.js +39 -0
  231. package/dist/utils/validateFields.d.ts +22 -0
  232. package/{src → dist}/utils/validateFields.js +13 -19
  233. package/package.json +145 -34
  234. package/CHANGELOG.md +0 -9
  235. package/src/exceptions/__tests__/LesgoException.spec.js +0 -24
  236. package/src/exceptions/index.js +0 -4
  237. package/src/index.js +0 -4
  238. package/src/middlewares/__mocks__/ValidationErrorException.js +0 -18
  239. package/src/middlewares/__tests__/basicAuthMiddleware.spec.js +0 -225
  240. package/src/middlewares/__tests__/clientAuthMiddleware.spec.js +0 -137
  241. package/src/middlewares/__tests__/errorHttpResponseMiddleware.spec.js +0 -190
  242. package/src/middlewares/__tests__/gzipHttpResponse.spec.js +0 -185
  243. package/src/middlewares/__tests__/httpNoOutputMiddleware.spec.js +0 -199
  244. package/src/middlewares/__tests__/normalizeHttpRequestMiddleware.spec.js +0 -181
  245. package/src/middlewares/__tests__/normalizeSQSMessageMiddleware.spec.js +0 -120
  246. package/src/middlewares/__tests__/serverAuthMiddleware.spec.js +0 -170
  247. package/src/middlewares/__tests__/successHttpResponseMiddleware.spec.js +0 -159
  248. package/src/middlewares/__tests__/verifyJwtMiddleware.spec.js +0 -222
  249. package/src/middlewares/basicAuthMiddleware.js +0 -145
  250. package/src/middlewares/clientAuthMiddleware.js +0 -82
  251. package/src/middlewares/errorHttpResponseMiddleware.js +0 -99
  252. package/src/middlewares/gzipHttpResponse.js +0 -98
  253. package/src/middlewares/httpMiddleware.js +0 -19
  254. package/src/middlewares/httpNoOutputMiddleware.js +0 -87
  255. package/src/middlewares/index.js +0 -15
  256. package/src/middlewares/normalizeHttpRequestMiddleware.js +0 -101
  257. package/src/middlewares/normalizeSQSMessageMiddleware.js +0 -67
  258. package/src/middlewares/serverAuthMiddleware.js +0 -29
  259. package/src/middlewares/successHttpResponseMiddleware.js +0 -83
  260. package/src/middlewares/verifyJwtMiddleware.js +0 -62
  261. package/src/services/AuroraDbRDSProxyService.js +0 -182
  262. package/src/services/AuroraDbService.js +0 -111
  263. package/src/services/DynamoDbService.js +0 -177
  264. package/src/services/ElastiCacheService.js +0 -17
  265. package/src/services/ElasticsearchService.js +0 -181
  266. package/src/services/FirebaseAdminService.js +0 -108
  267. package/src/services/JwtService.js +0 -52
  268. package/src/services/S3Service.js +0 -59
  269. package/src/services/SQSService.js +0 -65
  270. package/src/services/__tests__/AuroraDbRDSProxyService.spec.js +0 -278
  271. package/src/services/__tests__/AuroraDbService.spec.js +0 -211
  272. package/src/services/__tests__/AwsElasticsearchConnection.spec.js +0 -89
  273. package/src/services/__tests__/DynamoDbService.spec.js +0 -314
  274. package/src/services/__tests__/ElasticsearchService.spec.js +0 -201
  275. package/src/services/__tests__/FirebaseAdminService.spec.js +0 -356
  276. package/src/services/__tests__/JwtService.spec.js +0 -35
  277. package/src/services/__tests__/LengthAwarePaginator.spec.js +0 -223
  278. package/src/services/__tests__/LoggerService.spec.js +0 -252
  279. package/src/services/__tests__/Paginator.spec.js +0 -383
  280. package/src/services/__tests__/S3Service.spec.js +0 -55
  281. package/src/services/__tests__/SQSService.spec.js +0 -47
  282. package/src/services/__tests__/SignedRequest.spec.js +0 -103
  283. package/src/services/aws/AwsElasticsearchConnection.js +0 -59
  284. package/src/services/aws/SignedRequest.js +0 -158
  285. package/src/services/index.js +0 -19
  286. package/src/services/pagination/LengthAwarePaginator.js +0 -49
  287. package/src/services/pagination/Paginator.js +0 -260
  288. package/src/utils/__mocks__/db.js +0 -109
  289. package/src/utils/__tests__/cache.spec.js +0 -131
  290. package/src/utils/__tests__/crypto.spec.js +0 -122
  291. package/src/utils/__tests__/db.spec.js +0 -70
  292. package/src/utils/__tests__/dynamodb.spec.js +0 -27
  293. package/src/utils/__tests__/elasticsearch.spec.js +0 -43
  294. package/src/utils/__tests__/generateUid.spec.js +0 -36
  295. package/src/utils/__tests__/getJwtSubFromAuthHeader.spec.js +0 -20
  296. package/src/utils/__tests__/isDecimal.spec.js +0 -12
  297. package/src/utils/__tests__/isEmail.spec.js +0 -28
  298. package/src/utils/__tests__/isEmpty.spec.js +0 -31
  299. package/src/utils/__tests__/logger.spec.js +0 -11
  300. package/src/utils/__tests__/objectStore.spec.js +0 -67
  301. package/src/utils/__tests__/prepSQLInsertParams.spec.js +0 -46
  302. package/src/utils/__tests__/prepSQLUpdateParams.spec.js +0 -36
  303. package/src/utils/__tests__/queue.spec.js +0 -54
  304. package/src/utils/__tests__/validateFields.spec.js +0 -374
  305. package/src/utils/cache.js +0 -215
  306. package/src/utils/crypto.js +0 -77
  307. package/src/utils/db.js +0 -17
  308. package/src/utils/dynamodb.js +0 -6
  309. package/src/utils/elasticsearch.js +0 -20
  310. package/src/utils/getJwtSubFromAuthHeader.js +0 -18
  311. package/src/utils/index.js +0 -26
  312. package/src/utils/isDecimal.js +0 -2
  313. package/src/utils/isEmpty.js +0 -6
  314. package/src/utils/logger.js +0 -25
  315. package/src/utils/objectStore.js +0 -11
  316. package/src/utils/prepSQLInsertParams.js +0 -21
  317. package/src/utils/prepSQLUpdateParams.js +0 -25
  318. 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
- });