PHP WebShell

Текущая директория: /opt/BitGoJS/modules/sdk-coin-eth/test/unit

Просмотр файла: transferBuilder.ts

import should from 'should';
import { coins, EthereumNetwork as EthLikeNetwork } from '@bitgo/statics';
import { KeyPair, TransferBuilder } from '../../src';
import * as testData from '../resources/eth';

describe('Eth send multi sig builder', function () {
  const toAddress = '0x7325A3F7d4f9E86AE62Cf742426078C3755730d5';
  const xprv =
    'xprv9s21ZrQH143K3D8TXfvAJgHVfTEeQNW5Ys9wZtnUZkqPzFzSjbEJrWC1vZ4GnXCvR7rQL2UFX3RSuYeU9MrERm1XBvACow7c36vnz5iYyj2';
  const key = new KeyPair({ prv: xprv }).getKeys().prv as string;
  const amount = '100000000000000000'; // equivalent to 0.1 ether
  const coin = coins.get('hteth') as unknown as EthLikeNetwork;
  describe('should build', () => {
    it('native coin transfer should succeed', async () => {
      const builder = new TransferBuilder()
        .expirationTime(1590078260)
        .amount(amount)
        .to(toAddress)
        .contractSequenceId(2)
        .key(key)
        .data('0x');
      const result = builder.signAndBuild(`${coin.chainId}`);
      should.equal(result, testData.SEND_FUNDS_DATA);
    });

    it('native coin transfer with coin explicitly set should succeed', async () => {
      const builder = new TransferBuilder()
        .expirationTime(1590078260)
        .coin('eth')
        .amount(amount)
        .to(toAddress)
        .contractSequenceId(2)
        .key(key)
        .data('0x');
      const result = builder.signAndBuild(`${coin.chainId}`);
      should.equal(result, testData.SEND_FUNDS_DATA);
    });

    it('native coin transfer with sequenceId zero should succeed', async () => {
      const builder = new TransferBuilder()
        .expirationTime(1590078260)
        .amount(amount)
        .to(toAddress)
        .contractSequenceId(0)
        .key(key)
        .data('0x');
      const result = builder.signAndBuild(`${coin.chainId}`);
      should.equal(result, testData.SEND_FUNDS_SEQUENCE_ZERO_DATA);
    });

    it('native coin transfer with amount 0 should succeed', async () => {
      const builder = new TransferBuilder()
        .expirationTime(1590078260)
        .amount('0')
        .to(toAddress)
        .contractSequenceId(2)
        .key(key)
        .data('0x');
      const result = builder.signAndBuild(`${coin.chainId}`);
      should.equal(result, testData.SEND_FUNDS_AMOUNT_ZERO_DATA);
    });

    it('ERC20 token transfer should succeed', async () => {
      const builder = new TransferBuilder()
        .coin('terc')
        .expirationTime(1590078260)
        .amount(amount)
        .to(toAddress)
        .contractSequenceId(2)
        .key(key);
      const result = builder.signAndBuild(`${coin.chainId}`);
      should.equal(result, testData.SEND_TERC_DATA);
    });

    it('should build without a signature set', () => {
      const builder = new TransferBuilder()
        .expirationTime(1590078260)
        .amount(amount)
        .to(toAddress)
        .contractSequenceId(2)
        .data('0x');
      const result = builder.signAndBuild(`${coin.chainId}`);
      should.equal(result, testData.SEND_FUNDS_NO_KEY_DATA);
    });

    it('should build from a non signed serialized data', () => {
      const builder = new TransferBuilder(testData.SEND_FUNDS_NO_KEY_DATA);
      builder.key(key);
      const result = builder.signAndBuild(`${coin.chainId}`);
      should.equal(result, testData.SEND_FUNDS_DATA);
    });
  });
});

Выполнить команду


Для локальной разработки. Не используйте в интернете!