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,18 +0,0 @@
1
- export default class ValidationErrorException extends Error {
2
- constructor(
3
- message,
4
- errorCode = 'VALIDATION_ERROR',
5
- httpStatusCode = 400,
6
- extra
7
- ) {
8
- super();
9
- this.name = 'ValidationError';
10
- this.message = message;
11
- this.statusCode = httpStatusCode;
12
- this.code = errorCode;
13
-
14
- Error.captureStackTrace(this, this.constructor);
15
-
16
- if (extra) this.extra = extra;
17
- }
18
- }
@@ -1,225 +0,0 @@
1
- import basicAuthMiddleware, {
2
- generateBasicAuthorizationHash,
3
- verifyBasicAuthBeforeHandler,
4
- } from '../basicAuthMiddleware';
5
- import client from '../../../tests/__mocks__/config/client';
6
-
7
- describe('test basicAuthMiddleware middleware', () => {
8
- test.each`
9
- clientObj
10
- ${undefined}
11
- ${{}}
12
- ${{
13
- default: {
14
- key: '1111-1111-1111-1111',
15
- secret: '1111-1111-1111-1111',
16
- },
17
- }}
18
- `('should return object', ({ clientObj }) => {
19
- const result = basicAuthMiddleware({
20
- client: clientObj,
21
- });
22
-
23
- expect(result).toHaveProperty('before');
24
- expect(result).toHaveProperty('onError');
25
- });
26
- });
27
-
28
- // eslint-disable-next-line
29
- const next = () => {};
30
-
31
- describe('test verifyBasicAuthBeforeHandler error handling', () => {
32
- const invalidClientKey = Buffer.from('client_key:secret_key').toString(
33
- 'base64'
34
- );
35
- const invalidSecretKey = Buffer.from(
36
- `${client.platform_2.key}:secret_key`
37
- ).toString('base64');
38
-
39
- test.each`
40
- headers | errorName | errorMessage | errorStatusCode | errorCode | blacklistMode
41
- ${{}} | ${'LesgoException'} | ${'Authorization header not found'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTHORIZATION_HEADER_NOT_FOUND'} | ${undefined}
42
- ${{ Authorization: 'auth' }} | ${'LesgoException'} | ${'Invalid authorization type provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_INVALID_AUTHORIZATION_TYPE'} | ${undefined}
43
- ${{ Authorization: 'basic ' }} | ${'LesgoException'} | ${'Empty basic authentication hash provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_EMPTY_BASIC_HASH'} | ${undefined}
44
- ${{ Authorization: `basic ${invalidClientKey}` }} | ${'LesgoException'} | ${'Invalid client key or secret provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_INVALID_CLIENT_OR_SECRET_KEY'} | ${undefined}
45
- ${{ Authorization: `basic ${invalidSecretKey}` }} | ${'LesgoException'} | ${'Invalid client key or secret provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_INVALID_CLIENT_OR_SECRET_KEY'} | ${undefined}
46
- ${{ Authorization: `Basic ${invalidSecretKey}` }} | ${'LesgoException'} | ${'Invalid client key or secret provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_INVALID_CLIENT_OR_SECRET_KEY'} | ${undefined}
47
- ${{}} | ${'LesgoException'} | ${'Authorization header not found'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTHORIZATION_HEADER_NOT_FOUND'} | ${true}
48
- ${{ Authorization: 'auth' }} | ${'LesgoException'} | ${'Invalid authorization type provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_INVALID_AUTHORIZATION_TYPE'} | ${true}
49
- ${{ Authorization: 'basic ' }} | ${'LesgoException'} | ${'Empty basic authentication hash provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_EMPTY_BASIC_HASH'} | ${true}
50
- ${{ Authorization: `basic ${invalidClientKey}` }} | ${'LesgoException'} | ${'Invalid client key or secret provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_INVALID_CLIENT_OR_SECRET_KEY'} | ${true}
51
- ${{ Authorization: `basic ${invalidSecretKey}` }} | ${'LesgoException'} | ${'Invalid client key or secret provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_INVALID_CLIENT_OR_SECRET_KEY'} | ${true}
52
- ${{ Authorization: `Basic ${invalidSecretKey}` }} | ${'LesgoException'} | ${'Invalid client key or secret provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_INVALID_CLIENT_OR_SECRET_KEY'} | ${true}
53
- ${{ Authorization: 'auth' }} | ${'LesgoException'} | ${'Invalid authorization type provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_INVALID_AUTHORIZATION_TYPE'} | ${false}
54
- ${{ Authorization: 'basic ' }} | ${'LesgoException'} | ${'Empty basic authentication hash provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_EMPTY_BASIC_HASH'} | ${false}
55
- ${{ Authorization: `basic ${invalidClientKey}` }} | ${'LesgoException'} | ${'Invalid client key or secret provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_INVALID_CLIENT_OR_SECRET_KEY'} | ${false}
56
- ${{ Authorization: `basic ${invalidSecretKey}` }} | ${'LesgoException'} | ${'Invalid client key or secret provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_INVALID_CLIENT_OR_SECRET_KEY'} | ${false}
57
- ${{ Authorization: `Basic ${invalidSecretKey}` }} | ${'LesgoException'} | ${'Invalid client key or secret provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_INVALID_CLIENT_OR_SECRET_KEY'} | ${false}
58
- `(
59
- 'should throw $errorMessage when authorization header is $headers',
60
- async ({
61
- headers,
62
- errorName,
63
- errorMessage,
64
- errorStatusCode,
65
- errorCode,
66
- blacklistMode,
67
- }) => {
68
- const handler = {
69
- event: {
70
- headers,
71
- site: {
72
- id: 'platform_1',
73
- },
74
- },
75
- };
76
-
77
- try {
78
- expect(
79
- verifyBasicAuthBeforeHandler(handler, next, {
80
- blacklistMode,
81
- })
82
- ).toThrow();
83
- } catch (error) {
84
- expect(error.name).toBe(errorName);
85
- expect(error.message).toBe(errorMessage);
86
- expect(error.statusCode).toBe(errorStatusCode);
87
- expect(error.code).toBe(errorCode);
88
- }
89
- }
90
- );
91
- });
92
-
93
- describe('test verifyBasicAuthBeforeHandler with valid credentials', () => {
94
- const validBasicAuth = Buffer.from(
95
- generateBasicAuthorizationHash(
96
- client.platform_2.key,
97
- client.platform_2.secret
98
- )
99
- ).toString('base64');
100
-
101
- test.each`
102
- clientObj
103
- ${undefined}
104
- ${{}}
105
- ${{
106
- platform_2: {
107
- key: '2222-2222-2222-2222',
108
- secret: '2222-2222-2222-2222',
109
- },
110
- }}
111
- `('should return undefined when successful', ({ clientObj }) => {
112
- const handler = {
113
- event: {
114
- headers: {
115
- Authorization: `basic ${validBasicAuth}`,
116
- },
117
- site: {
118
- id: 'platform_2',
119
- },
120
- },
121
- };
122
-
123
- let hasError = false;
124
-
125
- try {
126
- verifyBasicAuthBeforeHandler(handler, next, {
127
- client: clientObj,
128
- });
129
- } catch (e) {
130
- hasError = true;
131
- }
132
-
133
- expect(hasError).toBeFalsy();
134
- });
135
-
136
- test.each`
137
- Authorization | blacklistMode
138
- ${undefined} | ${false}
139
- ${`basic ${validBasicAuth}`} | ${false}
140
- ${`Basic ${validBasicAuth}`} | ${false}
141
- ${`basic ${validBasicAuth}`} | ${true}
142
- ${`Basic ${validBasicAuth}`} | ${true}
143
- `(
144
- 'test Exception with valid credentials',
145
- ({ Authorization, blacklistMode }) => {
146
- const handler = {
147
- event: {
148
- headers: {
149
- Authorization,
150
- },
151
- site: {
152
- id: 'platform_2',
153
- },
154
- },
155
- };
156
-
157
- let hasError = false;
158
-
159
- try {
160
- verifyBasicAuthBeforeHandler(handler, next, {
161
- blacklistMode,
162
- });
163
- } catch (e) {
164
- hasError = true;
165
- }
166
-
167
- expect(hasError).toBeFalsy();
168
- }
169
- );
170
-
171
- test.each`
172
- siteObjects
173
- ${{}}
174
- ${{ site: { id: undefined } }}
175
- ${{ requestContext: { site: { id: undefined } } }}
176
- ${{ platform: undefined }}
177
- `('test Exception with no site ID', ({ siteObjects }) => {
178
- const handler = {
179
- event: {
180
- headers: {
181
- Authorization: `basic ${validBasicAuth}`,
182
- },
183
- ...siteObjects,
184
- },
185
- };
186
-
187
- try {
188
- expect(verifyBasicAuthBeforeHandler(handler, next)).toThrow();
189
- } catch (error) {
190
- expect(error.name).toBe('LesgoException');
191
- expect(error.message).toBe('Site ID could not be found');
192
- expect(error.statusCode).toBe(403);
193
- expect(error.code).toBe(
194
- 'Middlewares/basicAuthMiddleware::SITE_ID_NOT_FOUND'
195
- );
196
- }
197
- });
198
-
199
- test.each`
200
- siteObjects
201
- ${{ site: { id: 'platform_2' } }}
202
- ${{ requestContext: { site: { id: 'platform_2' } } }}
203
- ${{ requestContext: { site: { id: undefined } }, platform: 'platform_2' }}
204
- ${{ platform: 'platform_2' }}
205
- `('valid site ids', ({ siteObjects }) => {
206
- const handler = {
207
- event: {
208
- headers: {
209
- Authorization: `basic ${validBasicAuth}`,
210
- },
211
- ...siteObjects,
212
- },
213
- };
214
-
215
- let hasError = false;
216
-
217
- try {
218
- verifyBasicAuthBeforeHandler(handler, next);
219
- } catch (e) {
220
- hasError = true;
221
- }
222
-
223
- expect(hasError).toBeFalsy();
224
- });
225
- });
@@ -1,137 +0,0 @@
1
- import clientAuthMiddleware, {
2
- clientAuthMiddlewareBeforeHandler,
3
- } from '../clientAuthMiddleware';
4
-
5
- describe('test authMiddleware', () => {
6
- test('should return object', async () => {
7
- // eslint-disable-next-line no-unused-vars
8
- const result = clientAuthMiddleware();
9
- expect(result).toHaveProperty('before');
10
- expect(result).toHaveProperty('onError');
11
- });
12
- });
13
-
14
- const next = () => {};
15
-
16
- describe('test clientMiddlewareBeforeHandler', () => {
17
- test('should throw LesgoException when invalid api key is provided', async () => {
18
- const handler = {
19
- event: {
20
- headers: {
21
- 'X-Api-Key': '123',
22
- },
23
- },
24
- };
25
-
26
- try {
27
- expect(await clientAuthMiddlewareBeforeHandler(handler, next)).toThrow();
28
- } catch (error) {
29
- expect(error.name).toBe('LesgoException');
30
- expect(error.message).toBe("Missing required 'x-client-id'");
31
- expect(error.statusCode).toBe(403);
32
- expect(error.code).toBe(
33
- 'Middlewares/clientAuthMiddleware::INVALID_AUTH_DATA'
34
- );
35
- }
36
- });
37
-
38
- test('should throw LesgoException when x-client-id is incorrect', async () => {
39
- const handler = {
40
- event: {
41
- headers: {
42
- 'x-client-id': 'notexisting',
43
- },
44
- },
45
- };
46
-
47
- try {
48
- expect(await clientAuthMiddlewareBeforeHandler(handler, next)).toThrow();
49
- } catch (error) {
50
- expect(error.name).toBe('LesgoException');
51
- expect(error.message).toBe('Invalid ClientId provided');
52
- expect(error.statusCode).toBe(403);
53
- expect(error.code).toBe(
54
- 'Middlewares/clientAuthMiddleware::INVALID_CLIENT_ID'
55
- );
56
- }
57
- });
58
-
59
- test('should return success with valid client id', async () => {
60
- const handler = {
61
- event: {
62
- headers: {
63
- 'x-client-id': '1111-1111-1111-1111',
64
- },
65
- },
66
- };
67
-
68
- let hasError = false;
69
-
70
- try {
71
- await clientAuthMiddlewareBeforeHandler(handler, next);
72
- } catch (e) {
73
- hasError = true;
74
- }
75
-
76
- expect(hasError).toBe(false);
77
- });
78
-
79
- test('should return success with valid client id on input', async () => {
80
- const handler = {
81
- event: {
82
- headers: {},
83
- input: {
84
- clientid: '1111-1111-1111-1111',
85
- },
86
- },
87
- };
88
-
89
- let hasError = false;
90
-
91
- try {
92
- await clientAuthMiddlewareBeforeHandler(handler, next);
93
- } catch (e) {
94
- hasError = true;
95
- }
96
-
97
- expect(hasError).toBe(false);
98
- });
99
-
100
- test('should execute passed callback function', async () => {
101
- const handler = {
102
- event: {
103
- headers: {},
104
- input: {
105
- clientid: '1111-1111-1111-1111',
106
- },
107
- },
108
- };
109
-
110
- await clientAuthMiddlewareBeforeHandler(handler, next, h => {
111
- // eslint-disable-next-line no-param-reassign
112
- h.event.created_obj = 'created_obj';
113
- });
114
-
115
- expect(handler.event).toHaveProperty('created_obj');
116
- });
117
-
118
- test('should execute passed top object with callback function', async () => {
119
- const handler = {
120
- event: {
121
- headers: {},
122
- input: {
123
- clientid: '1111-1111-1111-1111',
124
- },
125
- },
126
- };
127
-
128
- await clientAuthMiddlewareBeforeHandler(handler, next, {
129
- callback: h => {
130
- // eslint-disable-next-line no-param-reassign
131
- h.event.created_obj = 'created_obj';
132
- },
133
- });
134
-
135
- expect(handler.event).toHaveProperty('created_obj');
136
- });
137
- });
@@ -1,190 +0,0 @@
1
- import {
2
- errorHttpResponseHandler,
3
- errorHttpResponseAfterHandler,
4
- } from '../errorHttpResponseMiddleware';
5
- import ValidationErrorException from '../__mocks__/ValidationErrorException';
6
-
7
- describe('MiddlewareGroup: test errorHandler middleware', () => {
8
- it('test with thrown Error', async () => {
9
- const data = await errorHttpResponseHandler({
10
- error: new Error('Test validation error'),
11
- });
12
-
13
- expect(data.headers['Access-Control-Allow-Origin']).toBe('*');
14
- expect(data.headers['Cache-Control']).toBe('no-cache');
15
-
16
- expect(data.statusCode).toBe(500);
17
-
18
- expect(typeof data.body).toBe('string');
19
-
20
- const dataBody = JSON.parse(data.body);
21
- expect(dataBody).toHaveProperty('status', 'error');
22
- expect(dataBody).toHaveProperty('data', null);
23
- expect(dataBody).toHaveProperty('error');
24
- expect(dataBody).toHaveProperty('error.code', 'UNHANDLED_ERROR');
25
- expect(dataBody).toHaveProperty(
26
- 'error.message',
27
- 'Error: Test validation error'
28
- );
29
- expect(dataBody).toHaveProperty('error.details', '');
30
- });
31
-
32
- it('test with thrown custom Error with default parameters', async () => {
33
- const data = await errorHttpResponseHandler({
34
- error: new ValidationErrorException('Test validation error'),
35
- });
36
- const dataBody = JSON.parse(data.body);
37
-
38
- expect(data.statusCode).toBe(400);
39
-
40
- expect(dataBody).toHaveProperty('error.code', 'VALIDATION_ERROR');
41
- expect(dataBody).toHaveProperty(
42
- 'error.message',
43
- 'ValidationError: Test validation error'
44
- );
45
- expect(dataBody).toHaveProperty('error.details', '');
46
- });
47
-
48
- it('test with thrown custom Error with given parameters', async () => {
49
- const data = await errorHttpResponseHandler({
50
- error: new ValidationErrorException(
51
- 'Test validation error',
52
- 'VALIDATION_ERROR_SAMPLE',
53
- 401,
54
- {
55
- extraDataKey: 'extraDataValue',
56
- }
57
- ),
58
- });
59
- const dataBody = JSON.parse(data.body);
60
-
61
- expect(data.statusCode).toBe(401);
62
-
63
- expect(dataBody).toHaveProperty('error.code', 'VALIDATION_ERROR_SAMPLE');
64
- expect(dataBody).toHaveProperty(
65
- 'error.message',
66
- 'ValidationError: Test validation error'
67
- );
68
- expect(dataBody).toHaveProperty('error.details', {
69
- extraDataKey: 'extraDataValue',
70
- });
71
- });
72
-
73
- it('test with error message', async () => {
74
- const data = await errorHttpResponseHandler({
75
- error: 'Test error message',
76
- });
77
- const dataBody = JSON.parse(data.body);
78
-
79
- expect(data.statusCode).toBe(500);
80
-
81
- expect(dataBody).toHaveProperty('error.code', 'UNHANDLED_ERROR');
82
- expect(dataBody).toHaveProperty('error.message', 'Test error message');
83
- expect(dataBody).toHaveProperty('error.details', '');
84
- });
85
-
86
- it('test with error message with event', async () => {
87
- const data = await errorHttpResponseHandler({
88
- error: 'Test error message',
89
- event: {
90
- someEventKey: 'someEventValue',
91
- },
92
- debugMode: true,
93
- });
94
- const dataBody = JSON.parse(data.body);
95
-
96
- expect(data.statusCode).toBe(500);
97
- expect(dataBody).toHaveProperty('_meta', {
98
- someEventKey: 'someEventValue',
99
- });
100
- });
101
-
102
- it('test with error message with event in non-debug mode', async () => {
103
- const data = await errorHttpResponseHandler({
104
- error: 'Test error message',
105
- event: {
106
- someEventKey: 'someEventValue',
107
- },
108
- });
109
- const dataBody = JSON.parse(data.body);
110
-
111
- expect(data.statusCode).toBe(500);
112
- expect(dataBody).toHaveProperty('_meta', {});
113
- });
114
-
115
- it('test with undefined opts', async () => {
116
- const data = await errorHttpResponseHandler();
117
-
118
- expect(data.headers['Access-Control-Allow-Origin']).toBe('*');
119
- expect(data.headers['Cache-Control']).toBe('no-cache');
120
-
121
- expect(data.statusCode).toBe(500);
122
-
123
- expect(typeof data.body).toBe('string');
124
-
125
- const dataBody = JSON.parse(data.body);
126
- expect(dataBody).toHaveProperty('status', 'error');
127
- expect(dataBody).toHaveProperty('data', null);
128
- expect(dataBody).toHaveProperty('error');
129
- expect(dataBody).toHaveProperty('error.code', 'UNHANDLED_ERROR');
130
- expect(dataBody).toHaveProperty('error.message', '');
131
- expect(dataBody).toHaveProperty('error.details', '');
132
- });
133
-
134
- it('should call db.end() whenever a db options is set', async () => {
135
- const end = jest.fn().mockResolvedValue();
136
- await errorHttpResponseHandler({
137
- error: 'Test error message',
138
- event: {
139
- someEventKey: 'someEventValue',
140
- },
141
- db: {
142
- end,
143
- },
144
- });
145
-
146
- expect(end).toHaveBeenCalledTimes(1);
147
- });
148
-
149
- it('should call cache.end() whenever a cache options is set', async () => {
150
- const end = jest.fn().mockResolvedValue();
151
- await errorHttpResponseHandler({
152
- error: 'Test error message',
153
- event: {
154
- someEventKey: 'someEventValue',
155
- },
156
- cache: {
157
- end,
158
- },
159
- });
160
-
161
- expect(end).toHaveBeenCalledTimes(1);
162
- });
163
-
164
- it('should call dbRead.end() whenever a dbRead options is set', async () => {
165
- const end = jest.fn().mockResolvedValue();
166
- await errorHttpResponseHandler({
167
- error: 'Test error message',
168
- event: {
169
- someEventKey: 'someEventValue',
170
- },
171
- dbRead: {
172
- end,
173
- },
174
- });
175
-
176
- expect(end).toHaveBeenCalledTimes(1);
177
- });
178
- });
179
-
180
- describe('MiddlewareGroup: test errorHttpResponseAfterHandler', () => {
181
- it('test with default parameters', async () => {
182
- const handler = {
183
- error: {},
184
- event: {},
185
- };
186
-
187
- await errorHttpResponseAfterHandler(handler, () => {});
188
- expect(handler.response).toHaveProperty('statusCode', 500);
189
- });
190
- });