1
1
import * as assert from 'assert' ;
2
2
import { TestBitGo } from '@bitgo/sdk-test' ;
3
3
import * as nock from 'nock' ;
4
- import { BaseCoin , getLightningAuthKeychains , getLightningKeychain } from '@bitgo/sdk-core' ;
4
+ import { BaseCoin } from '@bitgo/sdk-core' ;
5
5
6
6
import { BitGo , common , GenerateLightningWalletOptions , Wallet , Wallets } from '../../../../src' ;
7
7
@@ -219,19 +219,19 @@ describe('Lightning wallets', function () {
219
219
} ;
220
220
221
221
it ( 'should get lightning key' , async function ( ) {
222
- const wallet = new Wallet ( bitgo , basecoin , walletData ) ;
222
+ const wallet = new Wallet ( bitgo , basecoin , walletData ) . lightningV2 ( ) ;
223
223
224
224
const keyNock = nock ( bgUrl )
225
225
. get ( '/api/v2/' + coinName + '/key/abc' )
226
226
. reply ( 200 , userKeyData ) ;
227
227
228
- const key = await getLightningKeychain ( wallet ) ;
228
+ const key = await wallet . getLightningKeychain ( ) ;
229
229
assert . deepStrictEqual ( key , userKeyData ) ;
230
230
keyNock . done ( ) ;
231
231
} ) ;
232
232
233
233
it ( 'should get lightning auth keys' , async function ( ) {
234
- const wallet = new Wallet ( bitgo , basecoin , walletData ) ;
234
+ const wallet = new Wallet ( bitgo , basecoin , walletData ) . lightningV2 ( ) ;
235
235
236
236
const userAuthKeyNock = nock ( bgUrl )
237
237
. get ( '/api/v2/' + coinName + '/key/def' )
@@ -240,57 +240,41 @@ describe('Lightning wallets', function () {
240
240
. get ( '/api/v2/' + coinName + '/key/ghi' )
241
241
. reply ( 200 , nodeAuthKeyData ) ;
242
242
243
- const { userAuthKey, nodeAuthKey } = await getLightningAuthKeychains ( wallet ) ;
243
+ const { userAuthKey, nodeAuthKey } = await wallet . getLightningAuthKeychains ( ) ;
244
244
assert . deepStrictEqual ( userAuthKey , userAuthKeyData ) ;
245
245
assert . deepStrictEqual ( nodeAuthKey , nodeAuthKeyData ) ;
246
246
userAuthKeyNock . done ( ) ;
247
247
nodeAuthKeyNock . done ( ) ;
248
248
} ) ;
249
249
250
- it ( 'should fail to get lightning key for invalid coin' , async function ( ) {
251
- const wallet = new Wallet ( bitgo , bitgo . coin ( 'tltc' ) , walletData ) ;
252
- await assert . rejects (
253
- async ( ) => await getLightningKeychain ( wallet ) ,
254
- / E r r o r : I n v a l i d c o i n t o g e t l i g h t n i n g K e y c h a i n : l t c /
255
- ) ;
256
- } ) ;
257
-
258
- it ( 'should fail to get lightning auth keys for invalid coin' , async function ( ) {
259
- const wallet = new Wallet ( bitgo , bitgo . coin ( 'tltc' ) , walletData ) ;
260
- await assert . rejects (
261
- async ( ) => await getLightningAuthKeychains ( wallet ) ,
262
- / E r r o r : I n v a l i d c o i n t o g e t l i g h t n i n g a u t h k e y c h a i n s : l t c /
263
- ) ;
264
- } ) ;
265
-
266
250
it ( 'should fail to get lightning key for invalid number of keys' , async function ( ) {
267
- const wallet = new Wallet ( bitgo , basecoin , { ...walletData , keys : [ ] } ) ;
251
+ const wallet = new Wallet ( bitgo , basecoin , { ...walletData , keys : [ ] } ) . lightningV2 ( ) ;
268
252
await assert . rejects (
269
- async ( ) => await getLightningKeychain ( wallet ) ,
253
+ async ( ) => await wallet . getLightningKeychain ( ) ,
270
254
/ E r r o r : I n v a l i d n u m b e r o f k e y i n l i g h t n i n g w a l l e t : 0 /
271
255
) ;
272
256
} ) ;
273
257
274
258
it ( 'should fail to get lightning auth keys for invalid number of keys' , async function ( ) {
275
- const wallet = new Wallet ( bitgo , basecoin , { ...walletData , coinSpecific : { keys : [ 'def' ] } } ) ;
259
+ const wallet = new Wallet ( bitgo , basecoin , { ...walletData , coinSpecific : { keys : [ 'def' ] } } ) . lightningV2 ( ) ;
276
260
await assert . rejects (
277
- async ( ) => await getLightningAuthKeychains ( wallet ) ,
261
+ async ( ) => await wallet . getLightningAuthKeychains ( ) ,
278
262
/ E r r o r : I n v a l i d n u m b e r o f a u t h k e y s i n l i g h t n i n g w a l l e t : 1 /
279
263
) ;
280
264
} ) ;
281
265
282
266
it ( 'should fail to get lightning key for invalid response' , async function ( ) {
283
- const wallet = new Wallet ( bitgo , basecoin , walletData ) ;
267
+ const wallet = new Wallet ( bitgo , basecoin , walletData ) . lightningV2 ( ) ;
284
268
285
269
nock ( bgUrl )
286
270
. get ( '/api/v2/' + coinName + '/key/abc' )
287
271
. reply ( 200 , { ...userKeyData , source : 'backup' } ) ;
288
272
289
- await assert . rejects ( async ( ) => await getLightningKeychain ( wallet ) , / E r r o r : I n v a l i d u s e r k e y / ) ;
273
+ await assert . rejects ( async ( ) => await wallet . getLightningKeychain ( ) , / E r r o r : I n v a l i d u s e r k e y / ) ;
290
274
} ) ;
291
275
292
276
it ( 'should fail to get lightning auth keys for invalid response' , async function ( ) {
293
- const wallet = new Wallet ( bitgo , basecoin , walletData ) ;
277
+ const wallet = new Wallet ( bitgo , basecoin , walletData ) . lightningV2 ( ) ;
294
278
295
279
nock ( bgUrl )
296
280
. get ( '/api/v2/' + coinName + '/key/def' )
@@ -301,9 +285,89 @@ describe('Lightning wallets', function () {
301
285
. reply ( 200 , nodeAuthKeyData ) ;
302
286
303
287
await assert . rejects (
304
- async ( ) => await getLightningAuthKeychains ( wallet ) ,
288
+ async ( ) => await wallet . getLightningAuthKeychains ( ) ,
305
289
/ E r r o r : I n v a l i d l i g h t n i n g a u t h k e y : d e f /
306
290
) ;
307
291
} ) ;
308
292
} ) ;
293
+
294
+ describe ( 'Update lightning wallet coin specific' , function ( ) {
295
+ const walletData = {
296
+ id : 'fakeid' ,
297
+ coin : coinName ,
298
+ keys : [ 'abc' ] ,
299
+ coinSpecific : { keys : [ 'def' , 'ghi' ] } ,
300
+ } ;
301
+
302
+ const userAuthKey = {
303
+ id : 'def' ,
304
+ pub : 'xpub661MyMwAqRbcGYjYsnsDj1SHdiXynWEXNnfNgMSpokN54FKyMqbu7rWEfVNDs6uAJmz86UVFtq4sefhQpXZhSAzQcL9zrEPtiLNNZoeSxCG' ,
305
+ encryptedPrv :
306
+ '{"iv":"zYhhaNdW0wPfJEoBjZ4pvg==","v":1,"iter":10000,"ks":256,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"tgAMua9jjhw=","ct":"HcrbxQvNlWG5tLMndYzdNCYa1l+1h7o+vSsweA0+q1le3tWt6jLUJSEjZN+JI8lTZ2KPFQgLulQQhsUa+ytUCBi0vSgjF7x7CprT7l2Cfjkew00XsEd7wnmtJUsrQk8m69Co7tIRA3oEgzrnYwy4qOM81lbNNyQ="}' ,
307
+ source : 'user' ,
308
+ coinSpecific : {
309
+ tlnbtc : {
310
+ purpose : 'userAuth' ,
311
+ } ,
312
+ } ,
313
+ } ;
314
+
315
+ const nodeAuthKey = {
316
+ id : 'ghi' ,
317
+ pub : 'xpub661MyMwAqRbcG9xnTnAnRbJPo3MAHyRtH4zeehN8exYk4VFz5buepUzebhix33BKhS5Eb4V3LEfW5pYiSR8qmaEnyrpeghhKY8JfzAsUDpq' ,
318
+ encryptedPrv :
319
+ '{"iv":"bH6eGbnl9x8PZECPrgvcng==","v":1,"iter":10000,"ks":256,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"o8yknV6nTI8=","ct":"nGyzAToIzYkQeIdcVafoWHtMx7+Fgj0YldCme3WA1yxJAA0QulZVhblMZN/7efCRIumA0NNmpH7dxH6n8cVlz/Z+RUgC2q9lgvZKUoJcYNTjWUfkmkJutXX2tr8yVxm+eC/hnRiyfVLZ2qPxctvDlBVBfgLuPyc="}' ,
320
+ source : 'user' ,
321
+ coinSpecific : {
322
+ tlnbtc : {
323
+ purpose : 'nodeAuth' ,
324
+ } ,
325
+ } ,
326
+ } ;
327
+
328
+ const watchOnlyAccounts = {
329
+ master_key_birthday_timestamp : 'dummy' ,
330
+ master_key_fingerprint : 'dummy' ,
331
+ accounts : [
332
+ {
333
+ xpub : 'upub5Eep7H5q39PzQZLVEYLBytDyBNeV74E8mQsyeL6UozFq9Y3MsZ52G7YGuqrJPgoyAqF7TBeJdnkrHrVrB5pkWkPJ9cJGAePMU6F1Gyw6aFH' ,
334
+ purpose : 49 ,
335
+ coin_type : 0 ,
336
+ account : 0 ,
337
+ } ,
338
+ {
339
+ xpub : 'vpub5ZU1PHGpQoDSHckYico4nsvwsD3mTh6UjqL5zyGWXZXzBjTYMNKot7t9eRPQY71hJcnNN9r1ss25g3xA9rmoJ5nWPg8jEWavrttnsVa1qw1' ,
340
+ purpose : 84 ,
341
+ coin_type : 0 ,
342
+ account : 0 ,
343
+ } ,
344
+ ] ,
345
+ } ;
346
+
347
+ const params = {
348
+ encryptedSignerMacaroon : 'test encryptedSignerMacaroon' ,
349
+ encryptedSignerAdminMacaroon : 'test encryptedSignerAdminMacaroon' ,
350
+ signerIp : 'test signerIp' ,
351
+ encryptedSignerTlsKey : 'test encryptedSignerTlsKey' ,
352
+ signerTlsCert : 'test signerTlsCert' ,
353
+ watchOnlyAccounts,
354
+ } ;
355
+
356
+ it ( 'should update wallet' , async function ( ) {
357
+ const wallet = new Wallet ( bitgo , basecoin , walletData ) . lightningV2 ( ) ;
358
+
359
+ const userAuthKeyNock = nock ( bgUrl )
360
+ . get ( '/api/v2/' + coinName + '/key/def' )
361
+ . reply ( 200 , userAuthKey ) ;
362
+ const nodeAuthKeyNock = nock ( bgUrl )
363
+ . get ( '/api/v2/' + coinName + '/key/ghi' )
364
+ . reply ( 200 , nodeAuthKey ) ;
365
+ const wpWalletUpdateNock = nock ( bgUrl ) . put ( `/api/v2/tlnbtc/wallet/${ walletData . id } ` ) . reply ( 200 ) ;
366
+
367
+ await assert . doesNotReject ( async ( ) => await wallet . updateWalletCoinSpecific ( params , 'password123' ) ) ;
368
+ userAuthKeyNock . done ( ) ;
369
+ nodeAuthKeyNock . done ( ) ;
370
+ wpWalletUpdateNock . done ( ) ;
371
+ } ) ;
372
+ } ) ;
309
373
} ) ;
0 commit comments