PHP WebShell

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

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

import { TransactionType } from '@bitgo/sdk-core';
import should from 'should';

import * as testData from '../../resources/baby';
import { TestBitGo, TestBitGoAPI } from '@bitgo/sdk-test';
import { BitGoAPI } from '@bitgo/sdk-api';
import { Baby, Tbaby } from '../../../src';

describe('Babylon Transaction Builder', async () => {
  let bitgo: TestBitGoAPI;
  let basecoin;
  let factory;
  let data;

  before(function () {
    bitgo = TestBitGo.decorate(BitGoAPI, { env: 'mock' });
    bitgo.safeRegister('baby', Baby.createInstance);
    bitgo.safeRegister('tbaby', Tbaby.createInstance);
    bitgo.initializeTestVars();
    basecoin = bitgo.coin('tbaby');
    factory = basecoin.getBuilder();
    data = [
      {
        type: TransactionType.Send,
        testTx: testData.TEST_SEND_TX,
        builder: factory.getTransferBuilder(),
      },
      {
        type: TransactionType.StakingActivate,
        testTx: testData.TEST_DELEGATE_TX,
        builder: factory.getStakingActivateBuilder(),
      },
      {
        type: TransactionType.StakingDeactivate,
        testTx: testData.TEST_UNDELEGATE_TX,
        builder: factory.getStakingDeactivateBuilder(),
      },
      {
        type: TransactionType.StakingRedelegate,
        testTx: testData.TEST_REDELEGATE_TX,
        builder: factory.getStakingRedelegateBuilder(),
      },
      {
        type: TransactionType.StakingWithdraw,
        testTx: testData.TEST_WITHDRAW_REWARDS_TX,
        builder: factory.getStakingWithdrawRewardsBuilder(),
      },
      {
        type: TransactionType.CustomTx,
        testTx: testData.TEST_CUSTOM_MsgCreateBTCDelegation_TX,
        builder: factory.getCustomTransactionBuilder(),
      },
      {
        type: TransactionType.CustomTx,
        testTx: testData.TEST_CUSTOM_MsgWithdrawReward_TX,
        builder: factory.getCustomTransactionBuilder(),
      },
    ];
  });

  it('should build a signed tx from signed tx data', async function () {
    for (const { type, testTx } of data) {
      const txBuilder = factory.from(testTx.signedTxBase64);
      const tx = await txBuilder.build();
      should.equal(tx.type, type);
      const rawTx = tx.toBroadcastFormat();
      should.equal(rawTx, testTx.signedTxBase64);
    }
  });

  it('should succeed for valid gasBudget', function () {
    for (const { testTx, builder } of data) {
      should.doesNotThrow(() => builder.gasBudget(testTx.gasBudget));
    }
  });

  it('should throw for invalid gasBudget', function () {
    const invalidGasBudget = 0;
    for (const { builder } of data) {
      should(() => builder.gasBudget({ gasLimit: invalidGasBudget })).throw('Invalid gas limit ' + invalidGasBudget);
    }
  });

  it('validateAddress', function () {
    const invalidAddress = { address: 'randomString' };
    for (const { testTx, builder } of data) {
      should.doesNotThrow(() => builder.validateAddress({ address: testTx.from ?? testTx.delegator ?? testTx.sender }));
      should.doesNotThrow(() =>
        builder.validateAddress({ address: testTx.to ?? testTx.validator ?? testTx.recipient })
      );
      should(() => builder.validateAddress(invalidAddress)).throwError(
        'transactionBuilder: address isValidAddress check failed: ' + invalidAddress.address
      );
    }
  });
});

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


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