lesgo 1.0.0 → 2.1.1

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 (315) hide show
  1. package/README.md +5 -4
  2. package/bin/lesgo-scripts.sh +4 -4
  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 +29 -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/src/exceptions/__tests__/LesgoException.spec.js +0 -24
  235. package/src/exceptions/index.js +0 -4
  236. package/src/index.js +0 -4
  237. package/src/middlewares/__mocks__/ValidationErrorException.js +0 -18
  238. package/src/middlewares/__tests__/basicAuthMiddleware.spec.js +0 -264
  239. package/src/middlewares/__tests__/clientAuthMiddleware.spec.js +0 -235
  240. package/src/middlewares/__tests__/errorHttpResponseMiddleware.spec.js +0 -203
  241. package/src/middlewares/__tests__/gzipHttpResponse.spec.js +0 -185
  242. package/src/middlewares/__tests__/httpNoOutputMiddleware.spec.js +0 -201
  243. package/src/middlewares/__tests__/normalizeHttpRequestMiddleware.spec.js +0 -181
  244. package/src/middlewares/__tests__/normalizeSQSMessageMiddleware.spec.js +0 -120
  245. package/src/middlewares/__tests__/successHttpResponseMiddleware.spec.js +0 -172
  246. package/src/middlewares/__tests__/verifyJwtMiddleware.spec.js +0 -297
  247. package/src/middlewares/basicAuthMiddleware.js +0 -125
  248. package/src/middlewares/clientAuthMiddleware.js +0 -103
  249. package/src/middlewares/errorHttpResponseMiddleware.js +0 -101
  250. package/src/middlewares/gzipHttpResponse.js +0 -98
  251. package/src/middlewares/httpMiddleware.js +0 -19
  252. package/src/middlewares/httpNoOutputMiddleware.js +0 -91
  253. package/src/middlewares/index.js +0 -19
  254. package/src/middlewares/normalizeHttpRequestMiddleware.js +0 -101
  255. package/src/middlewares/normalizeSQSMessageMiddleware.js +0 -67
  256. package/src/middlewares/successHttpResponseMiddleware.js +0 -85
  257. package/src/middlewares/verifyJwtMiddleware.js +0 -73
  258. package/src/services/AuroraDbRDSProxyService.js +0 -182
  259. package/src/services/AuroraDbService.js +0 -111
  260. package/src/services/DynamoDbService.js +0 -177
  261. package/src/services/ElastiCacheService.js +0 -17
  262. package/src/services/ElasticsearchService.js +0 -181
  263. package/src/services/FirebaseAdminService.js +0 -108
  264. package/src/services/JwtService.js +0 -52
  265. package/src/services/S3Service.js +0 -59
  266. package/src/services/SQSService.js +0 -65
  267. package/src/services/__tests__/AuroraDbRDSProxyService.spec.js +0 -278
  268. package/src/services/__tests__/AuroraDbService.spec.js +0 -211
  269. package/src/services/__tests__/AwsElasticsearchConnection.spec.js +0 -89
  270. package/src/services/__tests__/DynamoDbService.spec.js +0 -314
  271. package/src/services/__tests__/ElasticsearchService.spec.js +0 -201
  272. package/src/services/__tests__/FirebaseAdminService.spec.js +0 -356
  273. package/src/services/__tests__/JwtService.spec.js +0 -35
  274. package/src/services/__tests__/LengthAwarePaginator.spec.js +0 -223
  275. package/src/services/__tests__/LoggerService.spec.js +0 -267
  276. package/src/services/__tests__/Paginator.spec.js +0 -383
  277. package/src/services/__tests__/S3Service.spec.js +0 -55
  278. package/src/services/__tests__/SQSService.spec.js +0 -47
  279. package/src/services/__tests__/SignedRequest.spec.js +0 -103
  280. package/src/services/aws/AwsElasticsearchConnection.js +0 -59
  281. package/src/services/aws/SignedRequest.js +0 -158
  282. package/src/services/index.js +0 -19
  283. package/src/services/pagination/LengthAwarePaginator.js +0 -49
  284. package/src/services/pagination/Paginator.js +0 -260
  285. package/src/utils/__mocks__/db.js +0 -109
  286. package/src/utils/__tests__/cache.spec.js +0 -131
  287. package/src/utils/__tests__/crypto.spec.js +0 -122
  288. package/src/utils/__tests__/db.spec.js +0 -70
  289. package/src/utils/__tests__/dynamodb.spec.js +0 -27
  290. package/src/utils/__tests__/elasticsearch.spec.js +0 -43
  291. package/src/utils/__tests__/generateUid.spec.js +0 -36
  292. package/src/utils/__tests__/getJwtSubFromAuthHeader.spec.js +0 -20
  293. package/src/utils/__tests__/isDecimal.spec.js +0 -12
  294. package/src/utils/__tests__/isEmail.spec.js +0 -28
  295. package/src/utils/__tests__/isEmpty.spec.js +0 -31
  296. package/src/utils/__tests__/logger.spec.js +0 -11
  297. package/src/utils/__tests__/objectStore.spec.js +0 -67
  298. package/src/utils/__tests__/prepSQLInsertParams.spec.js +0 -46
  299. package/src/utils/__tests__/prepSQLUpdateParams.spec.js +0 -36
  300. package/src/utils/__tests__/queue.spec.js +0 -54
  301. package/src/utils/__tests__/validateFields.spec.js +0 -374
  302. package/src/utils/cache.js +0 -215
  303. package/src/utils/crypto.js +0 -77
  304. package/src/utils/db.js +0 -17
  305. package/src/utils/dynamodb.js +0 -6
  306. package/src/utils/elasticsearch.js +0 -20
  307. package/src/utils/getJwtSubFromAuthHeader.js +0 -18
  308. package/src/utils/index.js +0 -26
  309. package/src/utils/isDecimal.js +0 -2
  310. package/src/utils/isEmpty.js +0 -6
  311. package/src/utils/logger.js +0 -25
  312. package/src/utils/objectStore.js +0 -11
  313. package/src/utils/prepSQLInsertParams.js +0 -21
  314. package/src/utils/prepSQLUpdateParams.js +0 -25
  315. package/src/utils/queue.js +0 -11
@@ -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
- });
@@ -1,172 +0,0 @@
1
- import {
2
- successHttpResponseHandler,
3
- successHttpResponseAfterHandler,
4
- } from '../successHttpResponseMiddleware';
5
-
6
- describe('MiddlewareGroup: test successHttpResponseHandler middleware', () => {
7
- it('test default without parameters', async () => {
8
- const data = await successHttpResponseHandler();
9
-
10
- expect(data.headers['Access-Control-Allow-Origin']).toBe('*');
11
- expect(data.headers['Cache-Control']).toBe('no-cache');
12
-
13
- expect(data.statusCode).toBe(200);
14
-
15
- expect(typeof data.body).toBe('string');
16
-
17
- const dataBody = JSON.parse(data.body);
18
- expect(dataBody).toHaveProperty('status', 'success');
19
- expect(dataBody).toHaveProperty('data', '');
20
- expect(dataBody).toHaveProperty('_meta', {});
21
- });
22
-
23
- it('test default', async () => {
24
- const data = await successHttpResponseHandler({ response: 'Some message' });
25
-
26
- expect(data.headers['Access-Control-Allow-Origin']).toBe('*');
27
- expect(data.headers['Cache-Control']).toBe('no-cache');
28
-
29
- expect(data.statusCode).toBe(200);
30
-
31
- expect(typeof data.body).toBe('string');
32
-
33
- const dataBody = JSON.parse(data.body);
34
- expect(dataBody).toHaveProperty('status', 'success');
35
- expect(dataBody).toHaveProperty('data', 'Some message');
36
- expect(dataBody).toHaveProperty('_meta', {});
37
- });
38
-
39
- it('test with status code and event', async () => {
40
- const data = await successHttpResponseHandler({
41
- response: 'Some message',
42
- statusCode: 201,
43
- event: {
44
- someEventKey: 'someEventValue',
45
- },
46
- });
47
-
48
- expect(data.statusCode).toBe(201);
49
-
50
- const dataBody = JSON.parse(data.body);
51
- expect(dataBody).toHaveProperty('status', 'success');
52
- expect(dataBody).toHaveProperty('data', 'Some message');
53
- expect(dataBody).toHaveProperty('_meta', {});
54
- });
55
-
56
- it('test with status code and event in debug mode', async () => {
57
- const data = await successHttpResponseHandler({
58
- response: 'Some message',
59
- statusCode: 201,
60
- event: {
61
- someEventKey: 'someEventValue',
62
- },
63
- debugMode: true,
64
- });
65
-
66
- expect(data.statusCode).toBe(201);
67
-
68
- const dataBody = JSON.parse(data.body);
69
- expect(dataBody).toHaveProperty('status', 'success');
70
- expect(dataBody).toHaveProperty('data', 'Some message');
71
- expect(dataBody).toHaveProperty('_meta', {
72
- someEventKey: 'someEventValue',
73
- });
74
- });
75
-
76
- it('test with formatSuccess argument', async () => {
77
- const data = await successHttpResponseHandler({
78
- response: 'Some message',
79
- formatSuccess: options => {
80
- return options.response;
81
- },
82
- });
83
-
84
- expect(data.statusCode).toBe(200);
85
-
86
- expect(data.body).toBe('Some message');
87
- });
88
-
89
- it('test with configurable header', async () => {
90
- const data = await successHttpResponseHandler({
91
- response: 'Some message',
92
- headers: {
93
- 'Access-Control-Allow-Credentials': false,
94
- 'X-Token-Id': 'token',
95
- },
96
- });
97
-
98
- expect(data.headers['Access-Control-Allow-Credentials']).toBe(false);
99
- expect(data.headers['Access-Control-Allow-Origin']).toBe('*');
100
- expect(data.headers['Cache-Control']).toBe('no-cache');
101
- expect(data.headers['X-Token-Id']).toBe('token');
102
-
103
- expect(data.statusCode).toBe(200);
104
-
105
- expect(typeof data.body).toBe('string');
106
-
107
- const dataBody = JSON.parse(data.body);
108
- expect(dataBody).toHaveProperty('status', 'success');
109
- expect(dataBody).toHaveProperty('data', 'Some message');
110
- expect(dataBody).toHaveProperty('_meta', {});
111
- });
112
-
113
- it('should call db.end() whenever a db options is set', async () => {
114
- const end = jest.fn().mockResolvedValue();
115
- await successHttpResponseHandler({
116
- response: 'Some message',
117
- headers: {
118
- 'Access-Control-Allow-Credentials': false,
119
- 'X-Token-Id': 'token',
120
- },
121
- db: {
122
- end,
123
- },
124
- });
125
-
126
- expect(end).toHaveBeenCalledTimes(1);
127
- });
128
-
129
- it('should call dbRead.end() whenever a dbRead options is set', async () => {
130
- const end = jest.fn().mockResolvedValue();
131
- await successHttpResponseHandler({
132
- response: 'Some message',
133
- headers: {
134
- 'Access-Control-Allow-Credentials': false,
135
- 'X-Token-Id': 'token',
136
- },
137
- dbRead: {
138
- end,
139
- },
140
- });
141
-
142
- expect(end).toHaveBeenCalledTimes(1);
143
- });
144
-
145
- it('should call cache.end() whenever a cache options is set', async () => {
146
- const end = jest.fn().mockResolvedValue();
147
- await successHttpResponseHandler({
148
- response: 'Some message',
149
- headers: {
150
- 'Access-Control-Allow-Credentials': false,
151
- 'X-Token-Id': 'token',
152
- },
153
- cache: {
154
- end,
155
- },
156
- });
157
-
158
- expect(end).toHaveBeenCalledTimes(1);
159
- });
160
- });
161
-
162
- describe('MiddlewareGroup: test successHttpResponseAfterHandler', () => {
163
- it('test with default parameters', async () => {
164
- const handler = {
165
- response: {},
166
- event: {},
167
- };
168
-
169
- await successHttpResponseAfterHandler(handler, () => {});
170
- expect(handler.response).toHaveProperty('statusCode', 200);
171
- });
172
- });