1
1
/* eslint-disable sonarjs/no-duplicate-string */
2
2
import * as Crypto from '@cardano-sdk/crypto' ;
3
- import { AddressType , KeyAgentBase , KeyAgentType , KeyRole , SerializableInMemoryKeyAgentData } from '../src' ;
3
+ import {
4
+ AccountKeyDerivationPath ,
5
+ AddressType ,
6
+ KeyAgentBase ,
7
+ KeyAgentType ,
8
+ KeyRole ,
9
+ SerializableInMemoryKeyAgentData
10
+ } from '../src' ;
4
11
import { CML , Cardano } from '@cardano-sdk/core' ;
5
12
import { dummyLogger } from 'ts-log' ;
6
13
@@ -52,7 +59,7 @@ describe('KeyAgentBase', () => {
52
59
53
60
const index = 1 ;
54
61
const type = AddressType . External ;
55
- const address = await keyAgent . deriveAddress ( { index, type } ) ;
62
+ const address = await keyAgent . deriveAddress ( { index, type } , 0 ) ;
56
63
57
64
expect ( address . index ) . toBe ( index ) ;
58
65
expect ( address . type ) . toBe ( type ) ;
@@ -64,11 +71,58 @@ describe('KeyAgentBase', () => {
64
71
// creates a new array obj
65
72
expect ( keyAgent . knownAddresses ) . not . toBe ( initialAddresses ) ;
66
73
67
- const sameAddress = await keyAgent . deriveAddress ( { index, type } ) ;
74
+ const sameAddress = await keyAgent . deriveAddress ( { index, type } , 0 ) ;
68
75
expect ( sameAddress . address ) . toEqual ( address . address ) ;
69
76
expect ( keyAgent . knownAddresses . length ) . toEqual ( 1 ) ;
70
77
} ) ;
71
78
79
+ test ( 'deriveAddress derives the address with stake key of the given index' , async ( ) => {
80
+ const keyMap = new Map < number , string > ( [
81
+ [ 0 , '0000000000000000000000000000000000000000000000000000000000000000' ] ,
82
+ [ 1 , '1111111111111111111111111111111111111111111111111111111111111111' ] ,
83
+ [ 2 , '2222222222222222222222222222222222222222222222222222222222222222' ] ,
84
+ [ 3 , '3333333333333333333333333333333333333333333333333333333333333333' ] ,
85
+ [ 4 , '4444444444444444444444444444444444444444444444444444444444444444' ]
86
+ ] ) ;
87
+
88
+ keyAgent . derivePublicKey = jest . fn ( ( x : AccountKeyDerivationPath ) =>
89
+ Promise . resolve ( Crypto . Ed25519PublicKeyHex ( keyMap . get ( x . index ) ! ) )
90
+ ) ;
91
+
92
+ const index = 0 ;
93
+ const type = AddressType . External ;
94
+ const addresses = [
95
+ await keyAgent . deriveAddress ( { index, type } , 0 ) ,
96
+ await keyAgent . deriveAddress ( { index, type } , 1 ) ,
97
+ await keyAgent . deriveAddress ( { index, type } , 2 ) ,
98
+ await keyAgent . deriveAddress ( { index, type } , 3 )
99
+ ] ;
100
+
101
+ expect ( addresses [ 0 ] . stakeKeyDerivationPath ) . toEqual ( { index : 0 , role : KeyRole . Stake } ) ;
102
+ expect ( addresses [ 0 ] . rewardAccount ) . toEqual ( 'stake_test1uruaegs6djpxaj9vkn8njh9uys63jdaluetqkf5r4w95zhc8cxn3h' ) ;
103
+ expect ( addresses [ 0 ] . address ) . toEqual (
104
+ 'addr_test1qruaegs6djpxaj9vkn8njh9uys63jdaluetqkf5r4w95zhlemj3p5myzdmy2edx089wtcfp4rymmlejkpvng82utg90s4cadlm'
105
+ ) ;
106
+
107
+ expect ( addresses [ 1 ] . stakeKeyDerivationPath ) . toEqual ( { index : 1 , role : KeyRole . Stake } ) ;
108
+ expect ( addresses [ 1 ] . rewardAccount ) . toEqual ( 'stake_test1uzx0qqs06evy77cnpk6u5q3fc50exjpp5t4s0swl2ykc4jsmh8tej' ) ;
109
+ expect ( addresses [ 1 ] . address ) . toEqual (
110
+ 'addr_test1qruaegs6djpxaj9vkn8njh9uys63jdaluetqkf5r4w95zhuv7qpql4jcfaa3xrd4egpzn3gljdyzrghtqlqa75fd3t9qqnvgeq'
111
+ ) ;
112
+
113
+ expect ( addresses [ 2 ] . stakeKeyDerivationPath ) . toEqual ( { index : 2 , role : KeyRole . Stake } ) ;
114
+ expect ( addresses [ 2 ] . rewardAccount ) . toEqual ( 'stake_test1uqcnxxxatdgmqdmz0rhg72kn3n0egek5s0nqcvfy9ztyltc9cpuz4' ) ;
115
+ expect ( addresses [ 2 ] . address ) . toEqual (
116
+ 'addr_test1qruaegs6djpxaj9vkn8njh9uys63jdaluetqkf5r4w95zhe3xvvd6k63kqmky78w3u4d8rxlj3ndfqlxpscjg2ykf7hs8qc48l'
117
+ ) ;
118
+
119
+ expect ( addresses [ 3 ] . stakeKeyDerivationPath ) . toEqual ( { index : 3 , role : KeyRole . Stake } ) ;
120
+ expect ( addresses [ 3 ] . rewardAccount ) . toEqual ( 'stake_test1urj8hvwxxz0t6pnfttj9ne5leu74shjlg83a8kxww9ft2fqtdhssu' ) ;
121
+ expect ( addresses [ 3 ] . address ) . toEqual (
122
+ 'addr_test1qruaegs6djpxaj9vkn8njh9uys63jdaluetqkf5r4w95zhly0wcuvvy7h5rxjkhyt8nflneatp097s0r60vvuu2jk5jq73efq0'
123
+ ) ;
124
+ } ) ;
125
+
72
126
test ( 'derivePublicKey' , async ( ) => {
73
127
const externalPublicKey = await keyAgent . derivePublicKey ( { index : 1 , role : KeyRole . External } ) ;
74
128
expect ( typeof externalPublicKey ) . toBe ( 'string' ) ;
0 commit comments