@mojaloop/sdk-scheme-adapter 17.0.0 → 17.0.2-snapshot.8

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 (35) hide show
  1. package/.circleci/config.yml +463 -182
  2. package/CHANGELOG.md +7 -0
  3. package/Dockerfile +12 -5
  4. package/audit-resolve.json +27 -68
  5. package/docker-compose.yml +4 -2
  6. package/package.json +21 -19
  7. package/src/index.js +0 -2
  8. package/src/lib/model/AccountsModel.js +4 -7
  9. package/src/lib/model/Async2SyncModel.js +4 -3
  10. package/src/lib/model/InboundTransfersModel.js +16 -14
  11. package/src/lib/model/OutboundBulkQuotesModel.js +4 -7
  12. package/src/lib/model/OutboundBulkTransfersModel.js +4 -7
  13. package/src/lib/model/OutboundRequestToPayModel.js +5 -10
  14. package/src/lib/model/OutboundRequestToPayTransferModel.js +6 -12
  15. package/src/lib/model/OutboundTransfersModel.js +10 -9
  16. package/src/lib/model/common/BackendError.js +1 -13
  17. package/src/lib/model/common/Enums.js +30 -0
  18. package/src/lib/model/common/index.js +3 -2
  19. package/test/config/integration.env +2 -2
  20. package/test/integration/lib/Outbound/parties.test.js +2 -1
  21. package/test/integration/lib/Outbound/quotes.test.js +3 -1
  22. package/test/integration/lib/Outbound/simpleTransfers.test.js +2 -1
  23. package/test/unit/inboundApi/handlers.test.js +3 -1
  24. package/test/unit/lib/model/AccountsModel.test.js +2 -1
  25. package/test/unit/lib/model/InboundTransfersModel.test.js +10 -6
  26. package/test/unit/lib/model/OutboundBulkQuotesModel.test.js +5 -3
  27. package/test/unit/lib/model/OutboundBulkTransfersModel.test.js +4 -3
  28. package/test/unit/lib/model/OutboundRequestToPayModel.test.js +3 -2
  29. package/test/unit/lib/model/OutboundRequestToPayTransferModel.test.js +4 -3
  30. package/test/unit/lib/model/OutboundTransfersModel.test.js +37 -34
  31. package/test/unit/lib/model/PartiesModel.test.js +2 -1
  32. package/test/unit/lib/model/QuotesModel.test.js +2 -1
  33. package/test/unit/lib/model/TransfersModel.test.js +2 -1
  34. package/test/unit/lib/model/data/getBulkTransfersBackendResponse.json +1 -1
  35. package/test/unit/lib/model/data/getBulkTransfersMojaloopResponse.json +1 -1
@@ -28,6 +28,9 @@ const payeeParty = require('./data/payeeParty');
28
28
  const quoteResponseTemplate = require('./data/quoteResponse');
29
29
  const transferFulfil = require('./data/transferFulfil');
30
30
 
31
+ const { SDKStateEnum } = require('../../../../src/lib/model/common');
32
+ const FSPIOPTransferStateEnum = require('@mojaloop/central-services-shared').Enum.Transfers.TransferState;
33
+
31
34
  const genPartyId = (party) => {
32
35
  const { partyIdType, partyIdentifier, partySubIdOrType } = party.body.party.partyIdInfo;
33
36
  return PartiesModel.channelName({
@@ -134,7 +137,7 @@ describe('outboundModel', () => {
134
137
  await expect(model.run()).rejects.toThrowError(expectError);
135
138
  } else {
136
139
  const result = await model.run();
137
- await expect(result.currentState).toBe('COMPLETED');
140
+ await expect(result.currentState).toBe(SDKStateEnum.COMPLETED);
138
141
  }
139
142
  }
140
143
 
@@ -250,7 +253,7 @@ describe('outboundModel', () => {
250
253
  expect(MojaloopRequests.__patchTransfers).toHaveBeenCalledTimes(0);
251
254
 
252
255
  // check we stopped at payeeResolved state
253
- expect(result.currentState).toBe('COMPLETED');
256
+ expect(result.currentState).toBe(SDKStateEnum.COMPLETED);
254
257
  expect(StateMachine.__instance.state).toBe('succeeded');
255
258
  });
256
259
 
@@ -275,7 +278,7 @@ describe('outboundModel', () => {
275
278
  return Promise.resolve(dummyRequestsModuleResponse);
276
279
  });
277
280
  const pb = JSON.parse(JSON.stringify(transferFulfil));
278
- pb.data.body.transferState = 'RESERVED';
281
+ pb.data.body.transferState = FSPIOPTransferStateEnum.RESERVED;
279
282
  MojaloopRequests.__postTransfers = jest.fn((postTransfersBody, destFspId) => {
280
283
  //ensure that the `MojaloopRequests.postTransfers` method has been called with the correct arguments
281
284
  // set as the destination FSPID, picked up from the header's value `fspiop-source`
@@ -307,13 +310,13 @@ describe('outboundModel', () => {
307
310
  expect(MojaloopRequests.__postTransfers).toHaveBeenCalledTimes(1);
308
311
  expect(MojaloopRequests.__patchTransfers).toHaveBeenCalledTimes(1);
309
312
  expect(MojaloopRequests.__patchTransfers.mock.calls[0][0]).toEqual(model.data.transferId);
310
- expect(MojaloopRequests.__patchTransfers.mock.calls[0][1].transferState).toEqual('COMMITTED');
313
+ expect(MojaloopRequests.__patchTransfers.mock.calls[0][1].transferState).toEqual(FSPIOPTransferStateEnum.COMMITTED);
311
314
  expect(MojaloopRequests.__patchTransfers.mock.calls[0][1].completedTimestamp).not.toBeUndefined();
312
315
  expect(MojaloopRequests.__patchTransfers.mock.calls[0][2]).toEqual(quoteResponse.data.headers['fspiop-source']);
313
316
 
314
317
 
315
318
  // check we stopped at payeeResolved state
316
- expect(result.currentState).toBe('COMPLETED');
319
+ expect(result.currentState).toBe(SDKStateEnum.COMPLETED);
317
320
  expect(StateMachine.__instance.state).toBe('succeeded');
318
321
  });
319
322
 
@@ -396,7 +399,7 @@ describe('outboundModel', () => {
396
399
  expect(MojaloopRequests.__patchTransfers).toHaveBeenCalledTimes(0);
397
400
 
398
401
  // check we stopped at payeeResolved state
399
- expect(result.currentState).toBe('COMPLETED');
402
+ expect(result.currentState).toBe(SDKStateEnum.COMPLETED);
400
403
  expect(StateMachine.__instance.state).toBe('succeeded');
401
404
  });
402
405
 
@@ -429,7 +432,7 @@ describe('outboundModel', () => {
429
432
  expect(MojaloopRequests.__getTransfers).toHaveBeenCalledTimes(1);
430
433
 
431
434
  // check we stopped at payeeResolved state
432
- expect(result.currentState).toBe('COMPLETED');
435
+ expect(result.currentState).toBe(SDKStateEnum.COMPLETED);
433
436
  expect(StateMachine.__instance.state).toBe('succeeded');
434
437
  });
435
438
 
@@ -458,7 +461,7 @@ describe('outboundModel', () => {
458
461
  const result = await resultPromise;
459
462
 
460
463
  // check we stopped at payeeResolved state
461
- expect(result.currentState).toBe('WAITING_FOR_PARTY_ACCEPTANCE');
464
+ expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_PARTY_ACCEPTANCE);
462
465
  expect(StateMachine.__instance.state).toBe('payeeResolved');
463
466
  });
464
467
 
@@ -490,7 +493,7 @@ describe('outboundModel', () => {
490
493
  const result = await resultPromise;
491
494
 
492
495
  // check we stopped at payeeResolved state
493
- expect(result.currentState).toBe('WAITING_FOR_PARTY_ACCEPTANCE');
496
+ expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_PARTY_ACCEPTANCE);
494
497
  expect(StateMachine.__instance.state).toBe('payeeResolved');
495
498
 
496
499
  // check getParties mojaloop requests method was called with the correct arguments
@@ -521,7 +524,7 @@ describe('outboundModel', () => {
521
524
  // wait for the model to reach a terminal state
522
525
  const result = await resultPromise;
523
526
  // check we stopped at payeeResolved state
524
- expect(result.currentState).toBe('WAITING_FOR_PARTY_ACCEPTANCE');
527
+ expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_PARTY_ACCEPTANCE);
525
528
  expect(StateMachine.__instance.state).toBe('payeeResolved');
526
529
  expect(result.to[0].fspId).toEqual('FirstFspId');
527
530
  expect(result.to[1].fspId).toEqual('SecondFspId');
@@ -552,7 +555,7 @@ describe('outboundModel', () => {
552
555
  let result = await resultPromise;
553
556
 
554
557
  // check we stopped at payeeResolved state
555
- expect(result.currentState).toBe('WAITING_FOR_PARTY_ACCEPTANCE');
558
+ expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_PARTY_ACCEPTANCE);
556
559
  expect(StateMachine.__instance.state).toBe('payeeResolved');
557
560
 
558
561
  const transferId = result.transferId;
@@ -579,7 +582,7 @@ describe('outboundModel', () => {
579
582
  result = await resultPromise;
580
583
 
581
584
  // check we stopped at payeeResolved state
582
- expect(result.currentState).toBe('WAITING_FOR_QUOTE_ACCEPTANCE');
585
+ expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_QUOTE_ACCEPTANCE);
583
586
  expect(StateMachine.__instance.state).toBe('quoteReceived');
584
587
  });
585
588
 
@@ -613,7 +616,7 @@ describe('outboundModel', () => {
613
616
  let result = await resultPromise;
614
617
 
615
618
  // check we stopped at payeeResolved state
616
- expect(result.currentState).toBe('WAITING_FOR_PARTY_ACCEPTANCE');
619
+ expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_PARTY_ACCEPTANCE);
617
620
  expect(StateMachine.__instance.state).toBe('payeeResolved');
618
621
 
619
622
  expect(result.amount).toEqual(initialAmount);
@@ -648,7 +651,7 @@ describe('outboundModel', () => {
648
651
  result = await resultPromise;
649
652
 
650
653
  // check we stopped at quoteReceived state
651
- expect(result.currentState).toBe('WAITING_FOR_QUOTE_ACCEPTANCE');
654
+ expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_QUOTE_ACCEPTANCE);
652
655
  expect(StateMachine.__instance.state).toBe('quoteReceived');
653
656
 
654
657
  // check the accept party key got merged to the state
@@ -692,7 +695,7 @@ describe('outboundModel', () => {
692
695
  let result = await resultPromise;
693
696
 
694
697
  // check we stopped at payeeResolved state
695
- expect(result.currentState).toBe('WAITING_FOR_PARTY_ACCEPTANCE');
698
+ expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_PARTY_ACCEPTANCE);
696
699
  expect(StateMachine.__instance.state).toBe('payeeResolved');
697
700
 
698
701
  expect(result.amount).toEqual(initialAmount);
@@ -742,7 +745,7 @@ describe('outboundModel', () => {
742
745
  result = await resultPromise;
743
746
 
744
747
  // check we stopped at quoteReceived state
745
- expect(result.currentState).toBe('WAITING_FOR_QUOTE_ACCEPTANCE');
748
+ expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_QUOTE_ACCEPTANCE);
746
749
  expect(StateMachine.__instance.state).toBe('quoteReceived');
747
750
 
748
751
  // check the accept party key got merged to the state
@@ -785,7 +788,7 @@ describe('outboundModel', () => {
785
788
  let result = await resultPromise;
786
789
 
787
790
  // check we stopped at payeeResolved state
788
- expect(result.currentState).toBe('WAITING_FOR_PARTY_ACCEPTANCE');
791
+ expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_PARTY_ACCEPTANCE);
789
792
  expect(StateMachine.__instance.state).toBe('payeeResolved');
790
793
 
791
794
  expect(result.amount).toEqual(initialAmount);
@@ -821,7 +824,7 @@ describe('outboundModel', () => {
821
824
  result = await resultPromise;
822
825
 
823
826
  // check we stopped at quoteReceived state
824
- expect(result.currentState).toBe('WAITING_FOR_QUOTE_ACCEPTANCE');
827
+ expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_QUOTE_ACCEPTANCE);
825
828
  expect(StateMachine.__instance.state).toBe('quoteReceived');
826
829
 
827
830
  // check the accept party key got merged to the state
@@ -868,7 +871,7 @@ describe('outboundModel', () => {
868
871
  let result = await resultPromise;
869
872
 
870
873
  // check we stopped at quoteReceived state
871
- expect(result.currentState).toBe('WAITING_FOR_QUOTE_ACCEPTANCE');
874
+ expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_QUOTE_ACCEPTANCE);
872
875
  expect(StateMachine.__instance.state).toBe('quoteReceived');
873
876
  });
874
877
 
@@ -897,7 +900,7 @@ describe('outboundModel', () => {
897
900
  let result = await resultPromise;
898
901
 
899
902
  // check we stopped at payeeResolved state
900
- expect(result.currentState).toBe('WAITING_FOR_PARTY_ACCEPTANCE');
903
+ expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_PARTY_ACCEPTANCE);
901
904
  expect(StateMachine.__instance.state).toBe('payeeResolved');
902
905
 
903
906
  const transferId = result.transferId;
@@ -919,7 +922,7 @@ describe('outboundModel', () => {
919
922
  result = await model.run({ resume: { acceptParty: false } });
920
923
 
921
924
  // check we stopped at quoteReceived state
922
- expect(result.currentState).toBe('ABORTED');
925
+ expect(result.currentState).toBe(SDKStateEnum.ABORTED);
923
926
  expect(result.abortedReason).toBe('Payee rejected by backend');
924
927
  expect(StateMachine.__instance.state).toBe('aborted');
925
928
  });
@@ -949,7 +952,7 @@ describe('outboundModel', () => {
949
952
  let result = await resultPromise;
950
953
 
951
954
  // check we stopped at payeeResolved state
952
- expect(result.currentState).toBe('WAITING_FOR_PARTY_ACCEPTANCE');
955
+ expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_PARTY_ACCEPTANCE);
953
956
  expect(StateMachine.__instance.state).toBe('payeeResolved');
954
957
 
955
958
  const transferId = result.transferId;
@@ -977,13 +980,13 @@ describe('outboundModel', () => {
977
980
  result = await resultPromise;
978
981
 
979
982
  // check we stopped at payeeResolved state
980
- expect(result.currentState).toBe('WAITING_FOR_QUOTE_ACCEPTANCE');
983
+ expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_QUOTE_ACCEPTANCE);
981
984
  expect(StateMachine.__instance.state).toBe('quoteReceived');
982
985
 
983
986
  // now run the model again. this should trigger abort as the quote was not accepted
984
987
  result = await model.run({ acceptQuote: false });
985
988
 
986
- expect(result.currentState).toBe('ABORTED');
989
+ expect(result.currentState).toBe(SDKStateEnum.ABORTED);
987
990
  expect(result.abortedReason).toBe('Quote rejected by backend');
988
991
  expect(StateMachine.__instance.state).toBe('aborted');
989
992
  });
@@ -1039,7 +1042,7 @@ describe('outboundModel', () => {
1039
1042
  let result = await resultPromise;
1040
1043
 
1041
1044
  // check we stopped at payeeResolved state
1042
- expect(result.currentState).toBe('WAITING_FOR_PARTY_ACCEPTANCE');
1045
+ expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_PARTY_ACCEPTANCE);
1043
1046
  expect(StateMachine.__instance.state).toBe('payeeResolved');
1044
1047
 
1045
1048
  const transferId = result.transferId;
@@ -1067,20 +1070,20 @@ describe('outboundModel', () => {
1067
1070
  result = await resultPromise;
1068
1071
 
1069
1072
  // check we stopped at payeeResolved state
1070
- expect(result.currentState).toBe('WAITING_FOR_QUOTE_ACCEPTANCE');
1073
+ expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_QUOTE_ACCEPTANCE);
1071
1074
  expect(StateMachine.__instance.state).toBe('quoteReceived');
1072
1075
 
1073
1076
  // now run the model again. this should trigger abort as the quote was not accepted
1074
1077
  result = await model.run({ acceptQuote: false });
1075
1078
 
1076
- expect(result.currentState).toBe('ABORTED');
1079
+ expect(result.currentState).toBe(SDKStateEnum.ABORTED);
1077
1080
  expect(result.abortedReason).toBe('Quote rejected by backend');
1078
1081
  expect(StateMachine.__instance.state).toBe('aborted');
1079
1082
 
1080
1083
  // now run the model again. this should get the same result as previous one
1081
1084
  result = await model.run({ acceptQuote: false });
1082
1085
 
1083
- expect(result.currentState).toBe('ABORTED');
1086
+ expect(result.currentState).toBe(SDKStateEnum.ABORTED);
1084
1087
  expect(result.abortedReason).toBe('Quote rejected by backend');
1085
1088
  expect(StateMachine.__instance.state).toBe('aborted');
1086
1089
  });
@@ -1110,7 +1113,7 @@ describe('outboundModel', () => {
1110
1113
  let result = await resultPromise;
1111
1114
 
1112
1115
  // check we stopped at payeeResolved state
1113
- expect(result.currentState).toBe('WAITING_FOR_PARTY_ACCEPTANCE');
1116
+ expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_PARTY_ACCEPTANCE);
1114
1117
  expect(StateMachine.__instance.state).toBe('payeeResolved');
1115
1118
 
1116
1119
  const transferId = result.transferId;
@@ -1138,7 +1141,7 @@ describe('outboundModel', () => {
1138
1141
  result = await resultPromise;
1139
1142
 
1140
1143
  // check we stopped at quoteReceived state
1141
- expect(result.currentState).toBe('WAITING_FOR_QUOTE_ACCEPTANCE');
1144
+ expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_QUOTE_ACCEPTANCE);
1142
1145
  expect(StateMachine.__instance.state).toBe('quoteReceived');
1143
1146
 
1144
1147
  // load a new model from the saved state
@@ -1164,7 +1167,7 @@ describe('outboundModel', () => {
1164
1167
  result = await resultPromise;
1165
1168
 
1166
1169
  // check we stopped at quoteReceived state
1167
- expect(result.currentState).toBe('COMPLETED');
1170
+ expect(result.currentState).toBe(SDKStateEnum.COMPLETED);
1168
1171
  expect(StateMachine.__instance.state).toBe('succeeded');
1169
1172
  });
1170
1173
 
@@ -1216,7 +1219,7 @@ describe('outboundModel', () => {
1216
1219
  const result = await resultPromise;
1217
1220
 
1218
1221
  // check we stopped at payeeResolved state
1219
- expect(result.currentState).toBe('COMPLETED');
1222
+ expect(result.currentState).toBe(SDKStateEnum.COMPLETED);
1220
1223
  expect(StateMachine.__instance.state).toBe('succeeded');
1221
1224
  });
1222
1225
 
@@ -1268,7 +1271,7 @@ describe('outboundModel', () => {
1268
1271
  const result = await resultPromise;
1269
1272
 
1270
1273
  // check we stopped at payeeResolved state
1271
- expect(result.currentState).toBe('COMPLETED');
1274
+ expect(result.currentState).toBe(SDKStateEnum.COMPLETED);
1272
1275
  expect(StateMachine.__instance.state).toBe('succeeded');
1273
1276
  });
1274
1277
 
@@ -1569,7 +1572,7 @@ describe('outboundModel', () => {
1569
1572
  let result = await resultPromise;
1570
1573
 
1571
1574
  // check we stopped at quoteReceived state
1572
- expect(result.currentState).toBe('WAITING_FOR_QUOTE_ACCEPTANCE');
1575
+ expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_QUOTE_ACCEPTANCE);
1573
1576
  expect(StateMachine.__instance.state).toBe('quoteReceived');
1574
1577
  });
1575
1578
 
@@ -16,6 +16,7 @@ jest.mock('@mojaloop/sdk-standard-components');
16
16
  const { uuid } = require('uuidv4');
17
17
  const Model = require('~/lib/model').PartiesModel;
18
18
  const PSM = require('~/lib/model/common').PersistentStateMachine;
19
+ const { SDKStateEnum } = require('~/lib/model/common');
19
20
  const { MojaloopRequests } = require('@mojaloop/sdk-standard-components');
20
21
  const defaultConfig = require('./data/defaultConfig');
21
22
  const mockLogger = require('../../mockLogger');
@@ -403,7 +404,7 @@ describe('PartiesModel', () => {
403
404
  expect(model.context.data.currentState).toEqual('errored');
404
405
  expect(err.requestActionState).toEqual( {
405
406
  ...data,
406
- currentState: 'ERROR_OCCURRED',
407
+ currentState: SDKStateEnum.ERROR_OCCURRED,
407
408
  });
408
409
  }
409
410
  });
@@ -16,6 +16,7 @@ jest.mock('@mojaloop/sdk-standard-components');
16
16
  const { uuid } = require('uuidv4');
17
17
  const Model = require('~/lib/model').QuotesModel;
18
18
  const PSM = require('~/lib/model/common').PersistentStateMachine;
19
+ const { SDKStateEnum } = require('~/lib/model/common');
19
20
  const { MojaloopRequests } = require('@mojaloop/sdk-standard-components');
20
21
  const defaultConfig = require('./data/defaultConfig');
21
22
  const mockLogger = require('../../mockLogger');
@@ -381,7 +382,7 @@ describe('QuotesModel', () => {
381
382
  expect(model.context.data.currentState).toEqual('errored');
382
383
  expect(err.requestActionState).toEqual( {
383
384
  ...data,
384
- currentState: 'ERROR_OCCURRED',
385
+ currentState: SDKStateEnum.ERROR_OCCURRED,
385
386
  });
386
387
  }
387
388
  });
@@ -16,6 +16,7 @@ jest.mock('@mojaloop/sdk-standard-components');
16
16
  const { uuid } = require('uuidv4');
17
17
  const Model = require('~/lib/model').TransfersModel;
18
18
  const PSM = require('~/lib/model/common').PersistentStateMachine;
19
+ const { SDKStateEnum } = require('~/lib/model/common');
19
20
  const { MojaloopRequests } = require('@mojaloop/sdk-standard-components');
20
21
  const defaultConfig = require('./data/defaultConfig');
21
22
  const mockLogger = require('../../mockLogger');
@@ -386,7 +387,7 @@ describe('TransfersModel', () => {
386
387
  expect(model.context.data.currentState).toEqual('errored');
387
388
  expect(err.requestActionState).toEqual( {
388
389
  ...data,
389
- currentState: 'ERROR_OCCURRED',
390
+ currentState: SDKStateEnum.ERROR_OCCURRED,
390
391
  });
391
392
  }
392
393
  });
@@ -26,7 +26,7 @@
26
26
  }
27
27
  ]
28
28
  },
29
- "bulkTransferState": "COMMITTED",
29
+ "bulkTransferState": "COMPLETED",
30
30
  "timestamp": "2019-11-15T14:16:09.663",
31
31
  "note": "test payment",
32
32
  "extensions": [
@@ -12,7 +12,7 @@
12
12
  }
13
13
  ]
14
14
  },
15
- "bulkTransferState": "COMMITTED",
15
+ "bulkTransferState": "COMPLETED",
16
16
  "individualTransferResults": [
17
17
  {
18
18
  "transferId": "fake-transfer-id",