11import * as assert from 'assert' ;
22import { TestBitGo } from '@bitgo/sdk-test' ;
33import * as nock from 'nock' ;
4- import { BaseCoin , getLightningAuthKeychains , getLightningKeychain } from '@bitgo/sdk-core' ;
4+ import { BaseCoin } from '@bitgo/sdk-core' ;
55
66import { BitGo , common , GenerateLightningWalletOptions , Wallet , Wallets } from '../../../../src' ;
77
@@ -219,19 +219,19 @@ describe('Lightning wallets', function () {
219219 } ;
220220
221221 it ( 'should get lightning key' , async function ( ) {
222- const wallet = new Wallet ( bitgo , basecoin , walletData ) ;
222+ const wallet = new Wallet ( bitgo , basecoin , walletData ) . lightningV2 ( ) ;
223223
224224 const keyNock = nock ( bgUrl )
225225 . get ( '/api/v2/' + coinName + '/key/abc' )
226226 . reply ( 200 , userKeyData ) ;
227227
228- const key = await getLightningKeychain ( wallet ) ;
228+ const key = await wallet . getLightningKeychain ( ) ;
229229 assert . deepStrictEqual ( key , userKeyData ) ;
230230 keyNock . done ( ) ;
231231 } ) ;
232232
233233 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 ( ) ;
235235
236236 const userAuthKeyNock = nock ( bgUrl )
237237 . get ( '/api/v2/' + coinName + '/key/def' )
@@ -240,57 +240,41 @@ describe('Lightning wallets', function () {
240240 . get ( '/api/v2/' + coinName + '/key/ghi' )
241241 . reply ( 200 , nodeAuthKeyData ) ;
242242
243- const { userAuthKey, nodeAuthKey } = await getLightningAuthKeychains ( wallet ) ;
243+ const { userAuthKey, nodeAuthKey } = await wallet . getLightningAuthKeychains ( ) ;
244244 assert . deepStrictEqual ( userAuthKey , userAuthKeyData ) ;
245245 assert . deepStrictEqual ( nodeAuthKey , nodeAuthKeyData ) ;
246246 userAuthKeyNock . done ( ) ;
247247 nodeAuthKeyNock . done ( ) ;
248248 } ) ;
249249
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-
266250 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 ( ) ;
268252 await assert . rejects (
269- async ( ) => await getLightningKeychain ( wallet ) ,
253+ async ( ) => await wallet . getLightningKeychain ( ) ,
270254 / 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 /
271255 ) ;
272256 } ) ;
273257
274258 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 ( ) ;
276260 await assert . rejects (
277- async ( ) => await getLightningAuthKeychains ( wallet ) ,
261+ async ( ) => await wallet . getLightningAuthKeychains ( ) ,
278262 / 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 /
279263 ) ;
280264 } ) ;
281265
282266 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 ( ) ;
284268
285269 nock ( bgUrl )
286270 . get ( '/api/v2/' + coinName + '/key/abc' )
287271 . reply ( 200 , { ...userKeyData , source : 'backup' } ) ;
288272
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 / ) ;
290274 } ) ;
291275
292276 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 ( ) ;
294278
295279 nock ( bgUrl )
296280 . get ( '/api/v2/' + coinName + '/key/def' )
@@ -301,9 +285,89 @@ describe('Lightning wallets', function () {
301285 . reply ( 200 , nodeAuthKeyData ) ;
302286
303287 await assert . rejects (
304- async ( ) => await getLightningAuthKeychains ( wallet ) ,
288+ async ( ) => await wallet . getLightningAuthKeychains ( ) ,
305289 / 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 /
306290 ) ;
307291 } ) ;
308292 } ) ;
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+ } ) ;
309373} ) ;
0 commit comments