@mojaloop/central-ledger 9.2.2 → 15.1.3-snapshot.2

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 (256) hide show
  1. package/.circleci/config.yml +625 -204
  2. package/.env +3 -2
  3. package/.ncurc.yaml +9 -0
  4. package/.nvmrc +1 -1
  5. package/.versionrc +15 -0
  6. package/CHANGELOG.md +353 -0
  7. package/CODEOWNERS +31 -0
  8. package/Dockerfile +20 -14
  9. package/LICENSE.md +4 -4
  10. package/Onboarding.md +0 -7
  11. package/README.md +99 -22
  12. package/audit-resolve.json +136 -1
  13. package/config/default.json +82 -27
  14. package/docker/central-ledger/default.json +68 -21
  15. package/docker/ml-api-adapter/default.json +10 -1
  16. package/docker/wait-for/wait-for-objstore.sh +1 -6
  17. package/docker/wait-for/wait-for.env +1 -1
  18. package/docker-compose.integration.yml +8 -5
  19. package/docker-compose.yml +73 -16
  20. package/migrations/310203_transferParticipant-indexes.js +38 -0
  21. package/migrations/310503_participantLimit-indexes-composite.js +38 -0
  22. package/migrations/{400401_settlementWindowStateChange-indexes.js → 400401_settlmentWindowStateChange-indexes.js} +0 -0
  23. package/migrations/401301_settlementModel-indexes.js +2 -0
  24. package/migrations/500401_quote-hotfix-2719.js +58 -0
  25. package/migrations/500501_feature-fixSubIdRef.js +53 -0
  26. package/migrations/500601_party-2480.js +63 -0
  27. package/migrations/501001_quoteExtension-quote-service-174.js +46 -0
  28. package/migrations/501002_quoteExtension-2522.js +61 -0
  29. package/migrations/800101_feature-fixSubIdRef.js +90 -0
  30. package/migrations/910102_hotfix954.js +4 -1
  31. package/migrations/940100_quotePartyIdInfoExtension.js +52 -0
  32. package/migrations/940101_quotePartyIdInfoExtension-2522.js +64 -0
  33. package/migrations/950100_settlementContentAggregation-decimal184.js +40 -0
  34. package/migrations/950101_transferParticipantStateChange.js +46 -0
  35. package/migrations/950102_settlementModel-adjustPosition.js +42 -0
  36. package/migrations/950103_dropTransferParticipantStateChange.js +47 -0
  37. package/migrations/950104_settlementModel-settlementAccountTypeId.js +79 -0
  38. package/migrations/950106_unique_settlement_model_ledger_account_currency.js +38 -0
  39. package/migrations/950107_settlementWindowContent_foreign_settlementModel.js +60 -0
  40. package/package.json +99 -81
  41. package/scripts/_wait4_all.js +146 -0
  42. package/seeds/amountType.js +4 -6
  43. package/seeds/balanceOfPayments.js +4 -6
  44. package/seeds/bulkProcessingState.js +4 -6
  45. package/seeds/bulkTransferState.js +4 -6
  46. package/seeds/currency.js +4 -6
  47. package/seeds/endpointType.js +128 -7
  48. package/seeds/ledgerAccountType.js +11 -10
  49. package/seeds/ledgerEntryType.js +5 -7
  50. package/seeds/participant.js +4 -6
  51. package/seeds/participantLimitType.js +4 -6
  52. package/seeds/partyIdentifierType.js +4 -6
  53. package/seeds/partyType.js +4 -6
  54. package/seeds/settlementDelay.js +4 -6
  55. package/seeds/settlementGranularity.js +4 -6
  56. package/seeds/settlementInterchange.js +4 -6
  57. package/seeds/settlementState.js +4 -6
  58. package/seeds/settlementWindow1State.js +4 -6
  59. package/seeds/transactionInitiator.js +4 -6
  60. package/seeds/transactionInitiatorType.js +4 -6
  61. package/seeds/transactionScenario.js +4 -6
  62. package/seeds/transferParticipantRoleType.js +4 -6
  63. package/seeds/transferState.js +9 -6
  64. package/src/api/interface/swagger.json +728 -948
  65. package/src/api/ledgerAccountTypes/handler.js +55 -0
  66. package/src/api/ledgerAccountTypes/routes.js +63 -0
  67. package/src/api/metrics/handler.js +2 -2
  68. package/src/api/metrics/routes.js +1 -1
  69. package/src/api/participants/handler.js +43 -35
  70. package/src/api/participants/routes.js +13 -13
  71. package/src/api/root/routes.js +2 -2
  72. package/src/api/settlementModels/handler.js +9 -26
  73. package/src/api/settlementModels/routes.js +4 -4
  74. package/src/api/transactions/handler.js +46 -0
  75. package/src/api/transactions/routes.js +45 -0
  76. package/src/domain/bulkTransfer/index.js +6 -5
  77. package/src/domain/ledgerAccountTypes/index.js +58 -0
  78. package/src/domain/participant/index.js +55 -4
  79. package/src/domain/position/index.js +18 -2
  80. package/src/domain/settlement/index.js +39 -6
  81. package/src/domain/transactions/index.js +61 -0
  82. package/src/domain/transfer/index.js +22 -2
  83. package/src/domain/transfer/transform.js +3 -3
  84. package/src/handlers/admin/handler.js +24 -32
  85. package/src/handlers/bulk/fulfil/handler.js +89 -56
  86. package/src/handlers/bulk/get/handler.js +203 -0
  87. package/src/handlers/bulk/index.js +4 -1
  88. package/src/handlers/bulk/prepare/handler.js +30 -29
  89. package/src/handlers/bulk/processing/handler.js +61 -32
  90. package/src/handlers/bulk/shared/validator.js +13 -1
  91. package/src/handlers/index.js +18 -9
  92. package/src/handlers/positions/handler.js +67 -46
  93. package/src/handlers/register.js +7 -7
  94. package/src/handlers/timeouts/handler.js +9 -4
  95. package/src/handlers/transfers/handler.js +408 -182
  96. package/src/handlers/transfers/validator.js +41 -11
  97. package/src/lib/cache.js +8 -34
  98. package/src/lib/config.js +5 -7
  99. package/src/lib/enum.js +22 -22
  100. package/src/lib/enumCached.js +76 -0
  101. package/src/lib/healthCheck/subServiceHealth.js +2 -2
  102. package/src/lib/requestLogger.js +9 -9
  103. package/src/lib/urlParser.js +1 -1
  104. package/src/models/bulkTransfer/bulkTransfer.js +6 -6
  105. package/src/models/bulkTransfer/bulkTransferAssociation.js +3 -3
  106. package/src/models/bulkTransfer/bulkTransferDuplicateCheck.js +4 -4
  107. package/src/models/bulkTransfer/bulkTransferExtension.js +2 -2
  108. package/src/models/bulkTransfer/bulkTransferFulfilmentDuplicateCheck.js +4 -4
  109. package/src/models/bulkTransfer/bulkTransferStateChange.js +7 -7
  110. package/src/models/bulkTransfer/facade.js +54 -3
  111. package/src/models/bulkTransfer/individualTransfer.js +2 -2
  112. package/src/models/ilpPackets/ilpPacket.js +36 -0
  113. package/src/models/ledgerAccountType/ledgerAccountType.js +139 -3
  114. package/src/models/misc/migrationLock.js +1 -1
  115. package/src/models/misc/segment.js +1 -1
  116. package/src/models/participant/facade.js +226 -76
  117. package/src/models/participant/participant.js +6 -5
  118. package/src/models/participant/participantCached.js +8 -0
  119. package/src/models/participant/participantCurrency.js +7 -7
  120. package/src/models/participant/participantCurrencyCached.js +11 -1
  121. package/src/models/participant/participantLimit.js +13 -13
  122. package/src/models/participant/participantLimitCached.js +124 -0
  123. package/src/models/participant/participantPosition.js +34 -5
  124. package/src/models/participant/participantPositionChange.js +10 -2
  125. package/src/models/position/facade.js +112 -18
  126. package/src/models/position/participantPosition.js +6 -6
  127. package/src/models/settlement/settlementModel.js +92 -17
  128. package/src/models/settlement/settlementModelCached.js +139 -0
  129. package/src/models/transfer/facade.js +97 -32
  130. package/src/models/transfer/ilpPacket.js +4 -4
  131. package/src/models/transfer/transfer.js +7 -7
  132. package/src/models/transfer/transferDuplicateCheck.js +21 -5
  133. package/src/models/transfer/transferError.js +5 -5
  134. package/src/models/transfer/transferErrorDuplicateCheck.js +4 -4
  135. package/src/models/transfer/transferExtension.js +4 -4
  136. package/src/models/transfer/transferFulfilment.js +5 -5
  137. package/src/models/transfer/transferFulfilmentDuplicateCheck.js +4 -4
  138. package/src/models/transfer/transferParticipant.js +3 -3
  139. package/src/models/transfer/transferStateChange.js +11 -11
  140. package/src/models/transfer/transferTimeout.js +5 -5
  141. package/src/schema/bulkTransfer.js +4 -4
  142. package/src/shared/plugins.js +10 -9
  143. package/src/shared/setup.js +69 -46
  144. package/test/integration/domain/participant/index.test.js +2 -0
  145. package/test/integration/handlers/handlers.test.js +605 -166
  146. package/test/integration/handlers/root.test.js +1 -1
  147. package/test/integration/helpers/hubAccounts.js +62 -0
  148. package/test/integration/helpers/ilpPacket.js +1 -1
  149. package/test/integration/helpers/participantFundsInOut.js +80 -0
  150. package/test/integration/helpers/participantLimit.js +6 -1
  151. package/test/integration/helpers/settlementModels.js +88 -0
  152. package/test/integration/helpers/testConsumer.js +163 -0
  153. package/test/integration/helpers/testProducer.js +0 -1
  154. package/test/integration/helpers/transferDuplicateCheck.js +1 -1
  155. package/test/integration/helpers/transferStateChange.js +1 -1
  156. package/test/integration/helpers/transferTestHelper.js +3 -5
  157. package/test/integration/models/transfer/transferStateChange.test.js +6 -0
  158. package/test/unit/api/ledgerAccountTypes/handler.test.js +126 -0
  159. package/test/unit/api/ledgerAccountTypes/routes.test.js +52 -0
  160. package/test/unit/api/participants/handler.test.js +75 -33
  161. package/test/unit/api/root/handler.test.js +1 -1
  162. package/test/unit/api/root/routes.test.js +2 -2
  163. package/test/unit/api/settlementModels/handler.test.js +21 -57
  164. package/test/unit/api/transactions/handler.test.js +108 -0
  165. package/test/unit/api/transactions/routes.test.js +38 -0
  166. package/test/unit/domain/ledgerAccountTypes/index.test.js +197 -0
  167. package/test/unit/domain/participant/index.test.js +115 -2
  168. package/test/unit/domain/settlement/index.test.js +199 -29
  169. package/test/unit/domain/transactions/index.test.js +128 -0
  170. package/test/unit/domain/transfer/index.test.js +1 -0
  171. package/test/unit/domain/transfer/transform.test.js +2 -0
  172. package/test/unit/handlers/admin/handler.test.js +5 -5
  173. package/test/unit/handlers/bulk/get/handler.test.js +401 -0
  174. package/test/unit/handlers/index.test.js +6 -0
  175. package/test/unit/handlers/positions/handler.test.js +26 -0
  176. package/test/unit/handlers/register.test.js +2 -0
  177. package/test/unit/handlers/transfers/handler.test.js +491 -36
  178. package/test/unit/handlers/transfers/validator.test.js +31 -31
  179. package/test/unit/lib/cache.test.js +0 -64
  180. package/test/unit/lib/cachingOfEnums.test.js +121 -0
  181. package/test/unit/lib/config.test.js +34 -0
  182. package/test/unit/lib/enum.test.js +6 -1
  183. package/test/unit/lib/enumCached.test.js +82 -0
  184. package/test/unit/lib/healthCheck/subServiceHealth.test.js +2 -0
  185. package/test/unit/lib/requestLogger.test.js +14 -12
  186. package/test/unit/models/ilpPackets/ilpPacket.test.js +89 -0
  187. package/test/unit/models/ledgerAccountType/ledgerAccountType.test.js +255 -6
  188. package/test/unit/models/misc/migrationLock.test.js +4 -0
  189. package/test/unit/models/misc/segment.test.js +5 -0
  190. package/test/unit/models/participant/facade.test.js +493 -54
  191. package/test/unit/models/participant/participant.test.js +4 -0
  192. package/test/unit/models/participant/participantCurrency.test.js +22 -9
  193. package/test/unit/models/participant/participantCurrencyCached.test.js +1 -1
  194. package/test/unit/models/participant/participantLimit.test.js +97 -0
  195. package/test/unit/models/participant/participantLimitCached.test.js +232 -0
  196. package/test/unit/models/participant/participantPosition.test.js +217 -0
  197. package/test/unit/models/participant/participantPositionChange.test.js +3 -0
  198. package/test/unit/models/position/facade.test.js +318 -29
  199. package/test/unit/models/position/participantPosition.test.js +22 -7
  200. package/test/unit/models/settlement/settlementModel.test.js +18 -37
  201. package/test/unit/models/settlement/settlementModelCached.test.js +171 -0
  202. package/test/unit/models/transfer/facade.test.js +115 -0
  203. package/test/unit/models/transfer/ilpPacket.test.js +28 -11
  204. package/test/unit/models/transfer/transfer.test.js +13 -4
  205. package/test/unit/models/transfer/transferDuplicateCheck.test.js +4 -0
  206. package/test/unit/models/transfer/transferError.test.js +5 -1
  207. package/test/unit/models/transfer/transferErrorDuplicateCheck.test.js +4 -0
  208. package/test/unit/models/transfer/transferExtension.test.js +26 -9
  209. package/test/unit/models/transfer/transferFulfilment.test.js +14 -5
  210. package/test/unit/models/transfer/transferFulfilmentDuplicateCheck.test.js +4 -0
  211. package/test/unit/models/transfer/transferParticipant.test.js +14 -5
  212. package/test/unit/models/transfer/transferStateChange.test.js +3 -0
  213. package/test/unit/models/transfer/transferTimeout.test.js +6 -0
  214. package/test/unit/seeds/amountType.test.js +6 -22
  215. package/test/unit/seeds/balanceOfPayments.test.js +6 -22
  216. package/test/unit/seeds/bulkProcessingState.test.js +84 -0
  217. package/test/unit/{lib/sidecar/nullClient.test.js → seeds/bulkTransferState.test.js} +36 -39
  218. package/test/unit/seeds/currency.test.js +6 -22
  219. package/test/unit/seeds/endpointType.test.js +6 -22
  220. package/test/unit/seeds/ledgerAccountType.test.js +5 -22
  221. package/test/unit/seeds/ledgerEntryType.test.js +6 -22
  222. package/test/unit/seeds/participant.test.js +5 -22
  223. package/test/unit/seeds/participantLimitType.test.js +6 -22
  224. package/test/unit/seeds/partyIdentifierType.test.js +6 -22
  225. package/test/unit/seeds/partyType.test.js +6 -22
  226. package/test/unit/seeds/settlementState.test.js +5 -22
  227. package/test/unit/seeds/settlementWindow1State.test.js +5 -22
  228. package/test/unit/seeds/transactionInitiator.test.js +6 -22
  229. package/test/unit/seeds/transactionInitiatorType.test.js +6 -22
  230. package/test/unit/seeds/transactionScenario.test.js +6 -22
  231. package/test/unit/seeds/transferParticipantRoleType.test.js +6 -22
  232. package/test/unit/seeds/transferState.test.js +6 -22
  233. package/test/unit/shared/plugins.test.js +31 -1
  234. package/test/unit/shared/setup.test.js +25 -36
  235. package/test/util/helpers.js +37 -2
  236. package/test/util/randomTransfers.js +1 -1
  237. package/test/util/scripts/env.sh +6 -5
  238. package/test/util/scripts/populateTestData.sh +204 -181
  239. package/test/util/scripts/populateTestDataForLegacySimulator.sh +261 -0
  240. package/test/util/scripts/restartObjStore.sh +1 -1
  241. package/test-integration.Dockerfile +15 -15
  242. package/test.Dockerfile +12 -12
  243. package/.circleci/_set_up_deploy_envs.sh +0 -47
  244. package/.dockerignore +0 -17
  245. package/.ncurc.json +0 -3
  246. package/server.sh +0 -4
  247. package/sonar-project.properties +0 -17
  248. package/src/lib/sidecar/index.js +0 -47
  249. package/src/lib/sidecar/nullClient.js +0 -18
  250. package/test/.env +0 -8
  251. package/test/integration-config.json +0 -367
  252. package/test/integration-runner.env +0 -31
  253. package/test/integration-runner.sh +0 -264
  254. package/test/spec-runner.sh +0 -132
  255. package/test/unit/lib/sidecar/index.test.js +0 -148
  256. package/test/unit/models/position/participantLimit.test.js +0 -135
@@ -19,6 +19,7 @@
19
19
  - Name Surname <name.surname@gatesfoundation.com>
20
20
 
21
21
  * Georgi Georgiev <georgi.georgiev@modusbox.com>
22
+ * Shashikant Hirugade <shashikant.hirugade@modusbox.com>
22
23
  --------------
23
24
  ******/
24
25
 
@@ -46,7 +47,11 @@ Test('BalanceOfPayments', async (balanceOfPaymentsSeedTest) => {
46
47
  await balanceOfPaymentsSeedTest.test('seed should', async (test) => {
47
48
  const knexStub = sandbox.stub()
48
49
  knexStub.returns({
49
- insert: sandbox.stub().returns(true)
50
+ insert: sandbox.stub().returns({
51
+ onConflict: sandbox.stub().returns({
52
+ ignore: sandbox.stub().returns(true)
53
+ })
54
+ })
50
55
  })
51
56
 
52
57
  try {
@@ -61,27 +66,6 @@ Test('BalanceOfPayments', async (balanceOfPaymentsSeedTest) => {
61
66
  }
62
67
  })
63
68
 
64
- await balanceOfPaymentsSeedTest.test('seed should', async (test) => {
65
- function DuplicateEntryError (message) {
66
- this.name = 'DuplicateEntryError'
67
- this.message = message || ''
68
- this.code = 'ER_DUP_ENTRY'
69
- }
70
- DuplicateEntryError.prototype = Error.prototype
71
-
72
- const knexStub = sandbox.stub()
73
- knexStub.throws(new DuplicateEntryError())
74
- try {
75
- const result = await Model.seed(knexStub)
76
- test.equal(result, -1001, 'Duplicate error intercepted and ignored')
77
- test.end()
78
- } catch (err) {
79
- Logger.error(`balanceOfPayments seed failed with error - ${err}`)
80
- test.fail()
81
- test.end()
82
- }
83
- })
84
-
85
69
  await balanceOfPaymentsSeedTest.test('seed should', async (test) => {
86
70
  const knexStub = sandbox.stub()
87
71
  knexStub.returns({
@@ -0,0 +1,84 @@
1
+ /*****
2
+ License
3
+ --------------
4
+ Copyright © 2017 Bill & Melinda Gates Foundation
5
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
6
+ http://www.apache.org/licenses/LICENSE-2.0
7
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
8
+ Contributors
9
+ --------------
10
+ This is the official list of the Mojaloop project contributors for this file.
11
+ Names of the original copyright holders (individuals or organizations)
12
+ should be listed with a '*' in the first column. People who have
13
+ contributed from an organization can be listed under the organization
14
+ that actually holds the copyright for their contributions (see the
15
+ Gates Foundation organization for an example). Those individuals should have
16
+ their names indented and be marked with a '-'. Email address can be added
17
+ optionally within square brackets <email>.
18
+ * Gates Foundation
19
+ - Name Surname <name.surname@gatesfoundation.com>
20
+
21
+ * Shashikant Hirugade <shashikant.hirugade@modusbox.com>
22
+ --------------
23
+ ******/
24
+
25
+ 'use strict'
26
+
27
+ const Test = require('tapes')(require('tape'))
28
+ const Sinon = require('sinon')
29
+ const Logger = require('@mojaloop/central-services-logger')
30
+ const Model = require('../../../seeds/bulkProcessingState')
31
+
32
+ Test('BulkProcessingState', async (bulkProcessingStateSeedTest) => {
33
+ let sandbox
34
+
35
+ bulkProcessingStateSeedTest.beforeEach(t => {
36
+ sandbox = Sinon.createSandbox()
37
+ t.end()
38
+ })
39
+
40
+ bulkProcessingStateSeedTest.afterEach(t => {
41
+ sandbox.restore()
42
+ t.end()
43
+ })
44
+
45
+ await bulkProcessingStateSeedTest.test('seed should', async (test) => {
46
+ const knexStub = sandbox.stub()
47
+ knexStub.returns({
48
+ insert: sandbox.stub().returns({
49
+ onConflict: sandbox.stub().returns({
50
+ ignore: sandbox.stub().returns(true)
51
+ })
52
+ })
53
+ })
54
+
55
+ try {
56
+ const result = await Model.seed(knexStub)
57
+ test.equal(result, true, 'call insert')
58
+ test.ok(knexStub.withArgs('bulkProcessingState').calledOnce, 'knex called with bulkProcessingState once')
59
+ test.end()
60
+ } catch (err) {
61
+ Logger.error(`bulkProcessingState seed failed with error - ${err}`)
62
+ test.fail()
63
+ test.end()
64
+ }
65
+ })
66
+
67
+ await bulkProcessingStateSeedTest.test('seed should', async (test) => {
68
+ const knexStub = sandbox.stub()
69
+ knexStub.returns({
70
+ insert: sandbox.stub().throws(new Error())
71
+ })
72
+ try {
73
+ const result = await Model.seed(knexStub)
74
+ test.equal(result, -1000, 'Generic error intercepted and logged')
75
+ test.end()
76
+ } catch (err) {
77
+ Logger.error(`bulkProcessingState seed failed with error - ${err}`)
78
+ test.fail()
79
+ test.end()
80
+ }
81
+ })
82
+
83
+ await bulkProcessingStateSeedTest.end()
84
+ })
@@ -18,70 +18,67 @@
18
18
  * Gates Foundation
19
19
  - Name Surname <name.surname@gatesfoundation.com>
20
20
 
21
- * Georgi Georgiev <georgi.georgiev@modusbox.com>
22
- * Rajiv Mothilal <rajiv.mothilal@modusbox.com>
23
- * Miguel de Barros <miguel.debarros@modusbox.com>
21
+ * Shashikant Hirugade <shashikant.hirugade@modusbox.com>
24
22
  --------------
25
23
  ******/
26
24
 
27
25
  'use strict'
28
26
 
29
- const src = '../../../../src'
30
27
  const Test = require('tapes')(require('tape'))
31
28
  const Sinon = require('sinon')
32
29
  const Logger = require('@mojaloop/central-services-logger')
33
- const NullClient = require(`${src}/lib/sidecar/nullClient`)
30
+ const Model = require('../../../seeds/bulkTransferState')
34
31
 
35
- Test('Null SidecarClient', nullSidecarTest => {
32
+ Test('BulkTransferState', async (bulkTransferStateSeedTest) => {
36
33
  let sandbox
37
34
 
38
- nullSidecarTest.beforeEach(t => {
35
+ bulkTransferStateSeedTest.beforeEach(t => {
39
36
  sandbox = Sinon.createSandbox()
40
- sandbox.stub(Logger)
41
37
  t.end()
42
38
  })
43
39
 
44
- nullSidecarTest.afterEach(t => {
40
+ bulkTransferStateSeedTest.afterEach(t => {
45
41
  sandbox.restore()
46
42
  t.end()
47
43
  })
48
44
 
49
- nullSidecarTest.test('create should', createTest => {
50
- createTest.test('create new null client', test => {
51
- const client = NullClient.create()
52
- test.ok(client)
53
- test.end()
54
- })
55
-
56
- createTest.end()
57
- })
58
-
59
- nullSidecarTest.test('connect should', connectTest => {
60
- connectTest.test('log and return resolved promise immediately', test => {
61
- const client = NullClient.create()
62
-
63
- client.connect()
64
- .then(() => {
65
- test.ok(Logger.debug.calledWith('Sidecar disabled: connecting in NullClient'))
66
- test.end()
45
+ await bulkTransferStateSeedTest.test('seed should', async (test) => {
46
+ const knexStub = sandbox.stub()
47
+ knexStub.returns({
48
+ insert: sandbox.stub().returns({
49
+ onConflict: sandbox.stub().returns({
50
+ ignore: sandbox.stub().returns(true)
67
51
  })
52
+ })
68
53
  })
69
54
 
70
- connectTest.end()
55
+ try {
56
+ const result = await Model.seed(knexStub)
57
+ test.equal(result, true, 'call insert')
58
+ test.ok(knexStub.withArgs('bulkTransferState').calledOnce, 'knex called with bulkTransferState once')
59
+ test.end()
60
+ } catch (err) {
61
+ Logger.error(`bulkTransferState seed failed with error - ${err}`)
62
+ test.fail()
63
+ test.end()
64
+ }
71
65
  })
72
66
 
73
- nullSidecarTest.test('write should', writeTest => {
74
- writeTest.test('log message', test => {
75
- const client = NullClient.create()
76
-
77
- const msg = 'This is a test'
78
- client.write(msg)
79
- test.ok(Logger.debug.calledWith(`Sidecar disabled: writing message ${msg} in NullClient`))
80
- test.end()
67
+ await bulkTransferStateSeedTest.test('seed should', async (test) => {
68
+ const knexStub = sandbox.stub()
69
+ knexStub.returns({
70
+ insert: sandbox.stub().throws(new Error())
81
71
  })
82
-
83
- writeTest.end()
72
+ try {
73
+ const result = await Model.seed(knexStub)
74
+ test.equal(result, -1000, 'Generic error intercepted and logged')
75
+ test.end()
76
+ } catch (err) {
77
+ Logger.error(`bulkTransferState seed failed with error - ${err}`)
78
+ test.fail()
79
+ test.end()
80
+ }
84
81
  })
85
82
 
86
- nullSidecarTest.end()
83
+ await bulkTransferStateSeedTest.end()
87
84
  })
@@ -19,6 +19,7 @@
19
19
  - Name Surname <name.surname@gatesfoundation.com>
20
20
 
21
21
  * Georgi Georgiev <georgi.georgiev@modusbox.com>
22
+ * Shashikant Hirugade <shashikant.hirugade@modusbox.com>
22
23
  --------------
23
24
  ******/
24
25
 
@@ -45,7 +46,11 @@ Test('Currency', async (currencySeedTest) => {
45
46
  await currencySeedTest.test('seed should', async (test) => {
46
47
  const knexStub = sandbox.stub()
47
48
  knexStub.returns({
48
- insert: sandbox.stub().returns(true)
49
+ insert: sandbox.stub().returns({
50
+ onConflict: sandbox.stub().returns({
51
+ ignore: sandbox.stub().returns(true)
52
+ })
53
+ })
49
54
  })
50
55
 
51
56
  try {
@@ -60,27 +65,6 @@ Test('Currency', async (currencySeedTest) => {
60
65
  }
61
66
  })
62
67
 
63
- await currencySeedTest.test('seed should', async (test) => {
64
- function DuplicateEntryError (message) {
65
- this.name = 'DuplicateEntryError'
66
- this.message = message || ''
67
- this.code = 'ER_DUP_ENTRY'
68
- }
69
- DuplicateEntryError.prototype = Error.prototype
70
-
71
- const knexStub = sandbox.stub()
72
- knexStub.throws(new DuplicateEntryError())
73
- try {
74
- const result = await Model.seed(knexStub)
75
- test.equal(result, -1001, 'Duplicate error intercepted and ignored')
76
- test.end()
77
- } catch (err) {
78
- Logger.error(`currency seed failed with error - ${err}`)
79
- test.fail()
80
- test.end()
81
- }
82
- })
83
-
84
68
  await currencySeedTest.test('seed should', async (test) => {
85
69
  const knexStub = sandbox.stub()
86
70
  knexStub.returns({
@@ -19,6 +19,7 @@
19
19
  - Name Surname <name.surname@gatesfoundation.com>
20
20
 
21
21
  * Georgi Georgiev <georgi.georgiev@modusbox.com>
22
+ * Shashikant Hirugade <shashikant.hirugade@modusbox.com>
22
23
  --------------
23
24
  ******/
24
25
 
@@ -45,7 +46,11 @@ Test('Endpoint type', async (endpointTypeTest) => {
45
46
  await endpointTypeTest.test('seed should', async (test) => {
46
47
  const knexStub = sandbox.stub()
47
48
  knexStub.returns({
48
- insert: sandbox.stub().returns(true)
49
+ insert: sandbox.stub().returns({
50
+ onConflict: sandbox.stub().returns({
51
+ ignore: sandbox.stub().returns(true)
52
+ })
53
+ })
49
54
  })
50
55
 
51
56
  try {
@@ -60,27 +65,6 @@ Test('Endpoint type', async (endpointTypeTest) => {
60
65
  }
61
66
  })
62
67
 
63
- await endpointTypeTest.test('seed should', async (test) => {
64
- function DuplicateEntryError (message) {
65
- this.name = 'DuplicateEntryError'
66
- this.message = message || ''
67
- this.code = 'ER_DUP_ENTRY'
68
- }
69
- DuplicateEntryError.prototype = Error.prototype
70
-
71
- const knexStub = sandbox.stub()
72
- knexStub.throws(new DuplicateEntryError())
73
- try {
74
- const result = await Model.seed(knexStub)
75
- test.equal(result, -1001, 'Duplicate error intercepted and ignored')
76
- test.end()
77
- } catch (err) {
78
- Logger.error(`endpointType seed failed with error - ${err}`)
79
- test.fail()
80
- test.end()
81
- }
82
- })
83
-
84
68
  await endpointTypeTest.test('seed should', async (test) => {
85
69
  const knexStub = sandbox.stub()
86
70
  knexStub.returns({
@@ -45,7 +45,11 @@ Test('Ledger Account type', async (ledgerAccountTypeTest) => {
45
45
  await ledgerAccountTypeTest.test('seed should', async (test) => {
46
46
  const knexStub = sandbox.stub()
47
47
  knexStub.returns({
48
- insert: sandbox.stub().returns(true)
48
+ insert: sandbox.stub().returns({
49
+ onConflict: sandbox.stub().returns({
50
+ ignore: sandbox.stub().returns(true)
51
+ })
52
+ })
49
53
  })
50
54
 
51
55
  try {
@@ -60,27 +64,6 @@ Test('Ledger Account type', async (ledgerAccountTypeTest) => {
60
64
  }
61
65
  })
62
66
 
63
- await ledgerAccountTypeTest.test('seed should', async (test) => {
64
- function DuplicateEntryError (message) {
65
- this.name = 'DuplicateEntryError'
66
- this.message = message || ''
67
- this.code = 'ER_DUP_ENTRY'
68
- }
69
- DuplicateEntryError.prototype = Error.prototype
70
-
71
- const knexStub = sandbox.stub()
72
- knexStub.throws(new DuplicateEntryError())
73
- try {
74
- const result = await Model.seed(knexStub)
75
- test.equal(result, -1001, 'Duplicate error intercepted and ignored')
76
- test.end()
77
- } catch (err) {
78
- Logger.error(`ledgerAccountType seed failed with error - ${err}`)
79
- test.fail()
80
- test.end()
81
- }
82
- })
83
-
84
67
  await ledgerAccountTypeTest.test('seed should', async (test) => {
85
68
  const knexStub = sandbox.stub()
86
69
  knexStub.returns({
@@ -19,6 +19,7 @@
19
19
  - Name Surname <name.surname@gatesfoundation.com>
20
20
 
21
21
  * Georgi Georgiev <georgi.georgiev@modusbox.com>
22
+ * Shashikant Hirugade <shashikant.hirugade@modusbox.com>
22
23
  --------------
23
24
  ******/
24
25
 
@@ -45,7 +46,11 @@ Test('Ledger entry type', async (ledgerEntryTypeTest) => {
45
46
  await ledgerEntryTypeTest.test('seed should', async (test) => {
46
47
  const knexStub = sandbox.stub()
47
48
  knexStub.returns({
48
- insert: sandbox.stub().returns(true)
49
+ insert: sandbox.stub().returns({
50
+ onConflict: sandbox.stub().returns({
51
+ ignore: sandbox.stub().returns(true)
52
+ })
53
+ })
49
54
  })
50
55
 
51
56
  try {
@@ -60,27 +65,6 @@ Test('Ledger entry type', async (ledgerEntryTypeTest) => {
60
65
  }
61
66
  })
62
67
 
63
- await ledgerEntryTypeTest.test('seed should', async (test) => {
64
- function DuplicateEntryError (message) {
65
- this.name = 'DuplicateEntryError'
66
- this.message = message || ''
67
- this.code = 'ER_DUP_ENTRY'
68
- }
69
- DuplicateEntryError.prototype = Error.prototype
70
-
71
- const knexStub = sandbox.stub()
72
- knexStub.throws(new DuplicateEntryError())
73
- try {
74
- const result = await Model.seed(knexStub)
75
- test.equal(result, -1001, 'Duplicate error intercepted and ignored')
76
- test.end()
77
- } catch (err) {
78
- Logger.error(`ledgerEntryType seed failed with error - ${err}`)
79
- test.fail()
80
- test.end()
81
- }
82
- })
83
-
84
68
  await ledgerEntryTypeTest.test('seed should', async (test) => {
85
69
  const knexStub = sandbox.stub()
86
70
  knexStub.returns({
@@ -45,7 +45,11 @@ Test('Participant ', async (participantTest) => {
45
45
  await participantTest.test('seed should', async (test) => {
46
46
  const knexStub = sandbox.stub()
47
47
  knexStub.returns({
48
- insert: sandbox.stub().returns(true)
48
+ insert: sandbox.stub().returns({
49
+ onConflict: sandbox.stub().returns({
50
+ ignore: sandbox.stub().returns(true)
51
+ })
52
+ })
49
53
  })
50
54
 
51
55
  try {
@@ -60,27 +64,6 @@ Test('Participant ', async (participantTest) => {
60
64
  }
61
65
  })
62
66
 
63
- await participantTest.test('seed should', async (test) => {
64
- function DuplicateEntryError (message) {
65
- this.name = 'DuplicateEntryError'
66
- this.message = message || ''
67
- this.code = 'ER_DUP_ENTRY'
68
- }
69
- DuplicateEntryError.prototype = Error.prototype
70
-
71
- const knexStub = sandbox.stub()
72
- knexStub.throws(new DuplicateEntryError())
73
- try {
74
- const result = await Model.seed(knexStub)
75
- test.equal(result, -1001, 'Duplicate error intercepted and ignored')
76
- test.end()
77
- } catch (err) {
78
- Logger.error(`participant seed failed with error - ${err}`)
79
- test.fail()
80
- test.end()
81
- }
82
- })
83
-
84
67
  await participantTest.test('seed should', async (test) => {
85
68
  const knexStub = sandbox.stub()
86
69
  knexStub.returns({
@@ -19,6 +19,7 @@
19
19
  - Name Surname <name.surname@gatesfoundation.com>
20
20
 
21
21
  * Georgi Georgiev <georgi.georgiev@modusbox.com>
22
+ * Shashikant Hirugade <shashikant.hirugade@modusbox.com>
22
23
  --------------
23
24
  ******/
24
25
 
@@ -45,7 +46,11 @@ Test('Participant limit type', async (participantLimitTypeTest) => {
45
46
  await participantLimitTypeTest.test('seed should', async (test) => {
46
47
  const knexStub = sandbox.stub()
47
48
  knexStub.returns({
48
- insert: sandbox.stub().returns(true)
49
+ insert: sandbox.stub().returns({
50
+ onConflict: sandbox.stub().returns({
51
+ ignore: sandbox.stub().returns(true)
52
+ })
53
+ })
49
54
  })
50
55
 
51
56
  try {
@@ -60,27 +65,6 @@ Test('Participant limit type', async (participantLimitTypeTest) => {
60
65
  }
61
66
  })
62
67
 
63
- await participantLimitTypeTest.test('seed should', async (test) => {
64
- function DuplicateEntryError (message) {
65
- this.name = 'DuplicateEntryError'
66
- this.message = message || ''
67
- this.code = 'ER_DUP_ENTRY'
68
- }
69
- DuplicateEntryError.prototype = Error.prototype
70
-
71
- const knexStub = sandbox.stub()
72
- knexStub.throws(new DuplicateEntryError())
73
- try {
74
- const result = await Model.seed(knexStub)
75
- test.equal(result, -1001, 'Duplicate error intercepted and ignored')
76
- test.end()
77
- } catch (err) {
78
- Logger.error(`participantLimitType seed failed with error - ${err}`)
79
- test.fail()
80
- test.end()
81
- }
82
- })
83
-
84
68
  await participantLimitTypeTest.test('seed should', async (test) => {
85
69
  const knexStub = sandbox.stub()
86
70
  knexStub.returns({
@@ -19,6 +19,7 @@
19
19
  - Name Surname <name.surname@gatesfoundation.com>
20
20
 
21
21
  * Georgi Georgiev <georgi.georgiev@modusbox.com>
22
+ * Shashikant Hirugade <shashikant.hirugade@modusbox.com>
22
23
  --------------
23
24
  ******/
24
25
 
@@ -46,7 +47,11 @@ Test('PartyIdentifierType', async (partyIdentifierTypeSeedTest) => {
46
47
  await partyIdentifierTypeSeedTest.test('seed should', async (test) => {
47
48
  const knexStub = sandbox.stub()
48
49
  knexStub.returns({
49
- insert: sandbox.stub().returns(true)
50
+ insert: sandbox.stub().returns({
51
+ onConflict: sandbox.stub().returns({
52
+ ignore: sandbox.stub().returns(true)
53
+ })
54
+ })
50
55
  })
51
56
 
52
57
  try {
@@ -61,27 +66,6 @@ Test('PartyIdentifierType', async (partyIdentifierTypeSeedTest) => {
61
66
  }
62
67
  })
63
68
 
64
- await partyIdentifierTypeSeedTest.test('seed should', async (test) => {
65
- function DuplicateEntryError (message) {
66
- this.name = 'DuplicateEntryError'
67
- this.message = message || ''
68
- this.code = 'ER_DUP_ENTRY'
69
- }
70
- DuplicateEntryError.prototype = Error.prototype
71
-
72
- const knexStub = sandbox.stub()
73
- knexStub.throws(new DuplicateEntryError())
74
- try {
75
- const result = await Model.seed(knexStub)
76
- test.equal(result, -1001, 'Duplicate error intercepted and ignored')
77
- test.end()
78
- } catch (err) {
79
- Logger.error(`partyIdentifierType seed failed with error - ${err}`)
80
- test.fail()
81
- test.end()
82
- }
83
- })
84
-
85
69
  await partyIdentifierTypeSeedTest.test('seed should', async (test) => {
86
70
  const knexStub = sandbox.stub()
87
71
  knexStub.returns({
@@ -19,6 +19,7 @@
19
19
  - Name Surname <name.surname@gatesfoundation.com>
20
20
 
21
21
  * Georgi Georgiev <georgi.georgiev@modusbox.com>
22
+ * Shashikant Hirugade <shashikant.hirugade@modusbox.com>
22
23
  --------------
23
24
  ******/
24
25
 
@@ -46,7 +47,11 @@ Test('partyType', async (partyTypeTest) => {
46
47
  await partyTypeTest.test('seed should', async (test) => {
47
48
  const knexStub = sandbox.stub()
48
49
  knexStub.returns({
49
- insert: sandbox.stub().returns(true)
50
+ insert: sandbox.stub().returns({
51
+ onConflict: sandbox.stub().returns({
52
+ ignore: sandbox.stub().returns(true)
53
+ })
54
+ })
50
55
  })
51
56
 
52
57
  try {
@@ -61,27 +66,6 @@ Test('partyType', async (partyTypeTest) => {
61
66
  }
62
67
  })
63
68
 
64
- await partyTypeTest.test('seed should', async (test) => {
65
- function DuplicateEntryError (message) {
66
- this.name = 'DuplicateEntryError'
67
- this.message = message || ''
68
- this.code = 'ER_DUP_ENTRY'
69
- }
70
- DuplicateEntryError.prototype = Error.prototype
71
-
72
- const knexStub = sandbox.stub()
73
- knexStub.throws(new DuplicateEntryError())
74
- try {
75
- const result = await Model.seed(knexStub)
76
- test.equal(result, -1001, 'Duplicate error intercepted and ignored')
77
- test.end()
78
- } catch (err) {
79
- Logger.error(`partyType seed failed with error - ${err}`)
80
- test.fail()
81
- test.end()
82
- }
83
- })
84
-
85
69
  await partyTypeTest.test('seed should', async (test) => {
86
70
  const knexStub = sandbox.stub()
87
71
  knexStub.returns({
@@ -45,7 +45,11 @@ Test('Settlement State', async (settlementStateTest) => {
45
45
  await settlementStateTest.test('seed should', async (test) => {
46
46
  const knexStub = sandbox.stub()
47
47
  knexStub.returns({
48
- insert: sandbox.stub().returns(true)
48
+ insert: sandbox.stub().returns({
49
+ onConflict: sandbox.stub().returns({
50
+ ignore: sandbox.stub().returns(true)
51
+ })
52
+ })
49
53
  })
50
54
 
51
55
  try {
@@ -60,27 +64,6 @@ Test('Settlement State', async (settlementStateTest) => {
60
64
  }
61
65
  })
62
66
 
63
- await settlementStateTest.test('seed should', async (test) => {
64
- function DuplicateEntryError (message) {
65
- this.name = 'DuplicateEntryError'
66
- this.message = message || ''
67
- this.code = 'ER_DUP_ENTRY'
68
- }
69
- DuplicateEntryError.prototype = Error.prototype
70
-
71
- const knexStub = sandbox.stub()
72
- knexStub.throws(new DuplicateEntryError())
73
- try {
74
- const result = await Model.seed(knexStub)
75
- test.equal(result, -1001, 'Duplicate error intercepted and ignored')
76
- test.end()
77
- } catch (err) {
78
- Logger.error(`settlementState seed failed with error - ${err}`)
79
- test.fail()
80
- test.end()
81
- }
82
- })
83
-
84
67
  await settlementStateTest.test('seed should', async (test) => {
85
68
  const knexStub = sandbox.stub()
86
69
  knexStub.returns({