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,383 +0,0 @@
1
- import Paginator from '../pagination/Paginator';
2
- import {
3
- mockData,
4
- mockDataFirstItem,
5
- mockDataLastItem,
6
- } from '../../utils/__mocks__/db';
7
- import db from '../../utils/db';
8
-
9
- jest.mock('../../utils/db');
10
-
11
- beforeEach(() => {
12
- db.select.mockClear();
13
- });
14
-
15
- const FILE = 'Services/pagination/Paginator';
16
-
17
- describe('test Paginator instantiate', () => {
18
- it.each`
19
- currentPage | perPage | expectedCount | firstItem | lastItem
20
- ${undefined} | ${undefined} | ${10} | ${mockData} | ${mockData}
21
- ${undefined} | ${5} | ${5} | ${mockDataFirstItem} | ${mockDataLastItem}
22
- `(
23
- 'should not throw exception if page is $page and perPage is $perPage',
24
- async ({ currentPage, perPage, expectedCount, firstItem, lastItem }) => {
25
- const paginator = new Paginator(
26
- db,
27
- 'SELECT * FROM tests',
28
- {},
29
- {
30
- perPage,
31
- currentPage,
32
- }
33
- );
34
-
35
- expect(await paginator.count()).toEqual(expectedCount);
36
- expect(paginator.currentPage()).toEqual(1);
37
- expect(await paginator.firstItem()).toMatchObject(firstItem);
38
- expect(await paginator.lastItem()).toMatchObject(lastItem);
39
- expect(paginator.perPage()).toEqual(expectedCount);
40
- expect(await paginator.total()).toEqual(10);
41
- }
42
- );
43
-
44
- it('should be instantiated without options', async () => {
45
- const paginator = new Paginator(db, 'SELECT * FROM tests', {});
46
-
47
- expect(await paginator.count()).toEqual(10);
48
- expect(paginator.currentPage()).toEqual(1);
49
- expect(await paginator.firstItem()).toMatchObject(mockData);
50
- expect(await paginator.lastItem()).toMatchObject(mockData);
51
- expect(paginator.perPage()).toEqual(10);
52
- expect(await paginator.total()).toEqual(10);
53
- });
54
-
55
- it.each`
56
- currentPage | perPage | errorName | errorMessage | errorCode | errorStatusCode
57
- ${'sample'} | ${10} | ${'LesgoException'} | ${"Invalid type for 'currentPage', expecting 'number'"} | ${`${FILE}::FIELD_VALIDATION_EXCEPTION`} | ${500}
58
- ${1} | ${'sample'} | ${'LesgoException'} | ${"Invalid type for 'perPage', expecting 'number'"} | ${`${FILE}::FIELD_VALIDATION_EXCEPTION`} | ${500}
59
- `(
60
- 'should throw $errorMessage when page is $page and perPage is $perPage',
61
- ({
62
- currentPage,
63
- perPage,
64
- errorName,
65
- errorMessage,
66
- errorCode,
67
- errorStatusCode,
68
- }) => {
69
- try {
70
- const values = new Paginator(
71
- db,
72
- 'SELECT * FROM tests',
73
- {},
74
- {
75
- perPage,
76
- currentPage,
77
- }
78
- );
79
- expect(values).toThrow();
80
- } catch (err) {
81
- expect(err.name).toEqual(errorName);
82
- expect(err.message).toEqual(errorMessage);
83
- expect(err.code).toEqual(errorCode);
84
- expect(err.statusCode).toEqual(errorStatusCode);
85
- }
86
- }
87
- );
88
-
89
- it('should return the first item of the result', async () => {
90
- const paginator = new Paginator(
91
- db,
92
- 'SELECT * FROM tests',
93
- {},
94
- {
95
- perPage: 5,
96
- }
97
- );
98
-
99
- expect(await paginator.firstItem()).toMatchObject(mockDataFirstItem);
100
- });
101
- it('should return the last item of the result', async () => {
102
- const paginator = new Paginator(
103
- db,
104
- 'SELECT * FROM tests',
105
- {},
106
- {
107
- perPage: 5,
108
- }
109
- );
110
-
111
- expect(await paginator.lastItem()).toMatchObject(mockDataLastItem);
112
- });
113
- it('should return the defined per page', () => {
114
- const paginator = new Paginator(
115
- db,
116
- 'SELECT * FROM tests',
117
- {},
118
- {
119
- perPage: 5,
120
- }
121
- );
122
-
123
- expect(paginator.perPage()).toEqual(5);
124
- });
125
- it('should return the previous page if exist', () => {
126
- const paginator1 = new Paginator(
127
- db,
128
- 'SELECT * FROM tests',
129
- {},
130
- {
131
- perPage: 5,
132
- currentPage: 2,
133
- }
134
- );
135
- expect(paginator1.previousPage()).toEqual(1);
136
-
137
- const paginator2 = new Paginator(
138
- db,
139
- 'SELECT * FROM tests',
140
- {},
141
- {
142
- perPage: 5,
143
- currentPage: 1,
144
- }
145
- );
146
- expect(paginator2.previousPage()).toEqual(false);
147
- });
148
- it('should return the next page if exist', async () => {
149
- const paginator1 = new Paginator(
150
- db,
151
- 'SELECT * FROM tests',
152
- {},
153
- {
154
- perPage: 5,
155
- }
156
- );
157
- expect(await paginator1.nextPage()).toEqual(2);
158
-
159
- const paginator2 = new Paginator(
160
- db,
161
- 'SELECT * FROM tests',
162
- {},
163
- {
164
- perPage: 5,
165
- currentPage: 2,
166
- }
167
- );
168
- expect(await paginator2.nextPage()).toEqual(3);
169
-
170
- const paginator3 = new Paginator(
171
- db,
172
- 'SELECT * FROM tests',
173
- {},
174
- {
175
- perPage: 5,
176
- currentPage: 3,
177
- }
178
- );
179
- expect(await paginator3.nextPage()).toEqual(false);
180
- });
181
- });
182
-
183
- describe('test count() usage', () => {
184
- it('should count number of items of the current page', async () => {
185
- const paginator = new Paginator(
186
- db,
187
- 'SELECT * FROM tests',
188
- {},
189
- {
190
- perPage: 5,
191
- }
192
- );
193
-
194
- expect(await paginator.count()).toEqual(5);
195
- });
196
- it('should only run executeQuery once', async () => {
197
- const paginator = new Paginator(
198
- db,
199
- 'SELECT * FROM tests',
200
- {},
201
- {
202
- perPage: 5,
203
- }
204
- );
205
-
206
- await paginator.count();
207
- await paginator.count();
208
- await paginator.count();
209
- await paginator.count();
210
- await paginator.count();
211
-
212
- expect(db.select).toHaveBeenCalledTimes(1);
213
- });
214
- });
215
-
216
- describe('test currentPage() usage', () => {
217
- it('should return 1 as current page if no currentPage is defined', () => {
218
- const paginator = new Paginator(
219
- db,
220
- 'SELECT * FROM tests',
221
- {},
222
- {
223
- perPage: 5,
224
- }
225
- );
226
-
227
- expect(paginator.currentPage()).toEqual(1);
228
- });
229
- it('should return the defined current page on instantiation', () => {
230
- const paginator = new Paginator(
231
- db,
232
- 'SELECT * FROM tests',
233
- {},
234
- {
235
- perPage: 5,
236
- currentPage: 2,
237
- }
238
- );
239
-
240
- expect(paginator.currentPage()).toEqual(2);
241
- });
242
- });
243
-
244
- describe('test items() usage', () => {
245
- it('should return all results from the current page', async () => {
246
- const paginator = new Paginator(
247
- db,
248
- 'SELECT * FROM tests',
249
- {},
250
- {
251
- perPage: 5,
252
- }
253
- );
254
-
255
- expect(await paginator.items()).toMatchObject([
256
- { ...mockDataFirstItem },
257
- { ...mockData },
258
- { ...mockData },
259
- { ...mockData },
260
- { ...mockDataLastItem },
261
- ]);
262
- });
263
-
264
- it('should only run executeQuery once', async () => {
265
- const paginator = new Paginator(
266
- db,
267
- 'SELECT * FROM tests',
268
- {},
269
- {
270
- perPage: 5,
271
- }
272
- );
273
-
274
- await paginator.items();
275
- await paginator.items();
276
- await paginator.items();
277
- await paginator.items();
278
-
279
- expect(db.select).toHaveBeenCalledTimes(1);
280
- });
281
- });
282
-
283
- describe('test toObject() usage', () => {
284
- it('should return object version of the paginator', async () => {
285
- const paginator = new Paginator(
286
- db,
287
- 'SELECT * FROM tests',
288
- {},
289
- {
290
- perPage: 5,
291
- }
292
- );
293
-
294
- expect(await paginator.toObject()).toMatchObject({
295
- count: 5,
296
- previous_page: false,
297
- current_page: 1,
298
- next_page: 2,
299
- last_page: 2,
300
- per_page: 5,
301
- total: 10,
302
- items: [
303
- { ...mockDataFirstItem },
304
- { ...mockData },
305
- { ...mockData },
306
- { ...mockData },
307
- { ...mockDataLastItem },
308
- ],
309
- });
310
- });
311
-
312
- it('should only run executeQuery twice', async () => {
313
- const paginator = new Paginator(
314
- db,
315
- 'SELECT * FROM tests',
316
- {},
317
- {
318
- perPage: 5,
319
- }
320
- );
321
-
322
- await paginator.toObject();
323
- await paginator.toObject();
324
- await paginator.toObject();
325
- await paginator.toObject();
326
-
327
- expect(db.select).toHaveBeenCalledTimes(2);
328
- });
329
- });
330
-
331
- describe('test total() usage', () => {
332
- it('should get total number of data using default countTotalItems method', async () => {
333
- const paginator = new Paginator(
334
- db,
335
- 'SELECT * FROM total_tests',
336
- {},
337
- {
338
- currentPage: 1,
339
- }
340
- );
341
-
342
- expect(await paginator.total()).toEqual(30);
343
- expect(db.select).toHaveBeenCalled();
344
- });
345
- });
346
-
347
- describe('test lastPage() usage', () => {
348
- it('should get the last page using default countTotalItems method when getting total data', async () => {
349
- const paginator1 = new Paginator(
350
- db,
351
- 'SELECT * FROM total_tests',
352
- {},
353
- {
354
- currentPage: 1,
355
- }
356
- );
357
- expect(await paginator1.lastPage()).toEqual(3);
358
-
359
- const paginator2 = new Paginator(
360
- db,
361
- 'SELECT * FROM total_tests',
362
- {},
363
- {
364
- perPage: 5,
365
- currentPage: 1,
366
- }
367
- );
368
- expect(await paginator2.lastPage()).toEqual(6);
369
-
370
- const paginator3 = new Paginator(
371
- db,
372
- 'SELECT * FROM total_tests',
373
- {},
374
- {
375
- perPage: 7,
376
- currentPage: 1,
377
- }
378
- );
379
- expect(await paginator3.lastPage()).toEqual(5);
380
-
381
- expect(db.select).toHaveBeenCalled();
382
- });
383
- });
@@ -1,55 +0,0 @@
1
- import { S3 } from 'aws-sdk';
2
-
3
- import S3Service from '../S3Service';
4
-
5
- describe('ServicesGroup: test S3Service instantiation', () => {
6
- it('test instantiate default S3Service', () => {
7
- // eslint-disable-next-line no-unused-vars
8
- const s3Instance = new S3Service();
9
-
10
- expect(S3).toHaveBeenCalledWith({});
11
- });
12
-
13
- it('test instantiate S3Service with custom options', () => {
14
- // eslint-disable-next-line no-unused-vars
15
- const s3Instance = new S3Service({
16
- accessKeyId: 'aws.s3.options.accessKeyId',
17
- secretAccessKey: 'aws.s3.options.secretAccessKey',
18
- region: 'aws.s3.options.region',
19
- });
20
-
21
- expect(S3).toHaveBeenCalledWith({
22
- accessKeyId: 'aws.s3.options.accessKeyId',
23
- secretAccessKey: 'aws.s3.options.secretAccessKey',
24
- region: 'aws.s3.options.region',
25
- });
26
- });
27
- });
28
-
29
- describe('ServicesGroup: test S3Service usage', () => {
30
- it('test getObject', () => {
31
- // eslint-disable-next-line no-unused-vars
32
- const s3Instance = new S3Service();
33
-
34
- return expect(
35
- s3Instance.getObject('someKey', 'someBucket')
36
- ).resolves.toMatchObject({
37
- LastModified: '2019-09-04T05:00:57.000Z',
38
- ContentLength: 27892,
39
- ETag: '38e6c8a510f49edec0ad4244a7665312',
40
- ContentType: '.jpg',
41
- Metadata: {},
42
- Body: {
43
- type: 'Buffer',
44
- data: [],
45
- },
46
- mocked: {
47
- opts: {},
48
- params: {
49
- Key: 'someKey',
50
- Bucket: 'someBucket',
51
- },
52
- },
53
- });
54
- });
55
- });
@@ -1,47 +0,0 @@
1
- import aws from 'Config/aws'; // eslint-disable-line import/no-unresolved
2
- import { SQS } from 'aws-sdk';
3
- import SQSService from '../SQSService';
4
-
5
- describe('ServicesGroup: test SQSService instantiation', () => {
6
- it('test instantiate default SQSService', () => {
7
- // eslint-disable-next-line no-unused-vars
8
- const sqs = new SQSService();
9
-
10
- expect(SQS).toHaveBeenCalledWith({});
11
- });
12
-
13
- it('test instantiate SQSService with custom options', () => {
14
- // eslint-disable-next-line no-unused-vars
15
- const sqs = new SQSService({
16
- accessKeyId: 'aws.sqs.options.accessKeyId',
17
- secretAccessKey: 'aws.sqs.options.secretAccessKey',
18
- region: 'aws.sqs.options.region',
19
- });
20
-
21
- expect(SQS).toHaveBeenCalledWith({
22
- accessKeyId: 'aws.sqs.options.accessKeyId',
23
- secretAccessKey: 'aws.sqs.options.secretAccessKey',
24
- region: 'aws.sqs.options.region',
25
- });
26
- });
27
- });
28
-
29
- describe('ServicesGroup: test SQSService usage', () => {
30
- it('test dispatch', () => {
31
- // eslint-disable-next-line no-unused-vars
32
- const sqs = new SQSService({}, aws.sqs.queues);
33
-
34
- return expect(
35
- sqs.dispatch({ someData: 'someValue' }, 'pingQueue')
36
- ).resolves.toMatchObject({
37
- MessageId: 'MessageId',
38
- mocked: {
39
- opts: {},
40
- params: {
41
- MessageBody: '{"someData":"someValue"}',
42
- QueueUrl: `${aws.sqs.queues.pingQueue.url}`,
43
- },
44
- },
45
- });
46
- });
47
- });
@@ -1,103 +0,0 @@
1
- /* eslint-disable no-console */
2
- /* eslint-disable no-unused-vars */
3
- import AWS from 'aws-sdk';
4
- import {
5
- initialize,
6
- handleSuccess,
7
- handleFail,
8
- sendRequest,
9
- signedRequest,
10
- } from '../aws/SignedRequest';
11
-
12
- const httpResp = {
13
- statusCode: 0,
14
- on: (key, cb) => {
15
- if (key === 'data') {
16
- cb('{"data": "mockedData"}');
17
- } else if (key === 'end') {
18
- cb();
19
- }
20
- },
21
- };
22
-
23
- const wrongHttpResp = {
24
- statusCode: 0,
25
- on: (key, cb) => {
26
- if (key === 'data') {
27
- cb('notJsonFormat');
28
- } else if (key === 'end') {
29
- cb();
30
- }
31
- },
32
- };
33
-
34
- // mock the process.nextTick
35
- process.nextTick = jest.fn().mockImplementation(cb => {
36
- cb();
37
- });
38
-
39
- describe('ServicesGroup: test SignedRequest', () => {
40
- it('test handleSuccess', () => {
41
- httpResp.statusCode = 200;
42
- handleSuccess(httpResp, true, (key, body) => {});
43
- handleSuccess(httpResp, false, (key, body) => {});
44
- httpResp.statusCode = 500;
45
- handleSuccess(httpResp, false, (key, body) => {});
46
-
47
- // should throw error 'Invalid JSON response'
48
- wrongHttpResp.statusCode = 200;
49
- handleSuccess(wrongHttpResp, false, (key, body) => {});
50
- wrongHttpResp.statusCode = 500;
51
- handleSuccess(wrongHttpResp, false, (key, body) => {});
52
-
53
- handleSuccess(
54
- {
55
- statusCode: 200,
56
- on: (key, cb) => {
57
- if (key === 'data') {
58
- cb('notJsonFormat');
59
- } else if (key === 'end') {
60
- cb();
61
- }
62
- },
63
- },
64
- false,
65
- (key, body) => {}
66
- );
67
- });
68
-
69
- it('test handleFail', () => {
70
- const cb = error => {
71
- console.log(error);
72
- };
73
- handleFail('mockingErrorAsString', cb);
74
- handleFail(new Error('mockingErrorAsInstance'), cb);
75
- });
76
-
77
- it('test initialize', () => {
78
- initialize(AWS, {
79
- awsCreds: null,
80
- });
81
- });
82
-
83
- it('test sendRequest', () => {
84
- sendRequest({ rawResponse: false, method: 'POST' }, () => {});
85
- });
86
-
87
- it('test signedRequest', () => {
88
- // null params
89
- signedRequest(AWS, {}).send(null, () => {});
90
-
91
- // no method params
92
- signedRequest(AWS, {}).send({}, () => {});
93
-
94
- // with method params
95
- // no AWS
96
- signedRequest(AWS, {}).send(
97
- {
98
- method: 'POST',
99
- },
100
- () => {}
101
- );
102
- });
103
- });
@@ -1,59 +0,0 @@
1
- import AWS from 'aws-sdk'; // eslint-disable-line import/no-extraneous-dependencies
2
- import { Connection } from '@elastic/elasticsearch';
3
- import SignedRequest from './SignedRequest';
4
- import LesgoException from '../../exceptions/LesgoException';
5
-
6
- /* eslint-disable class-methods-use-this */
7
- export default class AwsElasticsearchConnection extends Connection {
8
- constructor(opts) {
9
- super(opts);
10
-
11
- this.opts = opts;
12
- }
13
-
14
- async request(params, cb) {
15
- try {
16
- const awsCreds = await this.getCredentials();
17
-
18
- /* istanbul ignore else */
19
- if (!this.opts.awsRegion) {
20
- throw new LesgoException('Please provide the awsRegion!');
21
- }
22
-
23
- const httpClient = SignedRequest(AWS, {
24
- endpoint: this.opts.url.host,
25
- region: this.opts.awsRegion,
26
- service: 'es',
27
- awsCreds,
28
- });
29
-
30
- httpClient.send(
31
- {
32
- method: params.method,
33
- path: params.path,
34
- message: params.body,
35
- headers: params.headers,
36
- rawResponse: true, // @elastic search expect Raw Response
37
- },
38
- cb
39
- );
40
- } catch (err) {
41
- cb(err);
42
- }
43
- }
44
-
45
- getCredentials() {
46
- // eslint-disable-next-line consistent-return
47
- return new Promise((resolve, reject) => {
48
- if (AWS.config.credentials === null) {
49
- return reject(new Error('Invalid AWS Credentials'));
50
- }
51
-
52
- AWS.config.getCredentials((err, creds) => {
53
- if (err) return reject(err);
54
-
55
- return resolve(creds);
56
- });
57
- });
58
- }
59
- }