PHP WebShell
Текущая директория: /opt/BitGoJS/modules/sdk-coin-ada/test/unit
Просмотр файла: utils.ts
import should from 'should';
import { KeyPair, Utils } from '../../src';
import { AddressFormat, toHex } from '@bitgo/sdk-core';
import { Ed25519Signature, DRep } from '@emurgo/cardano-serialization-lib-nodejs';
import {
address,
blockHash,
enterpriseAccounts,
privateKeys,
publicKeys,
signatures,
txIds,
rawTx,
} from '../resources';
describe('utils', () => {
it('should validate addresses correctly', () => {
should.equal(Utils.default.isValidAddress(address.address1), true);
should.equal(Utils.default.isValidAddress(address.address2), true);
should.equal(Utils.default.isValidAddress(address.address3), true);
should.equal(Utils.default.isValidAddress(address.address4), true);
should.equal(Utils.default.isValidAddress('dfjk35y'), false);
should.equal(Utils.default.isValidAddress(undefined as unknown as string), false);
should.equal(Utils.default.isValidAddress(''), false);
// validator addresses
should.equal(Utils.default.isValidAddress(address.address7), true);
should.equal(Utils.default.isValidAddress(address.address8), true);
should.equal(Utils.default.isValidAddress(address.address9), false);
should.equal(Utils.default.isValidAddress(address.address10), false);
should.equal(Utils.default.isValidAddress(address.address11), false);
should.equal(Utils.default.isValidAddress(address.address12), false);
should.equal(Utils.default.isValidAddress(address.address13), false);
should.equal(Utils.default.isValidAddress(address.address14), false);
should.equal(Utils.default.isValidAddress(address.address15), false);
should.equal(Utils.default.isValidAddress(address.address16), false);
// Byron addresses
should.equal(Utils.default.isValidAddress(address.byron1), true);
should.equal(Utils.default.isValidAddress(address.byron2), true);
should.equal(Utils.default.isValidAddress(address.byron3), true);
should.equal(Utils.default.isValidAddress(address.byron4), false);
should.equal(Utils.default.isValidAddress(address.byron5), false);
should.equal(Utils.default.isValidAddress(address.byron6), false);
});
it('should create stake and payment keys correctly', () => {
const keyPair1 = new KeyPair({ pub: enterpriseAccounts.account1.publicKey });
const keyPair2 = new KeyPair({ pub: enterpriseAccounts.account3.publicKey });
should.equal(
Utils.default.createBaseAddressWithStakeAndPaymentKey(keyPair1, keyPair2, AddressFormat.testnet),
'addr_test1qq9arfq9pugs57apr3535z470ma2tvg8pnjy54q6s60muz5kelhytwhzrw9snh7759n9m8fr2xurpk4zyw8hmvk2avdsf62mmj'
);
});
it('should create stake and payment keys correctly from private keys', () => {
const keyPair1 = new KeyPair({ prv: privateKeys.prvKey4 });
const keyPair2 = new KeyPair({ prv: privateKeys.prvKey2 });
should.equal(
Utils.default.createBaseAddressWithStakeAndPaymentKey(keyPair1, keyPair2, AddressFormat.testnet),
'addr_test1qqvglhn9k8um66dsahxyukn9l2f6zdmnpy8puth00gjulk7g0xp5f99mdzwswz4rmfwu00x724w2jahygheyk2zqg9lsvz2muj'
);
});
it('should create stake and payment keys correctly with keypairs initialized from nothing', () => {
const keyPair1 = new KeyPair();
const keyPair2 = new KeyPair();
should.equal(
Utils.default.createBaseAddressWithStakeAndPaymentKey(keyPair1, keyPair2, AddressFormat.testnet),
Utils.default.createBaseAddressWithStakeAndPaymentKey(keyPair1, keyPair2, AddressFormat.testnet)
);
});
it('should validate block hash correctly', () => {
should.equal(Utils.default.isValidBlockId(blockHash.hash1), true);
should.equal(Utils.default.isValidBlockId(blockHash.hash2), true);
// param is coming as undefined so it was causing an issue
should.equal(Utils.default.isValidBlockId(undefined as unknown as string), false);
should.equal(Utils.default.isValidBlockId(''), false);
});
it('should validate invalid block hash correctly', () => {
should.equal(Utils.default.isValidBlockId(''), false);
should.equal(Utils.default.isValidBlockId('0xade35465gfvdcsxsz24300'), false);
should.equal(Utils.default.isValidBlockId(blockHash.hash2 + 'ff'), false);
});
it('should validate public key correctly', () => {
should.equal(
Utils.default.isValidPublicKey('da025aa02990ef466069fadce5e3dcfad663914d6bf42fea3be50a8c3094d8e8'),
true
);
should.equal(Utils.default.isValidPublicKey(publicKeys.pubKey1), true);
should.equal(Utils.default.isValidPublicKey(publicKeys.pubKey2), true);
should.equal(Utils.default.isValidPublicKey(publicKeys.pubKey3), true);
should.equal(Utils.default.isValidPublicKey(publicKeys.pubKey4), false);
});
it('should validate private key correctly', () => {
should.equal(Utils.default.isValidPrivateKey(privateKeys.prvKeyExtended), true);
should.equal(Utils.default.isValidPrivateKey(privateKeys.prvKey2), true);
should.equal(Utils.default.isValidPrivateKey(privateKeys.prvKey3WrongFormat), false);
should.equal(Utils.default.isValidPrivateKey(privateKeys.prvKey4), true);
should.equal(Utils.default.isValidPrivateKey(privateKeys.prvKey5WrongFormat), false);
});
it('should validate signature correctly', () => {
should.equal(
Utils.default.isValidSignature(toHex(Ed25519Signature.from_bech32(signatures.signature1).to_bytes())),
true
);
should.equal(
Utils.default.isValidSignature(toHex(Ed25519Signature.from_bech32(signatures.signature2).to_bytes())),
true
);
});
it('should validate invalid signature correctly', () => {
should.equal(Utils.default.isValidSignature(''), false);
should.equal(Utils.default.isValidSignature('0x00'), false);
should.equal(Utils.default.isValidSignature(privateKeys.prvKeyExtended), false);
should.equal(Utils.default.isValidSignature(signatures.signature1.slice(2)), false);
should.equal(Utils.default.isValidSignature(signatures.signature2 + 'ff'), false);
});
it('should validate transaction id correctly', () => {
should.equal(Utils.default.isValidTransactionId(txIds.hash1), true);
should.equal(Utils.default.isValidTransactionId(txIds.hash2), true);
should.equal(Utils.default.isValidTransactionId(txIds.hash3), true);
});
it('should validate invalid transaction id correctly', () => {
should.equal(Utils.default.isValidTransactionId(''), false);
should.equal(Utils.default.isValidTransactionId(txIds.hash1.slice(3)), false);
should.equal(Utils.default.isValidTransactionId(txIds.hash3 + '00'), false);
should.equal(Utils.default.isValidTransactionId('dalij43ta0ga2dadda02'), false);
});
it('should validate DRepId correctly', () => {
should.equal(Utils.default.isValidDRepId('always-abstain'), true);
should.equal(Utils.default.isValidDRepId('not-a-correct-choice'), false);
should.equal(Utils.default.isValidDRepId('always-no-confidence'), true);
should.equal(Utils.default.isValidDRepId('drep13d6sxkyz6st9h65qqrzd8ukpywhr8swe9f6357qntgjqye0incorrect'), false);
// CIP-105 standard DRepId
should.equal(Utils.default.isValidDRepId('drep13d6sxkyz6st9h65qqrzd8ukpywhr8swe9f6357qntgjqye0gttd'), true);
// CIP-129 standard DRepId
should.equal(Utils.default.isValidDRepId('drep1y29h2q6cst2pvkl2sqqvf5ljcy36uv7pmy482xnczddzgqshus24w'), true);
});
it('should get DRep entity from DRepId correctly', () => {
should.equal(Utils.default.getDRepFromDRepId('always-abstain').to_json(), DRep.new_always_abstain().to_json());
should.equal(
Utils.default.getDRepFromDRepId('always-no-confidence').to_json(),
DRep.new_always_no_confidence().to_json()
);
should.equal(
Utils.default.getDRepFromDRepId('drep13d6sxkyz6st9h65qqrzd8ukpywhr8swe9f6357qntgjqye0gttd').to_json(),
DRep.from_bech32('drep13d6sxkyz6st9h65qqrzd8ukpywhr8swe9f6357qntgjqye0gttd').to_json()
);
// DRep should be the same from both CIP-105 and CIP-129 IDs
should.equal(
Utils.default.getDRepFromDRepId('drep1y29h2q6cst2pvkl2sqqvf5ljcy36uv7pmy482xnczddzgqshus24w').to_json(),
Utils.default.getDRepFromDRepId('drep13d6sxkyz6st9h65qqrzd8ukpywhr8swe9f6357qntgjqye0gttd').to_json()
);
});
it('should get DRepId from DRep entity correctly', () => {
should.equal(Utils.default.getDRepIdFromDRep(DRep.new_always_abstain()), 'always-abstain');
should.equal(Utils.default.getDRepIdFromDRep(DRep.new_always_no_confidence()), 'always-no-confidence');
// Regardless of whether DRep was created from CIP-105 or CIP-129 ID, the DRepId from getDRepIdFromDRep will be the ID format from `to_bech32`
should.equal(
Utils.default.getDRepIdFromDRep(
Utils.default.getDRepFromDRepId('drep13d6sxkyz6st9h65qqrzd8ukpywhr8swe9f6357qntgjqye0gttd')
),
'drep13d6sxkyz6st9h65qqrzd8ukpywhr8swe9f6357qntgjqye0gttd'
);
should.equal(
Utils.default.getDRepIdFromDRep(
Utils.default.getDRepFromDRepId('drep1y29h2q6cst2pvkl2sqqvf5ljcy36uv7pmy482xnczddzgqshus24w')
),
'drep13d6sxkyz6st9h65qqrzd8ukpywhr8swe9f6357qntgjqye0gttd'
);
});
it('should get transaction body correctly', () => {
const {
unsignedTx,
unsignedTxBody,
unsignedVoteDelegationTx,
unsignedVoteDelegationTxBody,
unsignedStakingActiveTx,
unsignedStakingActiveTxBody,
unsignedStakingDeactiveTx,
unsignedStakingDeactiveTxBody,
unsignedStakingWithdrawTx,
unsignedStakingWithdrawTxBody,
unsignedUpdatePledgeTx,
unsignedUpdatePledgeTxBody,
unsignedNewPledgeTx,
unsignedNewPledgeTxBody,
partiallySignedPledgeTx,
} = rawTx;
should.equal(Utils.default.getTransactionBody(unsignedTx), unsignedTxBody);
should.equal(Utils.default.getTransactionBody(unsignedVoteDelegationTx), unsignedVoteDelegationTxBody);
should.equal(Utils.default.getTransactionBody(unsignedStakingActiveTx), unsignedStakingActiveTxBody);
should.equal(Utils.default.getTransactionBody(unsignedStakingDeactiveTx), unsignedStakingDeactiveTxBody);
should.equal(Utils.default.getTransactionBody(unsignedStakingWithdrawTx), unsignedStakingWithdrawTxBody);
should.equal(Utils.default.getTransactionBody(unsignedUpdatePledgeTx), unsignedUpdatePledgeTxBody);
should.equal(Utils.default.getTransactionBody(unsignedNewPledgeTx), unsignedNewPledgeTxBody);
should.equal(Utils.default.getTransactionBody(partiallySignedPledgeTx), unsignedNewPledgeTxBody);
});
});
Выполнить команду
Для локальной разработки. Не используйте в интернете!