@bitpay-labs/bitcore-wallet-service 11.8.1 → 11.9.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 (101) hide show
  1. package/bws.example.config.js +4 -2
  2. package/package.json +4 -4
  3. package/src/bws.ts +2 -0
  4. package/src/config.ts +4 -2
  5. package/src/externalservices/moonpay.ts +85 -1
  6. package/src/lib/blockchainexplorers/v8.ts +1 -1
  7. package/src/lib/common/utils.ts +18 -5
  8. package/src/lib/expressapp.ts +63 -2378
  9. package/src/lib/model/txproposal.ts +14 -10
  10. package/src/lib/routes/advertisements.ts +151 -0
  11. package/src/lib/routes/blockchain.ts +151 -0
  12. package/src/lib/routes/context.ts +149 -0
  13. package/src/lib/routes/maintenance.ts +114 -0
  14. package/src/lib/routes/moralis.ts +89 -0
  15. package/src/lib/routes/notifications.ts +135 -0
  16. package/src/lib/routes/services.ts +540 -0
  17. package/src/lib/routes/setup.ts +86 -0
  18. package/src/lib/routes/transactions.ts +196 -0
  19. package/src/lib/routes/walletdata.ts +166 -0
  20. package/src/lib/routes/wallets.ts +288 -0
  21. package/src/lib/server.ts +24 -1
  22. package/src/lib/storage.ts +3 -0
  23. package/test/integration/externalservices/moonpay.test.ts +149 -0
  24. package/test/utils.test.ts +29 -0
  25. package/ts_build/package.json +4 -4
  26. package/ts_build/src/bws.js +3 -0
  27. package/ts_build/src/bws.js.map +1 -1
  28. package/ts_build/src/config.d.ts.map +1 -1
  29. package/ts_build/src/config.js.map +1 -1
  30. package/ts_build/src/externalservices/moonpay.d.ts +4 -0
  31. package/ts_build/src/externalservices/moonpay.d.ts.map +1 -1
  32. package/ts_build/src/externalservices/moonpay.js +68 -1
  33. package/ts_build/src/externalservices/moonpay.js.map +1 -1
  34. package/ts_build/src/lib/blockchainexplorers/v8.js +1 -1
  35. package/ts_build/src/lib/common/index.d.ts +1 -0
  36. package/ts_build/src/lib/common/index.d.ts.map +1 -1
  37. package/ts_build/src/lib/common/utils.d.ts +1 -0
  38. package/ts_build/src/lib/common/utils.d.ts.map +1 -1
  39. package/ts_build/src/lib/common/utils.js +20 -9
  40. package/ts_build/src/lib/common/utils.js.map +1 -1
  41. package/ts_build/src/lib/expressapp.d.ts.map +1 -1
  42. package/ts_build/src/lib/expressapp.js +64 -2224
  43. package/ts_build/src/lib/expressapp.js.map +1 -1
  44. package/ts_build/src/lib/model/txproposal.d.ts +1 -4
  45. package/ts_build/src/lib/model/txproposal.d.ts.map +1 -1
  46. package/ts_build/src/lib/model/txproposal.js +13 -9
  47. package/ts_build/src/lib/model/txproposal.js.map +1 -1
  48. package/ts_build/src/lib/routes/advertisements.d.ts +11 -0
  49. package/ts_build/src/lib/routes/advertisements.d.ts.map +1 -0
  50. package/ts_build/src/lib/routes/advertisements.js +119 -0
  51. package/ts_build/src/lib/routes/advertisements.js.map +1 -0
  52. package/ts_build/src/lib/routes/blockchain.d.ts +13 -0
  53. package/ts_build/src/lib/routes/blockchain.d.ts.map +1 -0
  54. package/ts_build/src/lib/routes/blockchain.js +125 -0
  55. package/ts_build/src/lib/routes/blockchain.js.map +1 -0
  56. package/ts_build/src/lib/routes/context.d.ts +12 -0
  57. package/ts_build/src/lib/routes/context.d.ts.map +1 -0
  58. package/ts_build/src/lib/routes/context.js +115 -0
  59. package/ts_build/src/lib/routes/context.js.map +1 -0
  60. package/ts_build/src/lib/routes/maintenance.d.ts +10 -0
  61. package/ts_build/src/lib/routes/maintenance.d.ts.map +1 -0
  62. package/ts_build/src/lib/routes/maintenance.js +101 -0
  63. package/ts_build/src/lib/routes/maintenance.js.map +1 -0
  64. package/ts_build/src/lib/routes/moralis.d.ts +9 -0
  65. package/ts_build/src/lib/routes/moralis.d.ts.map +1 -0
  66. package/ts_build/src/lib/routes/moralis.js +78 -0
  67. package/ts_build/src/lib/routes/moralis.js.map +1 -0
  68. package/ts_build/src/lib/routes/notifications.d.ts +10 -0
  69. package/ts_build/src/lib/routes/notifications.d.ts.map +1 -0
  70. package/ts_build/src/lib/routes/notifications.js +120 -0
  71. package/ts_build/src/lib/routes/notifications.js.map +1 -0
  72. package/ts_build/src/lib/routes/services.d.ts +11 -0
  73. package/ts_build/src/lib/routes/services.d.ts.map +1 -0
  74. package/ts_build/src/lib/routes/services.js +440 -0
  75. package/ts_build/src/lib/routes/services.js.map +1 -0
  76. package/ts_build/src/lib/routes/setup.d.ts +4 -0
  77. package/ts_build/src/lib/routes/setup.d.ts.map +1 -0
  78. package/ts_build/src/lib/routes/setup.js +79 -0
  79. package/ts_build/src/lib/routes/setup.js.map +1 -0
  80. package/ts_build/src/lib/routes/transactions.d.ts +9 -0
  81. package/ts_build/src/lib/routes/transactions.d.ts.map +1 -0
  82. package/ts_build/src/lib/routes/transactions.js +188 -0
  83. package/ts_build/src/lib/routes/transactions.js.map +1 -0
  84. package/ts_build/src/lib/routes/walletdata.d.ts +10 -0
  85. package/ts_build/src/lib/routes/walletdata.d.ts.map +1 -0
  86. package/ts_build/src/lib/routes/walletdata.js +152 -0
  87. package/ts_build/src/lib/routes/walletdata.js.map +1 -0
  88. package/ts_build/src/lib/routes/wallets.d.ts +13 -0
  89. package/ts_build/src/lib/routes/wallets.d.ts.map +1 -0
  90. package/ts_build/src/lib/routes/wallets.js +291 -0
  91. package/ts_build/src/lib/routes/wallets.js.map +1 -0
  92. package/ts_build/src/lib/server.d.ts.map +1 -1
  93. package/ts_build/src/lib/server.js +19 -1
  94. package/ts_build/src/lib/server.js.map +1 -1
  95. package/ts_build/src/lib/storage.d.ts.map +1 -1
  96. package/ts_build/src/lib/storage.js +3 -0
  97. package/ts_build/src/lib/storage.js.map +1 -1
  98. package/ts_build/test/integration/externalservices/moonpay.test.js +139 -0
  99. package/ts_build/test/integration/externalservices/moonpay.test.js.map +1 -1
  100. package/ts_build/test/utils.test.js +23 -0
  101. package/ts_build/test/utils.test.js.map +1 -1
@@ -0,0 +1,288 @@
1
+ import * as async from 'async';
2
+ import express from 'express';
3
+ import { Common } from '../common';
4
+ import { ClientError } from '../errors/clienterror';
5
+ import logger from '../logger';
6
+ import { WalletService } from '../server';
7
+ import type * as Types from '../../types/expressapp';
8
+
9
+ const { Utils } = Common;
10
+
11
+ interface RouteContext {
12
+ createWalletLimiter: Types.CreateWalletLimiterFn;
13
+ getServer: Types.GetServerFn;
14
+ getServerWithAuth: Types.GetServerWithAuthFn;
15
+ getServerWithMultiAuth: Types.GetServerWithMultiAuthFn;
16
+ logDeprecated: Types.LogDeprecatedFn;
17
+ returnError: Types.ReturnErrorFn;
18
+ }
19
+
20
+ function getServerOrReturnError(req, res, context: RouteContext): WalletService | null {
21
+ try {
22
+ return context.getServer(req, res);
23
+ } catch (err) {
24
+ context.returnError(err, res, req);
25
+ return null;
26
+ }
27
+ }
28
+
29
+ export function registerWalletRoutes(router: express.Router, context: RouteContext) {
30
+ const { createWalletLimiter, getServerWithAuth, getServerWithMultiAuth, logDeprecated, returnError } = context;
31
+
32
+ router.post('/v1/wallets/', createWalletLimiter, (req, res) => {
33
+ logDeprecated(req);
34
+ return returnError(new ClientError('BIP45 wallet creation no longer supported'), res, req);
35
+ });
36
+
37
+ router.post('/v2/wallets/', createWalletLimiter, (req, res) => {
38
+ const server = getServerOrReturnError(req, res, context);
39
+ if (!server) return;
40
+
41
+ server.createWallet(req.body, (err, walletId) => {
42
+ if (err) return returnError(err, res, req);
43
+ res.json({ walletId });
44
+ });
45
+ });
46
+
47
+ router.put('/v1/copayers/:id/', (req, res) => {
48
+ req.body.copayerId = req.params['id'];
49
+ const server = getServerOrReturnError(req, res, context);
50
+ if (!server) return;
51
+
52
+ server.addAccess(req.body, (err, result) => {
53
+ if (err) return returnError(err, res, req);
54
+ res.json(result);
55
+ });
56
+ });
57
+
58
+ router.post('/v1/wallets/:id/copayers/', (req, res) => {
59
+ logDeprecated(req);
60
+ return returnError(new ClientError('BIP45 wallet creation no longer supported'), res, req);
61
+ });
62
+
63
+ router.post('/v2/wallets/:id/copayers/', (req, res) => {
64
+ req.body.walletId = req.params['id'];
65
+ const server = getServerOrReturnError(req, res, context);
66
+ if (!server) return;
67
+
68
+ server.joinWallet(req.body, (err, result) => {
69
+ if (err) return returnError(err, res, req);
70
+ res.json(result);
71
+ });
72
+ });
73
+
74
+ router.get('/v1/wallets/', (req, res) => {
75
+ logDeprecated(req);
76
+ getServerWithAuth(req, res, server => {
77
+ server.getStatus({ includeExtendedInfo: true }, (err, status) => {
78
+ if (err) return returnError(err, res, req);
79
+ res.json(status);
80
+ });
81
+ });
82
+ });
83
+
84
+ router.get('/v2/wallets/', (req, res) => {
85
+ getServerWithAuth(req, res, server => {
86
+ const opts = { includeExtendedInfo: false, twoStep: false };
87
+ if (req.query.includeExtendedInfo == '1') opts.includeExtendedInfo = true;
88
+ if (req.query.twoStep == '1') opts.twoStep = true;
89
+
90
+ server.getStatus(opts, (err, status) => {
91
+ if (err) return returnError(err, res, req);
92
+ res.json(status);
93
+ });
94
+ });
95
+ });
96
+
97
+ router.get('/v3/wallets/', (req, res) => {
98
+ getServerWithAuth(req, res, server => {
99
+ const opts = {
100
+ includeExtendedInfo: false,
101
+ twoStep: false,
102
+ includeServerMessages: false,
103
+ tokenAddress: req.query.tokenAddress,
104
+ multisigContractAddress: req.query.multisigContractAddress,
105
+ network: req.query.network
106
+ };
107
+ if (req.query.includeExtendedInfo == '1') opts.includeExtendedInfo = true;
108
+ if (req.query.twoStep == '1') opts.twoStep = true;
109
+ if (req.query.serverMessageArray == '1') opts.includeServerMessages = true;
110
+
111
+ server.getStatus(opts, (err, status) => {
112
+ if (err) return returnError(err, res, req);
113
+ res.json(status);
114
+ });
115
+ });
116
+ });
117
+
118
+ router.get('/v1/wallets/all/', async (req, res) => {
119
+ let responses;
120
+ const includeExtendedInfo = req.query.includeExtendedInfo == '1';
121
+ const twoStep = req.query.twoStep == '1';
122
+ const silentFailure = req.query.silentFailure == '1';
123
+ const includeServerMessages = req.query.serverMessageArray == '1';
124
+
125
+ const buildOpts = (request, copayerId) => {
126
+ const getParam = (param, returnArray = false) => {
127
+ const value = request.query[`${copayerId}:${param}`] || request.query[copayerId]?.[param];
128
+ if (returnArray) {
129
+ return Array.isArray(value) ? value : value ? [value] : null;
130
+ }
131
+ return value ? value : null;
132
+ };
133
+
134
+ return {
135
+ includeExtendedInfo,
136
+ twoStep,
137
+ silentFailure,
138
+ includeServerMessages,
139
+ tokenAddresses: getParam('tokenAddress', true) as string[] | null,
140
+ multisigContractAddress: getParam('multisigContractAddress') as string | null,
141
+ network: getParam('network') as string | null
142
+ };
143
+ };
144
+
145
+ try {
146
+ responses = await Promise.all(
147
+ getServerWithMultiAuth(req, res, { silentFailure }).map(promise =>
148
+ promise
149
+ .then(
150
+ (server: WalletService) =>
151
+ new Promise(resolve => {
152
+ const options = buildOpts(req, server.copayerId);
153
+ if (options.tokenAddresses) {
154
+ options.tokenAddresses.unshift(null);
155
+ return async.concat(
156
+ options.tokenAddresses,
157
+ (tokenAddress, cb) => {
158
+ const optsClone = JSON.parse(JSON.stringify(options));
159
+ optsClone.tokenAddresses = null;
160
+ optsClone.tokenAddress = tokenAddress;
161
+ return server.getStatus(optsClone, (err, status) => {
162
+ const result = {
163
+ walletId: server.walletId,
164
+ tokenAddress: optsClone.tokenAddress,
165
+ success: true,
166
+ ...(err ? { success: false, message: err.message } : {}),
167
+ status
168
+ };
169
+ if (err && err.message) {
170
+ logger.error(
171
+ `An error occurred retrieving wallet status - id: ${server.walletId} - token address: ${optsClone.tokenAddress} - err: ${err.message}`
172
+ );
173
+ }
174
+ cb(null, [result]);
175
+ });
176
+ },
177
+ (_err, result) => resolve(result)
178
+ );
179
+ }
180
+
181
+ return server.getStatus(options, (err, status) => {
182
+ return resolve([
183
+ {
184
+ walletId: server.walletId,
185
+ tokenAddress: null,
186
+ success: true,
187
+ ...(err ? { success: false, message: err.message } : {}),
188
+ status
189
+ }
190
+ ]);
191
+ });
192
+ }),
193
+ ({ message }) => Promise.resolve({ success: false, error: message })
194
+ )
195
+ .catch(err => {
196
+ if (silentFailure) {
197
+ return [];
198
+ }
199
+ returnError(err, res, req);
200
+ throw err;
201
+ })
202
+ )
203
+ );
204
+ } catch (err) {
205
+ if (res.headersSent) {
206
+ return;
207
+ }
208
+ return returnError(err, res, req);
209
+ }
210
+
211
+ if (res.headersSent) {
212
+ return;
213
+ }
214
+ return res.json(responses.flat());
215
+ });
216
+
217
+ router.post('/v1/wallets/exist', async (req, res) => {
218
+ try {
219
+ const copayers = req.body.copayers;
220
+ if (!copayers || !Array.isArray(copayers)) {
221
+ logger.info('Invalid request to /v1/wallets/exist - copayers should be an array');
222
+ return res.json([]);
223
+ }
224
+
225
+ const storage = WalletService.getStorage();
226
+ const existing = await Promise.all<{ copayerId: string; verified: boolean }>(copayers.map(c => new Promise((resolve) => {
227
+ storage.fetchCopayerLookup(c.copayerId, (err, copayer) => {
228
+ if (err || !copayer) {
229
+ return resolve({ copayerId: c.copayerId, verified: false });
230
+ }
231
+ const verified = copayer.requestPubKeys.some(pubkey => Utils.verifyMessage(c.copayerId, c.signature, pubkey.key));
232
+ return resolve({ copayerId: c.copayerId, verified });
233
+ });
234
+ })));
235
+ return res.json(existing.filter(e => e.verified).map(e => e.copayerId));
236
+ } catch (err) {
237
+ return returnError(err, res, req);
238
+ }
239
+ });
240
+
241
+ router.get('/v1/wallets/:identifier/', (req, res) => {
242
+ getServerWithAuth(
243
+ req,
244
+ res,
245
+ {
246
+ onlySupportStaff: true
247
+ },
248
+ server => {
249
+ const opts = {
250
+ identifier: req.params['identifier'],
251
+ walletCheck: ['1', 'true'].includes(req.query['walletCheck'])
252
+ };
253
+
254
+ server.getWalletFromIdentifier(opts, (err, wallet) => {
255
+ if (err) return returnError(err, res, req);
256
+ if (!wallet) return res.end();
257
+
258
+ server.walletId = wallet.id;
259
+ const statusOpts = { includeExtendedInfo: false };
260
+ if (req.query.includeExtendedInfo == '1') statusOpts.includeExtendedInfo = true;
261
+
262
+ server.getStatus(statusOpts, (statusErr, status) => {
263
+ if (statusErr) return returnError(statusErr, res, req);
264
+ res.json(status);
265
+ });
266
+ });
267
+ }
268
+ );
269
+ });
270
+
271
+ router.get('/v1/preferences/', (req, res) => {
272
+ getServerWithAuth(req, res, server => {
273
+ server.getPreferences({}, (err, preferences) => {
274
+ if (err) return returnError(err, res, req);
275
+ res.json(preferences);
276
+ });
277
+ });
278
+ });
279
+
280
+ router.put('/v1/preferences', (req, res) => {
281
+ getServerWithAuth(req, res, server => {
282
+ server.savePreferences(req.body, (err, result) => {
283
+ if (err) return returnError(err, res, req);
284
+ res.json(result);
285
+ });
286
+ });
287
+ });
288
+ }
package/src/lib/server.ts CHANGED
@@ -3340,9 +3340,9 @@ export class WalletService implements IWalletService {
3340
3340
 
3341
3341
 
3342
3342
  const copayer = wallet.getCopayer(this.copayerId);
3343
+ const xPubKey = wallet.tssKeyId ? wallet.clientDerivedPublicKey : copayer.xPubKey;
3343
3344
 
3344
3345
  try {
3345
- const xPubKey = wallet.tssKeyId ? wallet.clientDerivedPublicKey : copayer.xPubKey;
3346
3346
  if (!txp.sign(this.copayerId, opts.signatures, xPubKey)) {
3347
3347
  this.logw('Error signing transaction (BAD_SIGNATURES)');
3348
3348
  this.logw('Client version:', this.clientVersion);
@@ -3357,6 +3357,29 @@ export class WalletService implements IWalletService {
3357
3357
  return cb(ex);
3358
3358
  }
3359
3359
 
3360
+ if (wallet.tssKeyId) {
3361
+ try {
3362
+ // Add the other copayers to the txp.copayers array
3363
+ // so the client can see who participated in the signing.
3364
+ // Note we hardcode to input0 as that should always be present and should suffice for
3365
+ // gathering copayers. However, there is a possibility that input1 (or any input >0)
3366
+ // could contain a different set of copayers, depending on the client's implementation
3367
+ // of TSS. While technically possible, it's unlikely and the impact is mostly aesthetic.
3368
+ const tssSigSeshId = `${txp.id}:input0`;
3369
+ const tssSigSession = await storage.fetchTssSigSession({ id: tssSigSeshId });
3370
+ if (!tssSigSession) {
3371
+ throw new Error('TSS signature session not found: ' + tssSigSeshId);
3372
+ }
3373
+ const copayerIds = tssSigSession.participants.map(p => p.copayerId);
3374
+ for (const copayerId of copayerIds) {
3375
+ if (copayerId === this.copayerId) continue;
3376
+ txp.addAction(copayerId, 'accept', null, opts.signatures, xPubKey);
3377
+ }
3378
+ } catch (err) {
3379
+ this.logw('Error finding accepting copayers for TSS txp: %o %o', txp.id, err);
3380
+ }
3381
+ }
3382
+
3360
3383
  this.storage.storeTx(this.walletId, txp, err => {
3361
3384
  if (err) return cb(err);
3362
3385
 
@@ -166,6 +166,9 @@ export class Storage {
166
166
  db.collection(collections.TSS_KEYGEN).createIndex({
167
167
  id: 1
168
168
  }, { unique: true });
169
+ db.collection(collections.TSS_SIGN).createIndex({
170
+ id: 1
171
+ }, { unique: true });
169
172
  }
170
173
 
171
174
  connect(opts, cb) {
@@ -566,4 +566,153 @@ describe('Moonpay integration', () => {
566
566
  }
567
567
  });
568
568
  });
569
+
570
+ describe('#moonpayCreateSession', () => {
571
+ beforeEach(() => {
572
+ req = {
573
+ headers: {
574
+ 'x-forwarded-for': '192.168.1.1'
575
+ },
576
+ body: {
577
+ env: 'sandbox',
578
+ externalCustomerId: 'externalCustomerId1'
579
+ }
580
+ };
581
+ server.externalServices.moonpay.request = fakeRequest;
582
+ });
583
+
584
+ it('should work properly if req is OK', async () => {
585
+ const data = await server.externalServices.moonpay.moonpayCreateSession(req);
586
+ should.exist(data);
587
+ });
588
+
589
+ it('should work properly if req is OK for web', async () => {
590
+ req.body.context = 'web';
591
+ const data = await server.externalServices.moonpay.moonpayCreateSession(req);
592
+ should.exist(data);
593
+ });
594
+
595
+ it('should work properly with optional email and phoneNumber', async () => {
596
+ req.body.email = 'user@example.com';
597
+ req.body.phoneNumber = '+14155551234';
598
+ const data = await server.externalServices.moonpay.moonpayCreateSession(req);
599
+ should.exist(data);
600
+ });
601
+
602
+ it('should return error if post returns error', async () => {
603
+ const fakeRequest2 = {
604
+ post: (_url, _opts, _cb) => { return _cb(new Error('Error'), null); },
605
+ };
606
+
607
+ server.externalServices.moonpay.request = fakeRequest2;
608
+ try {
609
+ await server.externalServices.moonpay.moonpayCreateSession(req);
610
+ should.fail('should have thrown');
611
+ } catch (err) {
612
+ err.message.should.equal('Error');
613
+ }
614
+ });
615
+
616
+ it('should return error if there is some missing arguments', async () => {
617
+ delete req.body.externalCustomerId;
618
+ try {
619
+ await server.externalServices.moonpay.moonpayCreateSession(req);
620
+ should.fail('should have thrown');
621
+ } catch (err) {
622
+ err.message.should.equal('Moonpay\'s request missing arguments');
623
+ }
624
+ });
625
+
626
+ it('should return error if device IP cannot be determined', async () => {
627
+ req.headers = {};
628
+ delete req.ip;
629
+ delete req.connection;
630
+ try {
631
+ await server.externalServices.moonpay.moonpayCreateSession(req);
632
+ should.fail('should have thrown');
633
+ } catch (err) {
634
+ err.message.should.equal('Could not determine device IP address');
635
+ }
636
+ });
637
+
638
+ it('should extract IP from x-forwarded-for header', async () => {
639
+ req.headers = { 'x-forwarded-for': '10.0.0.1, 10.0.0.2' };
640
+ let capturedBody;
641
+ const fakeRequest2 = {
642
+ post: (_url, _opts, _cb) => {
643
+ capturedBody = _opts.body;
644
+ return _cb(null, { body: { sessionToken: 'token123' } });
645
+ },
646
+ };
647
+ server.externalServices.moonpay.request = fakeRequest2;
648
+ await server.externalServices.moonpay.moonpayCreateSession(req);
649
+ capturedBody.deviceIp.should.equal('10.0.0.1');
650
+ });
651
+
652
+ it('should return error if moonpay is commented in config', async () => {
653
+ config.moonpay = undefined;
654
+ try {
655
+ await server.externalServices.moonpay.moonpayCreateSession(req);
656
+ should.fail('should have thrown');
657
+ } catch (err) {
658
+ err.message.should.equal('Moonpay missing credentials');
659
+ }
660
+ });
661
+ });
662
+
663
+ describe('#moonpayRevokeActiveSession', () => {
664
+ beforeEach(() => {
665
+ req = {
666
+ headers: {},
667
+ body: {
668
+ env: 'sandbox',
669
+ externalCustomerId: 'externalCustomerId1'
670
+ }
671
+ };
672
+ server.externalServices.moonpay.request = fakeRequest;
673
+ });
674
+
675
+ it('should work properly if req is OK', async () => {
676
+ await server.externalServices.moonpay.moonpayRevokeActiveSession(req);
677
+ });
678
+
679
+ it('should work properly if req is OK for web', async () => {
680
+ req.body.context = 'web';
681
+ await server.externalServices.moonpay.moonpayRevokeActiveSession(req);
682
+ });
683
+
684
+ it('should return error if delete returns error', async () => {
685
+ const fakeRequest2 = {
686
+ delete: (_url, _opts, _cb) => { return _cb(new Error('Error'), null); },
687
+ };
688
+
689
+ server.externalServices.moonpay.request = fakeRequest2;
690
+ try {
691
+ await server.externalServices.moonpay.moonpayRevokeActiveSession(req);
692
+ should.fail('should have thrown');
693
+ } catch (err) {
694
+ err.message.should.equal('Error');
695
+ }
696
+ });
697
+
698
+ it('should return error if there is some missing arguments', async () => {
699
+ delete req.body.externalCustomerId;
700
+ try {
701
+ await server.externalServices.moonpay.moonpayRevokeActiveSession(req);
702
+ should.fail('should have thrown');
703
+ } catch (err) {
704
+ err.message.should.equal('Moonpay\'s request missing arguments');
705
+ }
706
+ });
707
+
708
+ it('should return error if moonpay is commented in config', async () => {
709
+ config.moonpay = undefined;
710
+ try {
711
+ await server.externalServices.moonpay.moonpayRevokeActiveSession(req);
712
+ should.fail('should have thrown');
713
+ } catch (err) {
714
+ err.message.should.equal('Moonpay missing credentials');
715
+ }
716
+ });
717
+ });
569
718
  });
@@ -360,6 +360,35 @@ describe('Utils', function() {
360
360
  const ip = Utils.getIpFromReq(req);
361
361
  ip.should.equal('');
362
362
  });
363
+
364
+ it('should trim whitespace from the ip', function() {
365
+ const req = {
366
+ headers: {
367
+ 'x-forwarded-for': ' 1.2.3.4 , 5.6.7.8'
368
+ }
369
+ };
370
+
371
+ const ip = Utils.getIpFromReq(req);
372
+ ip.should.equal('1.2.3.4');
373
+ });
374
+
375
+ it('should preserve IPv4-mapped IPv6 addresses', function() {
376
+ const req = {
377
+ ip: '::ffff:192.168.1.1'
378
+ };
379
+
380
+ const ip = Utils.getIpFromReq(req);
381
+ ip.should.equal('::ffff:192.168.1.1');
382
+ });
383
+
384
+ it('should preserve regular IPv6 addresses', function() {
385
+ const req = {
386
+ ip: '2001:0db8:85a3:0000:0000:8a2e:0370:7334'
387
+ };
388
+
389
+ const ip = Utils.getIpFromReq(req);
390
+ ip.should.equal('2001:0db8:85a3:0000:0000:8a2e:0370:7334');
391
+ });
363
392
  });
364
393
 
365
394
  describe('#sortAsc', function() {
@@ -2,7 +2,7 @@
2
2
  "name": "@bitpay-labs/bitcore-wallet-service",
3
3
  "description": "A service for Mutisig HD Bitcoin Wallets",
4
4
  "author": "BitPay Inc",
5
- "version": "11.8.0",
5
+ "version": "11.8.2",
6
6
  "license": "MIT",
7
7
  "main": "ts_build/src/index.js",
8
8
  "types": "./ts_build/src/index.d.ts",
@@ -43,9 +43,9 @@
43
43
  "cp:templates": "cp -r ./templates ./ts_build/templates"
44
44
  },
45
45
  "dependencies": {
46
- "@bitpay-labs/bitcore-logging": "^11.8.0",
47
- "@bitpay-labs/bitcore-tss": "^11.7.3",
48
- "@bitpay-labs/crypto-wallet-core": "^11.7.3",
46
+ "@bitpay-labs/bitcore-logging": "^11.8.1",
47
+ "@bitpay-labs/bitcore-tss": "^11.8.1",
48
+ "@bitpay-labs/crypto-wallet-core": "^11.8.1",
49
49
  "@sendgrid/mail": "6.5.4",
50
50
  "abi-decoder": "2.4.0",
51
51
  "async": "0.9.2",
@@ -61,6 +61,9 @@ if (config_1.default.https) {
61
61
  fs.readFileSync(config_1.default.CAroot)
62
62
  ];
63
63
  }
64
+ else if (config_1.default.certificateAuthorities) {
65
+ serverOpts.ca = config_1.default.certificateAuthorities.map(caPath => fs.readFileSync(caPath));
66
+ }
64
67
  }
65
68
  if (config_1.default.cluster && !config_1.default.messageBrokerOpts.messageBrokerServer)
66
69
  throw new Error('When running in cluster mode, message broker server need to be configured');
@@ -1 +1 @@
1
- {"version":3,"file":"bws.js","sourceRoot":"","sources":["../../src/bws.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bws.js","sourceRoot":"","sources":["../../src/bws.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":";AA2hBA,wBAAwB"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":";AA6hBA,wBAAwB"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
@@ -15,5 +15,9 @@ export declare class MoonpayService {
15
15
  moonpayGetSellTransactionDetails(req: any): Promise<any>;
16
16
  moonpayCancelSellTransaction(req: any): Promise<any>;
17
17
  moonpayGetAccountDetails(req: any): Promise<any>;
18
+ moonpayCreateSession(req: any): Promise<{
19
+ sessionToken: string;
20
+ }>;
21
+ moonpayRevokeActiveSession(req: any): Promise<void>;
18
22
  }
19
23
  //# sourceMappingURL=moonpay.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"moonpay.d.ts","sourceRoot":"","sources":["../../../src/externalservices/moonpay.ts"],"names":[],"mappings":"AAMA,qBAAa,cAAc;IACzB,OAAO,EAAE,GAAG,CAAW;IAEvB,OAAO,CAAC,cAAc;IA6BtB,oBAAoB,CAAC,GAAG,KAAA,GAAG,OAAO,CAAC,GAAG,CAAC;IA4BvC,eAAe,CAAC,GAAG,KAAA,GAAG,OAAO,CAAC,GAAG,CAAC;IA0ClC,mBAAmB,CAAC,GAAG,KAAA,GAAG,OAAO,CAAC,GAAG,CAAC;IAyCtC,wBAAwB,CAAC,GAAG,KAAA,GAAG,OAAO,CAAC,GAAG,CAAC;IAuC3C,0BAA0B,CAAC,GAAG,KAAA,GAAG;QAAE,gBAAgB,EAAE,MAAM,CAAA;KAAE;IAgD7D,8BAA8B,CAAC,GAAG,KAAA,GAAG;QAAE,gBAAgB,EAAE,MAAM,CAAA;KAAE;IAmDjE,4BAA4B,CAAC,GAAG,KAAA,GAAG,OAAO,CAAC,GAAG,CAAC;IAwC/C,gCAAgC,CAAC,GAAG,KAAA,GAAG,OAAO,CAAC,GAAG,CAAC;IAwCnD,4BAA4B,CAAC,GAAG,KAAA,GAAG,OAAO,CAAC,GAAG,CAAC;IAuC/C,wBAAwB,CAAC,GAAG,KAAA,GAAG,OAAO,CAAC,GAAG,CAAC;CA+B5C"}
1
+ {"version":3,"file":"moonpay.d.ts","sourceRoot":"","sources":["../../../src/externalservices/moonpay.ts"],"names":[],"mappings":"AAOA,qBAAa,cAAc;IACzB,OAAO,EAAE,GAAG,CAAW;IAEvB,OAAO,CAAC,cAAc;IA+BtB,oBAAoB,CAAC,GAAG,KAAA,GAAG,OAAO,CAAC,GAAG,CAAC;IA4BvC,eAAe,CAAC,GAAG,KAAA,GAAG,OAAO,CAAC,GAAG,CAAC;IA0ClC,mBAAmB,CAAC,GAAG,KAAA,GAAG,OAAO,CAAC,GAAG,CAAC;IAyCtC,wBAAwB,CAAC,GAAG,KAAA,GAAG,OAAO,CAAC,GAAG,CAAC;IAuC3C,0BAA0B,CAAC,GAAG,KAAA,GAAG;QAAE,gBAAgB,EAAE,MAAM,CAAA;KAAE;IAgD7D,8BAA8B,CAAC,GAAG,KAAA,GAAG;QAAE,gBAAgB,EAAE,MAAM,CAAA;KAAE;IAmDjE,4BAA4B,CAAC,GAAG,KAAA,GAAG,OAAO,CAAC,GAAG,CAAC;IAwC/C,gCAAgC,CAAC,GAAG,KAAA,GAAG,OAAO,CAAC,GAAG,CAAC;IAwCnD,4BAA4B,CAAC,GAAG,KAAA,GAAG,OAAO,CAAC,GAAG,CAAC;IAuC/C,wBAAwB,CAAC,GAAG,KAAA,GAAG,OAAO,CAAC,GAAG,CAAC;IAgC3C,oBAAoB,CAAC,GAAG,KAAA,GAAG,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IA+C5D,0BAA0B,CAAC,GAAG,KAAA,GAAG,OAAO,CAAC,IAAI,CAAC;CAiC/C"}