lesgo 1.0.0 → 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 (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,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,264 +0,0 @@
1
- import basicAuthMiddleware, {
2
- generateBasicAuthorizationHash,
3
- verifyBasicAuthBeforeHandler,
4
- } from '../basicAuthMiddleware';
5
- import client from '../../../tests/__mocks__/config/client';
6
-
7
- describe('test generateBasicAuthorizationHash', () => {
8
- test('should return custom when overriden through opts', () => {
9
- expect(
10
- generateBasicAuthorizationHash(
11
- 'e5bb52b012ad4a4e9d862a3410e7013d',
12
- '4cd19af8f7ca4448bcb2c427754095b5',
13
- {
14
- getPreHashString: key => {
15
- return `=${key}=`;
16
- },
17
- }
18
- )
19
- ).toBe('PWU1YmI1MmIwMTJhZDRhNGU5ZDg2MmEzNDEwZTcwMTNkPQ==');
20
- });
21
-
22
- test('should return basic auth by default', () => {
23
- const { getPreHashString } = client;
24
- client.getPreHashString = null;
25
-
26
- expect(
27
- generateBasicAuthorizationHash(
28
- 'e5bb52b012ad4a4e9d862a3410e7013d',
29
- '4cd19af8f7ca4448bcb2c427754095b5'
30
- )
31
- ).toBe(
32
- 'ZTViYjUyYjAxMmFkNGE0ZTlkODYyYTM0MTBlNzAxM2Q6NGNkMTlhZjhmN2NhNDQ0OGJjYjJjNDI3NzU0MDk1YjU='
33
- );
34
-
35
- client.getPreHashString = getPreHashString;
36
- });
37
- });
38
-
39
- describe('test basicAuthMiddleware middleware', () => {
40
- test.each`
41
- clientObj
42
- ${undefined}
43
- ${{}}
44
- ${{
45
- default: {
46
- key: '1111-1111-1111-1111',
47
- secret: '1111-1111-1111-1111',
48
- },
49
- }}
50
- `('should return object', ({ clientObj }) => {
51
- const result = basicAuthMiddleware({
52
- client: clientObj,
53
- });
54
-
55
- expect(result).toHaveProperty('before');
56
- });
57
- });
58
-
59
- // eslint-disable-next-line
60
- const next = () => {};
61
-
62
- describe('test verifyBasicAuthBeforeHandler error handling', () => {
63
- const invalidClientKey = Buffer.from('client_key:secret_key').toString(
64
- 'base64'
65
- );
66
- const invalidSecretKey = Buffer.from(
67
- `${client.clients.platform_2.key}:secret_key`
68
- ).toString('base64');
69
-
70
- test.each`
71
- headers | errorName | errorMessage | errorStatusCode | errorCode | platform
72
- ${{}} | ${'LesgoException'} | ${'Authorization header not found'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTHORIZATION_HEADER_NOT_FOUND'} | ${undefined}
73
- ${{ Authorization: 'auth' }} | ${'LesgoException'} | ${'Invalid authorization type provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_INVALID_AUTHORIZATION_TYPE'} | ${undefined}
74
- ${{ Authorization: 'basic ' }} | ${'LesgoException'} | ${'Empty basic authentication hash provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_EMPTY_BASIC_HASH'} | ${undefined}
75
- ${{ Authorization: `basic ${invalidClientKey}` }} | ${'LesgoException'} | ${'Invalid client key or secret provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_INVALID_CLIENT_OR_SECRET_KEY'} | ${undefined}
76
- ${{ Authorization: `basic ${invalidSecretKey}` }} | ${'LesgoException'} | ${'Invalid client key or secret provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_INVALID_CLIENT_OR_SECRET_KEY'} | ${undefined}
77
- ${{ Authorization: `Basic ${invalidSecretKey}` }} | ${'LesgoException'} | ${'Invalid client key or secret provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_INVALID_CLIENT_OR_SECRET_KEY'} | ${undefined}
78
- ${{}} | ${'LesgoException'} | ${'Authorization header not found'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTHORIZATION_HEADER_NOT_FOUND'} | ${'platform_1'}
79
- ${{ Authorization: 'auth' }} | ${'LesgoException'} | ${'Invalid authorization type provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_INVALID_AUTHORIZATION_TYPE'} | ${'platform_1'}
80
- ${{ Authorization: 'basic ' }} | ${'LesgoException'} | ${'Empty basic authentication hash provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_EMPTY_BASIC_HASH'} | ${'platform_1'}
81
- ${{ Authorization: `basic ${invalidClientKey}` }} | ${'LesgoException'} | ${'Invalid client key or secret provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_INVALID_CLIENT_OR_SECRET_KEY'} | ${'platform_1'}
82
- ${{ Authorization: `basic ${invalidSecretKey}` }} | ${'LesgoException'} | ${'Invalid client key or secret provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_INVALID_CLIENT_OR_SECRET_KEY'} | ${'platform_1'}
83
- ${{ Authorization: `Basic ${invalidSecretKey}` }} | ${'LesgoException'} | ${'Invalid client key or secret provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_INVALID_CLIENT_OR_SECRET_KEY'} | ${'platform_1'}
84
- ${{ Authorization: 'auth' }} | ${'LesgoException'} | ${'Invalid authorization type provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_INVALID_AUTHORIZATION_TYPE'} | ${'blacklist_platform'}
85
- ${{ Authorization: 'basic ' }} | ${'LesgoException'} | ${'Empty basic authentication hash provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_EMPTY_BASIC_HASH'} | ${'blacklist_platform'}
86
- ${{ Authorization: `basic ${invalidClientKey}` }} | ${'LesgoException'} | ${'Invalid client key or secret provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_INVALID_CLIENT_OR_SECRET_KEY'} | ${'blacklist_platform'}
87
- ${{ Authorization: `basic ${invalidSecretKey}` }} | ${'LesgoException'} | ${'Invalid client key or secret provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_INVALID_CLIENT_OR_SECRET_KEY'} | ${'blacklist_platform'}
88
- ${{ Authorization: `Basic ${invalidSecretKey}` }} | ${'LesgoException'} | ${'Invalid client key or secret provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_INVALID_CLIENT_OR_SECRET_KEY'} | ${'blacklist_platform'}
89
- ${{ Authorization: 'auth' }} | ${'LesgoException'} | ${'Invalid authorization type provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_INVALID_AUTHORIZATION_TYPE'} | ${'blacklist_platform_1'}
90
- ${{ Authorization: 'basic ' }} | ${'LesgoException'} | ${'Empty basic authentication hash provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_EMPTY_BASIC_HASH'} | ${'blacklist_platform_1'}
91
- ${{ Authorization: `basic ${invalidClientKey}` }} | ${'LesgoException'} | ${'Invalid client key or secret provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_INVALID_CLIENT_OR_SECRET_KEY'} | ${'blacklist_platform_1'}
92
- ${{ Authorization: `basic ${invalidSecretKey}` }} | ${'LesgoException'} | ${'Invalid client key or secret provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_INVALID_CLIENT_OR_SECRET_KEY'} | ${'blacklist_platform_1'}
93
- ${{ Authorization: `Basic ${invalidSecretKey}` }} | ${'LesgoException'} | ${'Invalid client key or secret provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_INVALID_CLIENT_OR_SECRET_KEY'} | ${'blacklist_platform_1'}
94
- `(
95
- 'should throw $errorMessage when authorization header is $headers',
96
- async ({
97
- headers,
98
- errorName,
99
- errorMessage,
100
- errorStatusCode,
101
- errorCode,
102
- platform,
103
- }) => {
104
- const handler = {
105
- event: {
106
- headers,
107
- platform: {
108
- id: platform,
109
- ...client.clients[platform],
110
- },
111
- },
112
- };
113
-
114
- try {
115
- expect(await verifyBasicAuthBeforeHandler(handler, next)).toThrow();
116
- } catch (error) {
117
- expect(error.name).toBe(errorName);
118
- expect(error.message).toBe(errorMessage);
119
- expect(error.statusCode).toBe(errorStatusCode);
120
- expect(error.code).toBe(errorCode);
121
- }
122
- }
123
- );
124
- });
125
-
126
- describe('test verifyBasicAuthBeforeHandler with valid credentials', () => {
127
- const validBasicAuth = generateBasicAuthorizationHash(
128
- client.clients.platform_2.key,
129
- client.clients.platform_2.secret
130
- );
131
-
132
- test.each`
133
- clientObj
134
- ${undefined}
135
- ${{}}
136
- ${{
137
- platform_2: {
138
- key: '2222-2222-2222-2222',
139
- secret: '2222-2222-2222-2222',
140
- },
141
- }}
142
- `('should return undefined when successful', async ({ clientObj }) => {
143
- const handler = {
144
- event: {
145
- headers: {
146
- Authorization: `basic ${validBasicAuth}`,
147
- },
148
- site: {
149
- id: 'platform_2',
150
- },
151
- },
152
- };
153
-
154
- let hasError = false;
155
-
156
- try {
157
- await verifyBasicAuthBeforeHandler(handler, next, {
158
- client: clientObj,
159
- });
160
- } catch (e) {
161
- hasError = true;
162
- }
163
-
164
- expect(hasError).toBeFalsy();
165
- });
166
-
167
- test.each`
168
- clientObj
169
- ${undefined}
170
- ${{}}
171
- ${{
172
- platform_2: {
173
- key: '2222-2222-2222-2222',
174
- secret: '2222-2222-2222-2222',
175
- },
176
- }}
177
- `('should return undefined when successful', async ({ clientObj }) => {
178
- const handler = {
179
- event: {
180
- headers: {
181
- Authorization: `basic ${validBasicAuth}`,
182
- },
183
- site: {
184
- id: 'platform_2',
185
- },
186
- },
187
- };
188
-
189
- let hasError = false;
190
-
191
- try {
192
- await verifyBasicAuthBeforeHandler(handler, next, {
193
- client: clientObj,
194
- });
195
- } catch (e) {
196
- hasError = true;
197
- }
198
-
199
- expect(hasError).toBeFalsy();
200
- });
201
-
202
- test.each`
203
- Authorization | platform
204
- ${undefined} | ${'blacklist_platform'}
205
- ${undefined} | ${'blacklist_platform_1'}
206
- ${`basic ${validBasicAuth}`} | ${'platform_2'}
207
- ${`Basic ${validBasicAuth}`} | ${'platform_2'}
208
- ${`basic ${validBasicAuth}`} | ${'platform_2'}
209
- ${`Basic ${validBasicAuth}`} | ${'platform_2'}
210
- `(
211
- 'test Exception with valid credentials',
212
- async ({ Authorization, platform }) => {
213
- const handler = {
214
- event: {
215
- headers: {
216
- Authorization,
217
- },
218
- platform: {
219
- id: platform,
220
- ...client.clients[platform],
221
- },
222
- },
223
- };
224
-
225
- let hasError = false;
226
-
227
- try {
228
- await verifyBasicAuthBeforeHandler(handler, next);
229
- } catch (e) {
230
- hasError = true;
231
- }
232
-
233
- expect(hasError).toBeFalsy();
234
- }
235
- );
236
-
237
- test.each`
238
- siteObjects
239
- ${{ platform: {
240
- id: 'platform_2',
241
- ...client.clients.platform_2,
242
- } }}
243
- ${{}}
244
- `('valid site ids', async ({ siteObjects }) => {
245
- const handler = {
246
- event: {
247
- headers: {
248
- Authorization: `basic ${validBasicAuth}`,
249
- },
250
- ...siteObjects,
251
- },
252
- };
253
-
254
- let hasError = false;
255
-
256
- try {
257
- await verifyBasicAuthBeforeHandler(handler, next);
258
- } catch (e) {
259
- hasError = true;
260
- }
261
-
262
- expect(hasError).toBeFalsy();
263
- });
264
- });
@@ -1,235 +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
- });
11
- });
12
-
13
- const next = () => {};
14
-
15
- describe('test clientMiddlewareBeforeHandler', () => {
16
- test('should throw LesgoException when invalid api key is provided', async () => {
17
- const handler = {
18
- event: {
19
- headers: {
20
- 'X-Api-Key': '123',
21
- },
22
- },
23
- };
24
-
25
- try {
26
- expect(await clientAuthMiddlewareBeforeHandler(handler, next)).toThrow();
27
- } catch (error) {
28
- expect(error.name).toBe('LesgoException');
29
- expect(error.message).toBe("Missing required 'clientKey'");
30
- expect(error.statusCode).toBe(403);
31
- expect(error.code).toBe(
32
- 'Middlewares/clientAuthMiddleware::INVALID_AUTH_DATA'
33
- );
34
- }
35
- });
36
-
37
- test('should throw LesgoException when x-client-id is incorrect', async () => {
38
- const handler = {
39
- event: {
40
- headers: {
41
- 'x-client-id': 'notexisting',
42
- },
43
- },
44
- };
45
-
46
- try {
47
- expect(await clientAuthMiddlewareBeforeHandler(handler, next)).toThrow();
48
- } catch (error) {
49
- expect(error.name).toBe('LesgoException');
50
- expect(error.message).toBe('Invalid ClientId provided');
51
- expect(error.statusCode).toBe(403);
52
- expect(error.code).toBe(
53
- 'Middlewares/clientAuthMiddleware::INVALID_CLIENT_ID'
54
- );
55
- }
56
- });
57
-
58
- test('should be able to validate from multiple header keys', async () => {
59
- const handler = {
60
- event: {
61
- headers: {
62
- 'X-Client-Id': '1111-1111-1111-1111',
63
- },
64
- },
65
- };
66
-
67
- let hasError = false;
68
-
69
- try {
70
- await clientAuthMiddlewareBeforeHandler(handler, next);
71
- } catch (e) {
72
- hasError = e;
73
- }
74
-
75
- expect(hasError).toBe(false);
76
- });
77
-
78
- test('should allow getting from query string parameters', async () => {
79
- const handler = {
80
- event: {
81
- queryStringParameters: {
82
- 'x-client-id': '1111-1111-1111-1111',
83
- },
84
- },
85
- };
86
-
87
- let hasError = false;
88
-
89
- try {
90
- await clientAuthMiddlewareBeforeHandler(handler, next);
91
- } catch (e) {
92
- hasError = e;
93
- }
94
-
95
- expect(hasError).toBe(false);
96
- });
97
-
98
- test('should return success with valid client id', async () => {
99
- const handler = {
100
- event: {
101
- headers: {
102
- 'x-client-id': '1111-1111-1111-1111',
103
- },
104
- },
105
- };
106
-
107
- let hasError = false;
108
-
109
- try {
110
- await clientAuthMiddlewareBeforeHandler(handler, next);
111
- } catch (e) {
112
- hasError = true;
113
- }
114
-
115
- expect(hasError).toBe(false);
116
- });
117
-
118
- test('should return success with valid client id on input', async () => {
119
- const handler = {
120
- event: {
121
- headers: {},
122
- input: {
123
- clientid: '1111-1111-1111-1111',
124
- },
125
- },
126
- };
127
-
128
- let hasError = false;
129
-
130
- try {
131
- await clientAuthMiddlewareBeforeHandler(handler, next);
132
- } catch (e) {
133
- hasError = true;
134
- }
135
-
136
- expect(hasError).toBe(false);
137
- });
138
-
139
- test('should set handler.event.platform with valid client id on input', async () => {
140
- const handler = {
141
- event: {
142
- headers: {},
143
- input: {
144
- clientid: '1111-1111-1111-1111',
145
- },
146
- },
147
- };
148
-
149
- let hasError = false;
150
-
151
- try {
152
- await clientAuthMiddlewareBeforeHandler(handler, next);
153
- } catch (e) {
154
- hasError = true;
155
- }
156
-
157
- expect(hasError).toBe(false);
158
- expect(handler.event.platform).toStrictEqual({
159
- id: 'platform_1',
160
- key: '1111-1111-1111-1111',
161
- secret: '1111-1111-1111-1111',
162
- });
163
- });
164
-
165
- test('should execute passed callback function', async () => {
166
- const handler = {
167
- event: {
168
- headers: {},
169
- input: {
170
- clientid: '1111-1111-1111-1111',
171
- },
172
- },
173
- };
174
-
175
- await clientAuthMiddlewareBeforeHandler(handler, next, h => {
176
- // eslint-disable-next-line no-param-reassign
177
- h.event.created_obj = 'created_obj';
178
- });
179
-
180
- expect(handler.event).toHaveProperty('created_obj');
181
- });
182
-
183
- test('should execute with callback function from config', async () => {
184
- const handler = {
185
- event: {
186
- headers: {},
187
- input: {
188
- clientid: '1111-1111-1111-1111',
189
- },
190
- },
191
- };
192
-
193
- await clientAuthMiddlewareBeforeHandler(handler, next);
194
-
195
- expect(handler.event).toHaveProperty('created_obj');
196
- });
197
-
198
- test('should execute passed opt object with async callback function', async () => {
199
- const handler = {
200
- event: {
201
- headers: {},
202
- input: {
203
- clientid: '1111-1111-1111-1111',
204
- },
205
- },
206
- };
207
-
208
- await clientAuthMiddlewareBeforeHandler(handler, next, {
209
- callback: async h => {
210
- await new Promise(resolve => setTimeout(resolve, 500));
211
- // eslint-disable-next-line no-param-reassign
212
- h.event.created_obj_async = 'created_obj_async';
213
- },
214
- });
215
-
216
- expect(handler.event).toHaveProperty('created_obj_async');
217
- });
218
-
219
- test('should not execute passed opt object with callback function if not a function', async () => {
220
- const handler = {
221
- event: {
222
- headers: {},
223
- input: {
224
- clientid: '1111-1111-1111-1111',
225
- },
226
- },
227
- };
228
-
229
- await clientAuthMiddlewareBeforeHandler(handler, next, {
230
- callback: 'not_function',
231
- });
232
-
233
- expect(handler.event).not.toHaveProperty('created_obj');
234
- });
235
- });