PHP WebShell
Текущая директория: /opt/BitGoJS/modules/sdk-coin-avaxp/test/unit/lib
Просмотр файла: keyPair.ts
import assert from 'assert';
import should from 'should';
import { KeyPair } from '../../../src/lib';
import * as testData from '../../resources/avaxp';
const pubKey = testData.ACCOUNT_1.pubkey;
const prvKey = testData.ACCOUNT_1.privkey;
describe('Avax P Key Pair', () => {
describe('should create a valid KeyPair', () => {
it('from an empty value', () => {
const keyPair = new KeyPair();
should.exists(keyPair.getKeys().prv);
should.exists(keyPair.getKeys().pub);
should.exists(keyPair.getKeys().pub);
});
it('from a seed', () => {
const seed = testData.SEED_ACCOUNT.seed;
const keyPairObj = new KeyPair({ seed: Buffer.from(seed, 'hex') });
const keys = keyPairObj.getKeys();
should.exists(keys.prv);
should.exists(keys.pub);
should.equal(keys.prv!, testData.SEED_ACCOUNT.privateKey);
should.equal(keys.pub, testData.SEED_ACCOUNT.publicKey);
const extendedKeys = keyPairObj.getExtendedKeys();
should.exists(extendedKeys.xprv);
should.exists(extendedKeys.xpub);
should.equal(extendedKeys.xprv, testData.SEED_ACCOUNT.xPrivateKey);
should.equal(extendedKeys.xpub, testData.SEED_ACCOUNT.xPublicKey);
});
it('from a xprv', () => {
const keyPairObj = new KeyPair({ prv: testData.SEED_ACCOUNT.xPrivateKey });
const keys = keyPairObj.getKeys();
should.exists(keys.prv);
should.exists(keys.pub);
should.equal(keys.prv!, testData.SEED_ACCOUNT.privateKey);
should.equal(keys.pub, testData.SEED_ACCOUNT.publicKey);
const extendedKeys = keyPairObj.getExtendedKeys();
should.exists(extendedKeys.xprv);
should.exists(extendedKeys.xpub);
should.equal(extendedKeys.xprv, testData.SEED_ACCOUNT.xPrivateKey);
should.equal(extendedKeys.xpub, testData.SEED_ACCOUNT.xPublicKey);
});
it('from a xpub', () => {
const keyPairObj = new KeyPair({ pub: testData.SEED_ACCOUNT.xPublicKey });
const keys = keyPairObj.getKeys();
should.not.exists(keys.prv);
should.exists(keys.pub);
should.equal(keys.pub, testData.SEED_ACCOUNT.publicKey);
const extendedKeys = keyPairObj.getExtendedKeys();
should.not.exists(extendedKeys.xprv);
should.exists(extendedKeys.xpub);
should.equal(extendedKeys.xpub, testData.SEED_ACCOUNT.xPublicKey);
});
it('from a public key', () => {
const keyPair = new KeyPair({ pub: testData.ACCOUNT_3.pubkey });
should.equal(keyPair.getKeys().pub, testData.ACCOUNT_3.pubkeyHex);
should.exists(keyPair.getAddress());
});
it('from a public ke hex', () => {
const keyPair = new KeyPair({ pub: testData.ACCOUNT_3.pubkeyHex });
should.equal(keyPair.getKeys().pub, testData.ACCOUNT_3.pubkeyHex);
should.exists(keyPair.getAddress());
});
it('from a private key', () => {
const keyPair = new KeyPair({ prv: testData.ACCOUNT_3.privkey });
should.equal(keyPair.getKeys().prv, testData.ACCOUNT_3.privkeyHex);
should.equal(keyPair.getKeys().pub, testData.ACCOUNT_3.pubkeyHex);
should.exists(keyPair.getAddress());
});
it('from a private key Hex', () => {
const keyPair = new KeyPair({ prv: testData.ACCOUNT_3.privkeyHex });
should.equal(keyPair.getKeys().prv, testData.ACCOUNT_3.privkeyHex);
should.equal(keyPair.getKeys().pub, testData.ACCOUNT_3.pubkeyHex);
should.exists(keyPair.getAddress());
});
it('Should get same address key for account 3 private key ', () => {
const keyPair = new KeyPair({ prv: testData.ACCOUNT_3.privkey });
should.equal(keyPair.getKeys().prv, testData.ACCOUNT_3.privkeyHex);
should.equal(keyPair.getKeys().pub, testData.ACCOUNT_3.pubkeyHex);
should.equal(keyPair.getAddress('testnet'), testData.ACCOUNT_3.address);
});
it('Should get same address key for account 3 private key hex ', () => {
const keyPair = new KeyPair({ prv: testData.ACCOUNT_3.privkeyHex });
should.equal(keyPair.getKeys().prv, testData.ACCOUNT_3.privkeyHex);
should.equal(keyPair.getKeys().pub, testData.ACCOUNT_3.pubkeyHex);
should.equal(keyPair.getAddress('testnet'), testData.ACCOUNT_3.address);
});
it('Should get same address key for account 4 private key ', () => {
const keyPair = new KeyPair({ prv: testData.ACCOUNT_4.privkey });
should.equal(keyPair.getKeys().prv, testData.ACCOUNT_4.privkeyHex);
should.equal(keyPair.getKeys().pub, testData.ACCOUNT_4.pubkeyHex);
should.equal(keyPair.getAddress('testnet'), testData.ACCOUNT_4.address);
});
it('Should get same address key for account 4 private key hex ', () => {
const keyPair = new KeyPair({ prv: testData.ACCOUNT_4.privkeyHex });
should.equal(keyPair.getKeys().prv, testData.ACCOUNT_4.privkeyHex);
should.equal(keyPair.getKeys().pub, testData.ACCOUNT_4.pubkeyHex);
should.equal(keyPair.getAddress('testnet'), testData.ACCOUNT_4.address);
});
describe('getAddress', function () {
it('should get an address', () => {
const seed = testData.SEED_ACCOUNT.seed;
const keyPair = new KeyPair({ seed: Buffer.from(seed, 'hex') });
const address = keyPair.getAddress();
address.should.equal(testData.SEED_ACCOUNT.addressMainnet);
});
});
it('without source', () => {
const keyPair = new KeyPair();
keyPair.getKeys().should.have.property('pub');
keyPair.getKeys().should.have.property('prv');
});
});
describe('should fail to create a KeyPair', () => {
it('from an invalid public key', () => {
assert.throws(
() => new KeyPair({ pub: testData.INVALID_SHORT_KEYPAIR_KEY }),
(e: any) => e.message === testData.INVALID_PUBLIC_KEY_ERROR_MESSAGE
);
});
it('from an invalid private key', () => {
assert.throws(
() => new KeyPair({ prv: testData.INVALID_SHORT_KEYPAIR_KEY }),
(e: any) => e.message === testData.INVALID_PRIVATE_KEY_ERROR_MESSAGE
);
assert.throws(
() => {
new KeyPair({ prv: testData.INVALID_LONG_KEYPAIR_PRV });
},
(e: any) => e.message === testData.INVALID_PRIVATE_KEY_ERROR_MESSAGE
);
assert.throws(
() => new KeyPair({ prv: prvKey + pubKey }),
(e: any) => e.message === testData.INVALID_PRIVATE_KEY_ERROR_MESSAGE
);
});
});
describe('verifyAddress', function () {
it('should get and match mainnet address', () => {
const seed = testData.SEED_ACCOUNT.seed;
const keyPair = new KeyPair({ seed: Buffer.from(seed, 'hex') });
const address = keyPair.getAddress();
address.should.equal(testData.SEED_ACCOUNT.addressMainnet);
const prv = testData.ACCOUNT_1.privkey;
const keyPair2 = new KeyPair({ prv: prv });
const address2 = keyPair2.getAddress();
address2.should.equal(testData.ACCOUNT_1.addressMainnet);
});
it('should get and match testnet address', () => {
const seed = testData.SEED_ACCOUNT.seed;
const keyPair = new KeyPair({ seed: Buffer.from(seed, 'hex') });
const address = keyPair.getAddress('testnet');
address.should.equal(testData.SEED_ACCOUNT.addressTestnet);
const prv = testData.ACCOUNT_1.privkey;
const keyPair2 = new KeyPair({ prv: prv });
const address2 = keyPair2.getAddress('testnet');
address2.should.equal(testData.ACCOUNT_1.addressTestnet);
});
});
});
Выполнить команду
Для локальной разработки. Не используйте в интернете!