Skip to content

Commit 63650a7

Browse files
author
AJ ONeal
committed
chore: update tests for new API
1 parent f75b07c commit 63650a7

File tree

1 file changed

+49
-67
lines changed

1 file changed

+49
-67
lines changed

test/hdkey.test.js

Lines changed: 49 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -14,22 +14,22 @@ var Secp256k1 = require("@dashincubator/secp256k1");
1414
/* global describe it */
1515

1616
describe("hdkey", function () {
17-
describe("+ fromMasterSeed", function () {
17+
describe("+ fromSeed", function () {
1818
for (let f of fixtures.valid) {
1919
it("should properly derive the chain path: " + f.path, async function () {
20-
var hdkey = await DashHd.fromMasterSeed(hexToU8(f.seed));
20+
var hdkey = await DashHd.fromSeed(hexToU8(f.seed));
2121
var childkey = await DashHd.derivePath(hdkey, f.path);
22-
let xpriv = await DashHd.getPrivateExtendedKey(childkey);
22+
let xpriv = await DashHd.toXPrv(childkey);
2323

2424
assert.equal(xpriv, f.private);
25-
assert.equal(await DashHd.getPublicExtendedKey(childkey), f.public);
25+
assert.equal(await DashHd.toXPub(childkey), f.public);
2626
});
2727

2828
describe(
29-
"> " + f.path + " get<Private|Public>ExtendedKey() / fromExtendedKey()",
29+
"> " + f.path + " get<Private|Public>ExtendedKey() / fromXKey()",
3030
function () {
3131
it("should return an object read for JSON serialization", async function () {
32-
var hdkey = await DashHd.fromMasterSeed(hexToU8(f.seed));
32+
var hdkey = await DashHd.fromSeed(hexToU8(f.seed));
3333
var childkey = await DashHd.derivePath(hdkey, f.path);
3434

3535
var obj = {
@@ -38,20 +38,14 @@ describe("hdkey", function () {
3838
};
3939

4040
var childObj = {
41-
xpriv: await DashHd.getPrivateExtendedKey(childkey),
42-
xpub: await DashHd.getPublicExtendedKey(childkey),
41+
xpriv: await DashHd.toXPrv(childkey),
42+
xpub: await DashHd.toXPub(childkey),
4343
};
4444
assert.deepEqual(childObj, obj);
4545

46-
var newKey = await DashHd.fromExtendedKey(childObj.xpriv);
47-
assert.strictEqual(
48-
await DashHd.getPrivateExtendedKey(newKey),
49-
f.private,
50-
);
51-
assert.strictEqual(
52-
await DashHd.getPublicExtendedKey(newKey),
53-
f.public,
54-
);
46+
var newKey = await DashHd.fromXKey(childObj.xpriv, { bip32: true });
47+
assert.strictEqual(await DashHd.toXPrv(newKey), f.private);
48+
assert.strictEqual(await DashHd.toXPub(newKey), f.public);
5549
});
5650
},
5751
);
@@ -106,13 +100,13 @@ describe("hdkey", function () {
106100
});
107101
*/
108102

109-
describe("+ fromExtendedKey()", function () {
103+
describe("+ fromXKey()", function () {
110104
describe("> when private", function () {
111105
it("should parse it", async function () {
112106
// m/0/2147483647'/1/2147483646'/2
113107
var key =
114108
"xprvA2nrNbFZABcdryreWet9Ea4LvTJcGsqrMzxHx98MMrotbir7yrKCEXw7nadnHM8Dq38EGfSh6dqA9QWTyefMLEcBYJUuekgW4BYPJcr9E7j";
115-
var hdkey = await DashHd.fromExtendedKey(key);
109+
var hdkey = await DashHd.fromXKey(key, { bip32: true });
116110
assert.equal(hdkey.versions.private, 0x0488ade4);
117111
assert.equal(hdkey.versions.public, 0x0488b21e);
118112
assert.equal(hdkey.depth, 5);
@@ -130,7 +124,7 @@ describe("hdkey", function () {
130124
u8ToHex(hdkey.publicKey),
131125
"024d902e1a2fc7a8755ab5b694c575fce742c48d9ff192e63df5193e4c7afe1f9c",
132126
);
133-
let print = await DashHd.fingerprint(hdkey.publicKey);
127+
let print = await DashHd._fingerprint(hdkey.publicKey);
134128
assert.equal(
135129
print.toString(16),
136130
"26132fdbe7bf89cbc64cf8dafa3f9f88b8666220".slice(0, 8),
@@ -143,7 +137,7 @@ describe("hdkey", function () {
143137
// m/0/2147483647'/1/2147483646'/2
144138
var key =
145139
"xpub6FnCn6nSzZAw5Tw7cgR9bi15UV96gLZhjDstkXXxvCLsUXBGXPdSnLFbdpq8p9HmGsApME5hQTZ3emM2rnY5agb9rXpVGyy3bdW6EEgAtqt";
146-
var hdkey = await DashHd.fromExtendedKey(key);
140+
var hdkey = await DashHd.fromXKey(key, { bip32: true });
147141
assert.equal(hdkey.versions.private, 0x0488ade4);
148142
assert.equal(hdkey.versions.public, 0x0488b21e);
149143
assert.equal(hdkey.depth, 5);
@@ -158,7 +152,7 @@ describe("hdkey", function () {
158152
u8ToHex(hdkey.publicKey),
159153
"024d902e1a2fc7a8755ab5b694c575fce742c48d9ff192e63df5193e4c7afe1f9c",
160154
);
161-
let print = await DashHd.fingerprint(hdkey.publicKey);
155+
let print = await DashHd._fingerprint(hdkey.publicKey);
162156
assert.equal(
163157
print.toString(16),
164158
"26132fdbe7bf89cbc64cf8dafa3f9f88b8666220".slice(0, 8),
@@ -169,7 +163,7 @@ describe("hdkey", function () {
169163
// m/0/2147483647'/1/2147483646'/2
170164
var key =
171165
"xpub6FnCn6nSzZAw5Tw7cgR9bi15UV96gLZhjDstkXXxvCLsUXBGXPdSnLFbdpq8p9HmGsApME5hQTZ3emM2rnY5agb9rXpVGyy3bdW6EEgAtqt";
172-
var hdkey = await DashHd.fromExtendedKey(key, null, false);
166+
var hdkey = await DashHd.fromXKey(key, { versions: null, bip32: true });
173167
assert.equal(hdkey.versions.private, 0x0488ade4);
174168
assert.equal(hdkey.versions.public, 0x0488b21e);
175169
assert.equal(hdkey.depth, 5);
@@ -184,7 +178,7 @@ describe("hdkey", function () {
184178
u8ToHex(hdkey.publicKey),
185179
"024d902e1a2fc7a8755ab5b694c575fce742c48d9ff192e63df5193e4c7afe1f9c",
186180
);
187-
let print = await DashHd.fingerprint(hdkey.publicKey);
181+
let print = await DashHd._fingerprint(hdkey.publicKey);
188182
assert.equal(
189183
print.toString(16),
190184
"26132fdbe7bf89cbc64cf8dafa3f9f88b8666220".slice(0, 8),
@@ -197,7 +191,7 @@ describe("hdkey", function () {
197191
it("should work", async function () {
198192
var key =
199193
"xprvA2nrNbFZABcdryreWet9Ea4LvTJcGsqrMzxHx98MMrotbir7yrKCEXw7nadnHM8Dq38EGfSh6dqA9QWTyefMLEcBYJUuekgW4BYPJcr9E7j";
200-
var hdkey = await DashHd.fromExtendedKey(key);
194+
var hdkey = await DashHd.fromXKey(key, { bip32: true });
201195

202196
var ma = new Uint8Array(32);
203197
var mb = new Uint8Array(Buffer.alloc(32, 8));
@@ -233,26 +227,26 @@ describe("hdkey", function () {
233227
it("should work", async function () {
234228
var key =
235229
"xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8";
236-
var hdkey = await DashHd.fromExtendedKey(key);
230+
var hdkey = await DashHd.fromXKey(key, { bip32: true });
237231

238232
var path = "m/3353535/2223/0/99424/4/33";
239233
var derivedHDKey = await DashHd.derivePath(hdkey, path);
240234

241235
var expected =
242236
"xpub6JdKdVJtdx6sC3nh87pDvnGhotXuU5Kz6Qy7Piy84vUAwWSYShsUGULE8u6gCivTHgz7cCKJHiXaaMeieB4YnoFVAsNgHHKXJ2mN6jCMbH1";
243-
assert.equal(await DashHd.getPublicExtendedKey(derivedHDKey), expected);
237+
assert.equal(await DashHd.toXPub(derivedHDKey), expected);
244238
});
245239
});
246240

247241
describe("> when private key integer is less than 32 bytes", function () {
248242
it("should work", async function () {
249243
var seed = "000102030405060708090a0b0c0d0e0f";
250-
var masterKey = await DashHd.fromMasterSeed(hexToU8(seed));
244+
var masterKey = await DashHd.fromSeed(hexToU8(seed));
251245

252246
var newKey = await DashHd.derivePath(masterKey, "m/44'/6'/4'");
253247
var expected =
254248
"xprv9ymoag6W7cR6KBcJzhCM6qqTrb3rRVVwXKzwNqp1tDWcwierEv3BA9if3ARHMhMPh9u2jNoutcgpUBLMfq3kADDo7LzfoCnhhXMRGX3PXDx";
255-
assert.equal(await DashHd.getPrivateExtendedKey(newKey), expected);
249+
assert.equal(await DashHd.toXPrv(newKey), expected);
256250
});
257251
});
258252

@@ -266,7 +260,7 @@ describe("hdkey", function () {
266260
it("will include leading zeros when hashing to derive child", async function () {
267261
var key =
268262
"xprv9s21ZrQH143K3ckY9DgU79uMTJkQRLdbCCVDh81SnxTgPzLLGax6uHeBULTtaEtcAvKjXfT7ZWtHzKjTpujMkUd9dDb8msDeAfnJxrgAYhr";
269-
var hdkey = await DashHd.fromExtendedKey(key);
263+
var hdkey = await DashHd.fromXKey(key, { bip32: true });
270264
assert.equal(
271265
u8ToHex(hdkey.privateKey),
272266
"00000055378cf5fafb56c711c674143f9b0ee82ab0ba2924f19b64f5ae7cdbfd",
@@ -282,28 +276,22 @@ describe("hdkey", function () {
282276
describe("> when private key is null", function () {
283277
it("privateExtendedKey should return null and not throw", async function () {
284278
var seed = "000102030405060708090a0b0c0d0e0f";
285-
var masterKey = await DashHd.fromMasterSeed(hexToU8(seed));
279+
var masterKey = await DashHd.fromSeed(hexToU8(seed));
286280

287-
assert.ok(
288-
await DashHd.getPrivateExtendedKey(masterKey),
289-
"xpriv is truthy",
290-
);
281+
assert.ok(await DashHd.toXPrv(masterKey), "xpriv is truthy");
291282
DashHd.wipePrivateData(masterKey);
292283

293284
assert.doesNotThrow(async function () {
294-
await masterKey.getPrivateExtendedKey();
285+
await masterKey.toXPrv();
295286
});
296287

297-
assert.ok(
298-
!(await DashHd.getPrivateExtendedKey(masterKey)),
299-
"xpriv is falsy",
300-
);
288+
assert.ok(!(await DashHd.toXPrv(masterKey)), "xpriv is falsy");
301289
});
302290
});
303291

304292
describe(" - when the path given to derive contains only the master extended key", function () {
305293
it("should return the same hdkey instance", async function () {
306-
const hdKeyInstance = await DashHd.fromMasterSeed(
294+
const hdKeyInstance = await DashHd.fromSeed(
307295
hexToU8(fixtures.valid[0].seed),
308296
);
309297
assert.equal(await DashHd.derivePath(hdKeyInstance, "m"), hdKeyInstance);
@@ -316,37 +304,31 @@ describe("hdkey", function () {
316304
describe(" - when the path given to derive does not begin with master extended key", function () {
317305
it("should throw an error", async function () {
318306
assert.rejects(async function () {
319-
const hdkey = DashHd.create();
320-
await DashHd.derivePath(hdkey, "123");
307+
await DashHd.derivePath({}, "123");
321308
}, /Path must start with "m" or "M"/);
322309
});
323310
});
324311

325312
describe("- after wipePrivateData()", function () {
326313
it("should not have private data", async function () {
327-
const hdkey = await DashHd.fromMasterSeed(
328-
hexToU8(fixtures.valid[6].seed),
329-
);
314+
const hdkey = await DashHd.fromSeed(hexToU8(fixtures.valid[6].seed));
330315
DashHd.wipePrivateData(hdkey);
331316
assert.equal(hdkey.privateKey, null);
332-
assert.equal(await DashHd.getPrivateExtendedKey(hdkey), null);
317+
assert.equal(await DashHd.toXPrv(hdkey), null);
333318
assert.rejects(async function () {
334319
await sign(hdkey, new Uint8Array(32));
335320
}, "shouldn't be able to sign");
336321
const childKey = await DashHd.derivePath(hdkey, "m/0");
337-
assert.equal(
338-
await DashHd.getPublicExtendedKey(childKey),
339-
fixtures.valid[7].public,
340-
);
322+
assert.equal(await DashHd.toXPub(childKey), fixtures.valid[7].public);
341323
assert.equal(childKey.privateKey, null);
342-
assert.equal(await DashHd.getPrivateExtendedKey(childKey), null);
324+
assert.equal(await DashHd.toXPrv(childKey), null);
343325
});
344326

345327
it("should have correct data", async function () {
346328
// m/0/2147483647'/1/2147483646'/2
347329
const key =
348330
"xprvA2nrNbFZABcdryreWet9Ea4LvTJcGsqrMzxHx98MMrotbir7yrKCEXw7nadnHM8Dq38EGfSh6dqA9QWTyefMLEcBYJUuekgW4BYPJcr9E7j";
349-
const hdkey = await DashHd.fromExtendedKey(key);
331+
const hdkey = await DashHd.fromXKey(key, { bip32: true });
350332
DashHd.wipePrivateData(hdkey);
351333
assert.equal(hdkey.versions.private, 0x0488ade4);
352334
assert.equal(hdkey.versions.public, 0x0488b21e);
@@ -361,21 +343,18 @@ describe("hdkey", function () {
361343
u8ToHex(hdkey.publicKey),
362344
"024d902e1a2fc7a8755ab5b694c575fce742c48d9ff192e63df5193e4c7afe1f9c",
363345
);
364-
let print = await DashHd.fingerprint(hdkey.publicKey);
346+
let print = await DashHd._fingerprint(hdkey.publicKey);
365347
assert.equal(
366348
print.toString(16),
367349
"26132fdbe7bf89cbc64cf8dafa3f9f88b8666220".slice(0, 8),
368350
);
369351
});
370352

371353
it("should be able to verify signatures", async function () {
372-
const fullKey = await DashHd.fromMasterSeed(
373-
hexToU8(fixtures.valid[0].seed),
374-
);
354+
const fullKey = await DashHd.fromSeed(hexToU8(fixtures.valid[0].seed));
375355
// using get/from methods to clone before mutating
376-
const wipedKey = await DashHd.fromExtendedKey(
377-
await DashHd.getPrivateExtendedKey(fullKey),
378-
);
356+
const xprv = await DashHd.toXPrv(fullKey);
357+
const wipedKey = await DashHd.fromXKey(xprv, { bip32: true });
379358
DashHd.wipePrivateData(wipedKey);
380359

381360
const hash = new Uint8Array(Buffer.alloc(32, 8));
@@ -384,18 +363,19 @@ describe("hdkey", function () {
384363
});
385364

386365
it("should not throw if called on hdkey without private data", async function () {
387-
const hdkey = await DashHd.fromExtendedKey(fixtures.valid[0].public);
366+
const hdkey = await DashHd.fromXKey(fixtures.valid[0].public, {
367+
bip32: true,
368+
});
388369
assert.doesNotThrow(() => DashHd.wipePrivateData(hdkey));
389-
assert.equal(
390-
await DashHd.getPublicExtendedKey(hdkey),
391-
fixtures.valid[0].public,
392-
);
370+
assert.equal(await DashHd.toXPub(hdkey), fixtures.valid[0].public);
393371
});
394372
});
395373

396374
describe("Deriving a child key does not mutate the internal state", function () {
397375
it("should not mutate it when deriving with a private key", async function () {
398-
const hdkey = await DashHd.fromExtendedKey(fixtures.valid[0].private);
376+
const hdkey = await DashHd.fromXKey(fixtures.valid[0].private, {
377+
bip32: true,
378+
});
399379
const path = "m/123";
400380
const privateKeyBefore = u8ToHex(hdkey.privateKey);
401381

@@ -419,7 +399,9 @@ describe("hdkey", function () {
419399
});
420400

421401
it("should not mutate it when deriving without a private key", async function () {
422-
const hdkey = await DashHd.fromExtendedKey(fixtures.valid[0].private);
402+
const hdkey = await DashHd.fromXKey(fixtures.valid[0].private, {
403+
bip32: true,
404+
});
423405
const path = "m/123/123/123";
424406
DashHd.wipePrivateData(hdkey);
425407

0 commit comments

Comments
 (0)