PHP WebShell
Текущая директория: /opt/BitGoJS/modules/sdk-coin-avaxp/test/unit/lib
Просмотр файла: exportC2PTxBuilder.ts
import assert from 'assert';
import 'should';
import * as errorMessage from '../../resources/errors';
import { TransactionBuilderFactory } from '../../../src/lib';
import { coins } from '@bitgo/statics';
import { EXPORT_C } from '../../resources/tx/exportC';
import { BN } from 'avalanche';
describe('AvaxP Export C2P Tx Builder', () => {
const factory = new TransactionBuilderFactory(coins.get('tavaxp'));
const data = EXPORT_C;
describe('validate txBuilder fields', () => {
const txBuilder = factory.getExportInCBuilder();
it('should fail amount low or equal than zero', () => {
for (const amount of [new BN(0), new BN(-1), '0', '-1']) {
assert.throws(
() => {
txBuilder.amount(amount);
},
(e: any) => e.message === errorMessage.ERROR_AMOUNT
);
}
});
it('should fail nonce low than zero', () => {
for (const nonce of [-1, '-1']) {
assert.throws(
() => {
txBuilder.nonce(nonce);
},
(e: any) => e.message === errorMessage.ERROR_NONCE
);
}
});
});
describe('should build ', () => {
const newTxBuilder = () =>
factory
.getExportInCBuilder()
.fromPubKey(data.cHexAddress)
.nonce(data.nonce)
.amount(data.amount)
.threshold(data.threshold)
.locktime(0)
.to(data.pAddresses)
.feeRate(data.fee);
it('Should create export tx for same values', async () => {
const txBuilder = newTxBuilder();
const tx = await txBuilder.build();
const rawTx = tx.toBroadcastFormat();
rawTx.should.equal(data.unsignedTxHex);
});
it('Should recover export tx from raw tx', async () => {
const txBuilder = new TransactionBuilderFactory(coins.get('tavaxp')).from(data.unsignedTxHex);
const tx = await txBuilder.build();
const rawTx = tx.toBroadcastFormat();
rawTx.should.equal(data.unsignedTxHex);
});
it('Should recover signed export from signed raw tx', async () => {
const txBuilder = new TransactionBuilderFactory(coins.get('tavaxp')).from(data.fullsigntxHex);
const tx = await txBuilder.build();
const rawTx = tx.toBroadcastFormat();
rawTx.should.equal(data.fullsigntxHex);
});
it('Should full sign a export tx for same values', async () => {
const txBuilder = newTxBuilder();
txBuilder.sign({ key: data.privKey });
const tx = await txBuilder.build();
const rawTx = tx.toBroadcastFormat();
rawTx.should.equal(data.fullsigntxHex);
});
it('Should full sign a export tx from unsigned raw tx', async () => {
const txBuilder = new TransactionBuilderFactory(coins.get('tavaxp')).from(data.unsignedTxHex);
txBuilder.sign({ key: data.privKey });
const tx = await txBuilder.build();
const rawTx = tx.toBroadcastFormat();
rawTx.should.equal(data.fullsigntxHex);
});
});
// TODO(BG-56700): Improve canSign by check in addresses in empty credentials match signer
xdescribe('Key cannot sign the transaction ', () => {
it('Should full sign a export tx from unsigned raw tx', () => {
const txBuilder = new TransactionBuilderFactory(coins.get('tavaxp'))
.from(data.unsignedTxHex)
.fromPubKey(data.pAddresses);
txBuilder.sign({ key: data.privKey });
txBuilder
.build()
.then(() => assert.fail('it can sign'))
.catch((err) => {
err.message.should.be.equal(errorMessage.ERROR_KEY_CANNOT_SIGN);
});
});
});
});
Выполнить команду
Для локальной разработки. Не используйте в интернете!