PHP WebShell
Текущая директория: /opt/BitGoJS/node_modules/@bitgo-forks/avalanchejs/src/signer
Просмотр файла: addTxSignatures.spec.ts
import { jest } from '@jest/globals';
import { UnsignedTx } from '../vms';
import { BaseTx as AvaxBaseTx, TransferableInput } from '../serializable/avax';
import { bigIntPr, bytes, int } from '../fixtures/primitives';
import { id } from '../fixtures/common';
import { BaseTx } from '../serializable/avm';
import { transferableOutput, utxoId } from '../fixtures/avax';
import { Input, TransferInput } from '../serializable/fxs/secp256k1';
import { AddressMaps, AddressMap, hexToBuffer } from '../utils';
import { Address } from '../serializable/fxs/common';
import {
testAddress1,
testAddress2,
testPrivateKey1,
testPrivateKey2,
testPublicKey1,
testPublicKey2,
} from '../fixtures/vms';
import { addTxSignatures } from './addTxSignatures';
import { secp256k1 } from '../crypto';
describe('addTxSignatures', () => {
beforeEach(() => {
jest.clearAllMocks();
});
it('adds the signatures correctly', async () => {
const hasPubkeySpy = jest.spyOn(UnsignedTx.prototype, 'hasPubkey');
const addSignatureSpy = jest.spyOn(UnsignedTx.prototype, 'addSignature');
const unknownPrivateKey = hexToBuffer(
'1d4ff8f6582d995354f5c03a28a043d22aa1bb6aa15879a632134aaf1f225cf4',
);
const unknownPublicKey = secp256k1.getPublicKey(unknownPrivateKey);
const unsignedTx = new UnsignedTx(
new BaseTx(
new AvaxBaseTx(
int(),
id(),
[transferableOutput()],
[
new TransferableInput(
utxoId(),
id(),
new TransferInput(bigIntPr(), Input.fromNative([0])),
),
new TransferableInput(
utxoId(),
id(),
new TransferInput(bigIntPr(), Input.fromNative([0, 1])),
),
],
bytes(),
),
),
[],
new AddressMaps([
new AddressMap([[new Address(testAddress1), 0]]),
new AddressMap([
[new Address(testAddress2), 0],
[new Address(testAddress1), 1],
]),
]),
);
await addTxSignatures({
unsignedTx,
privateKeys: [testPrivateKey1, testPrivateKey2, unknownPrivateKey],
});
expect(hasPubkeySpy).toHaveBeenCalledTimes(3);
expect(hasPubkeySpy).toHaveBeenNthCalledWith(1, testPublicKey1);
expect(hasPubkeySpy).toHaveBeenNthCalledWith(2, testPublicKey2);
expect(hasPubkeySpy).toHaveBeenNthCalledWith(3, unknownPublicKey);
expect(addSignatureSpy).toHaveBeenCalledTimes(2);
expect(addSignatureSpy).toHaveBeenCalledWith(
hexToBuffer(
'0x7b3da43d8e4103d1078061872075cbcbb5de0108f3d897752c894757cf0e9c4113949ca2a5568483763e1fa0e74b4f4dd9b2a6e40909d0729f87c7dddfc1e70601',
),
);
expect(addSignatureSpy).toHaveBeenCalledWith(
hexToBuffer(
'0x04e2072e34fd5d7cc729afb8bfe7c5865754c3c448b9b3247b16cabbf06378393edf405274048bef74c02862ae032c0b86dda7c28bebf63f4d1de4f517bd710500',
),
);
expect(unsignedTx.hasAllSignatures()).toBe(true);
});
});
Выполнить команду
Для локальной разработки. Не используйте в интернете!