@@ -4,6 +4,7 @@ import OutputEntity from '../../src/database/chain/entities/output'
44import { bytes } from '@ckb-lumos/lumos/codec'
55import { hd } from '@ckb-lumos/lumos'
66import { Address } from '../../src/models/address'
7+ import AssetAccount from '../../src/models/asset-account'
78import Transaction from '../../src/database/chain/entities/transaction'
89import { TransactionStatus } from '../../src/models/chain/transaction'
910import { when } from 'jest-when'
@@ -12,8 +13,7 @@ import { closeConnection, getConnection, initConnection } from '../setupAndTeard
1213import { NetworkType } from '../../src/models/network'
1314import SignMessage from '../../src/services/sign-message'
1415import WalletService from '../../src/services/wallets'
15-
16- jest . setTimeout ( 15000 )
16+ import AssetAccountService from '../../src/services/asset-account-service'
1717
1818const { AddressType, AccountExtendedPublicKey } = hd
1919
@@ -720,11 +720,13 @@ describe('integration tests for AddressService', () => {
720720 const message = 'Hello World'
721721 let address = 'ckb1qzda0cr08m85hc8jlnfp3zer7xulejywt49kt2rr0vthywaa50xwsqwe5xyvcxv95l22x8c5ra8tkc0jgxhvrqsda3p3k'
722722
723- beforeEach ( ( ) => {
723+ let walletID = ''
724+
725+ beforeAll ( ( ) => {
726+ jest . setTimeout ( 15000 )
727+
724728 walletService . clearAll ( )
725- } )
726729
727- it ( 'return private key' , async ( ) => {
728730 const seed = hd . mnemonic . mnemonicToSeedSync ( mnemonic )
729731 const masterKeychain = hd . Keychain . fromSeed ( seed )
730732 const extendedKey = new hd . ExtendedPrivateKey (
@@ -746,9 +748,11 @@ describe('integration tests for AddressService', () => {
746748 extendedKey : accountExtendedPublicKey . serialize ( ) ,
747749 keystore,
748750 } )
751+ walletID = wallet . id
752+ } )
749753
750- const addresses = await wallet . checkAndGenerateAddresses ( false , 5 , 5 )
751-
754+ it ( 'hdWallet address' , async ( ) => {
755+ const addresses = await walletService . get ( walletID ) . checkAndGenerateAddresses ( false , 5 , 5 )
752756 if ( addresses ) {
753757 const crypto = require ( 'crypto' )
754758 const randomIndex = crypto . randomInt ( addresses . length )
@@ -757,22 +761,58 @@ describe('integration tests for AddressService', () => {
757761 }
758762
759763 const privateKey = await AddressService . getPrivateKeyByAddress ( {
760- walletID : wallet . id ,
761- password : password ,
764+ walletID,
765+ password,
762766 address,
763767 } )
764768
765769 // @ts -ignore: Private method
766770 const sig = SignMessage . signByPrivateKey ( privateKey , message )
767771 const signature = await SignMessage . sign ( {
768- walletID : wallet . id ,
769- password : password ,
770- message : message ,
772+ walletID,
773+ password,
774+ message,
771775 address,
772776 } )
773777
774778 expect ( sig ) . toEqual ( signature )
775779 } )
780+
781+ it ( 'asset account address' , async ( ) => {
782+ const addresses = await walletService . get ( walletID ) . getNextReceivingAddresses ( )
783+ const usedBlake160s = new Set ( await AssetAccountService . blake160sOfAssetAccounts ( ) )
784+ const addrObj = addresses . find ( a => ! usedBlake160s . has ( a . blake160 ) )
785+
786+ if ( addrObj ) {
787+ const assetAccount = AssetAccount . fromObject ( {
788+ tokenID : 'CKBytes' ,
789+ symbol : 'ckb' ,
790+ tokenName : 'ckb' ,
791+ decimal : '0' ,
792+ balance : '0' ,
793+ accountName : 'ckb' ,
794+ blake160 : addrObj . blake160 ,
795+ } )
796+
797+ const privateKey = await AddressService . getPrivateKeyByAddress ( {
798+ walletID,
799+ accountId : assetAccount . id ,
800+ password,
801+ address,
802+ } )
803+
804+ // @ts -ignore: Private method
805+ const sig = SignMessage . signByPrivateKey ( privateKey , message )
806+ const signature = await SignMessage . sign ( {
807+ walletID,
808+ password,
809+ message,
810+ address,
811+ } )
812+
813+ expect ( sig ) . toEqual ( signature )
814+ }
815+ } )
776816 } )
777817 } )
778818} )
0 commit comments