PHP WebShell

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

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

import 'should';

import { TestBitGoAPI, TestBitGo } from '@bitgo/sdk-test';

import { Tbtc } from '../../src';
import { BitGoAPI } from '@bitgo/sdk-api';
import * as utxolib from '@bitgo/utxo-lib';

describe('BTC:', function () {
  let bitgo: TestBitGoAPI;

  before(function () {
    bitgo = TestBitGo.decorate(BitGoAPI, { env: 'test' });
    bitgo.safeRegister('tbtc', Tbtc.createInstance);
    bitgo.initializeTestVars();
  });

  describe('Address validation:', () => {
    let coin: Tbtc;
    before(() => {
      coin = bitgo.coin('tbtc') as Tbtc;
    });

    it('should validate a base58 address', () => {
      const validBase58Address = '2Mv1fGp8gHSqsiXYG7WqcYmHZdurDGVtUbn';
      coin.isValidAddress(validBase58Address).should.be.true();
      const invalidBase58Address = '2MV1FGP8GHSQSSXYG7WQCYMHZDURDGVTUBN';
      coin.isValidAddress(invalidBase58Address).should.be.false();
    });

    it('should validate a bech32 address', () => {
      const validBech32Address = 'tb1qtxxqmkkdx4n4lcp0nt2cct89uh3h3dlcu940kw9fcqyyq36peh0st94hfp';
      coin.isValidAddress(validBech32Address).should.be.true();
      coin.isValidAddress(validBech32Address.toUpperCase()).should.be.false();
    });

    it('should validate a bech32m address', () => {
      // https://github.com/bitcoin/bips/blob/master/bip-0350.mediawiki#Test_vectors_for_Bech32m
      const validBech32mAddress = 'tb1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3q0sl5k7';
      coin.isValidAddress(validBech32mAddress).should.be.true();
      coin.isValidAddress(validBech32mAddress.toUpperCase()).should.be.false();
    });
  });

  describe('Post Build Validation', () => {
    let coin: Tbtc;
    before(() => {
      coin = bitgo.coin('tbtc') as Tbtc;
    });

    it('should not modify locktime on postProcessPrebuild', async () => {
      const txHex =
        '0100000001a8ec78f09f7acb0d344622ed3082c1a98e51ba1b1ab65406044f6e0a801609020100000000ffffffff02a0860100000000001976a9149f9a7abd600c0caa03983a77c8c3df8e062cb2fa88acfbf2150000000000220020b922cc1e737e679d24ff2d2b18cfa9fff4e35a733b4fba94282eaa1b7cfe56d200000000';
      const blockHeight = 100;
      const preBuild = { txHex, blockHeight };
      const postProcessBuilt = await coin.postProcessPrebuild(preBuild);
      const transaction = utxolib.bitgo.createTransactionFromHex(
        postProcessBuilt.txHex as string,
        utxolib.networks.bitcoin
      );

      transaction.locktime.should.equal(0);
      const inputs = transaction.ins;
      for (const input of inputs) {
        input.sequence.should.equal(0xffffffff);
      }
    });
  });
});

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


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