PHP WebShell

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

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

import 'should';
import { ApiVersion, IWallet } from '../../../../src';
import { getTxRequestApiVersion } from '../../../../src/bitgo/utils/txRequest';

describe('txRequest utils', () => {
  describe('getTxRequestApiVersion', function () {
    const testCases = [
      {
        wallet: {
          baseCoin: { getMPCAlgorithm: () => 'ecdsa' },
          type: () => 'hot',
          multisigType: () => 'tss',
        } as any as IWallet,
        requestedApiVersion: 'lite',
        expectedApiVersion: '',
        expectedErrorMessage: 'For ECDSA tss wallets, parameter `apiVersion` must be `full`.',
      },
      {
        wallet: {
          baseCoin: { getMPCAlgorithm: () => 'eddsa' },
          type: () => 'cold',
          multisigType: () => 'tss',
        } as any as IWallet,
        requestedApiVersion: 'lite',
        expectedApiVersion: '',
        expectedErrorMessage: 'For non self-custodial (hot) tss wallets, parameter `apiVersion` must be `full`.',
      },
      {
        wallet: {
          baseCoin: { getMPCAlgorithm: () => 'eddsa' },
          type: () => 'hot',
          multisigType: () => 'tss',
        } as any as IWallet,
        requestedApiVersion: undefined,
        expectedApiVersion: 'lite',
        expectedErrorMessage: '',
      },
      ...['hot', 'cold', 'custodial', 'backing'].map((walletType) => {
        return {
          wallet: {
            baseCoin: { getMPCAlgorithm: () => 'ecdsa' },
            type: () => walletType,
            multisigType: () => 'tss',
          } as any as IWallet,
          requestedApiVersion: 'full',
          expectedApiVersion: 'full',
          expectedErrorMessage: '',
          shouldThrow: false,
        };
      }),
      ...['hot', 'cold', 'custodial', 'backing'].map((walletType) => {
        return {
          wallet: {
            baseCoin: { getMPCAlgorithm: () => 'ecdsa' },
            type: () => walletType,
            multisigType: () => 'tss',
          } as any as IWallet,
          requestedApiVersion: undefined,
          expectedApiVersion: 'full',
          expectedErrorMessage: '',
          shouldThrow: false,
        };
      }),
      ...['hot', 'cold', 'custodial', 'backing'].map((walletType) => {
        return {
          wallet: {
            baseCoin: { getMPCAlgorithm: () => 'eddsa' },
            type: () => walletType,
            multisigType: () => 'tss',
          } as any as IWallet,
          requestedApiVersion: 'full',
          expectedApiVersion: 'full',
          expectedErrorMessage: '',
          shouldThrow: false,
        };
      }),
      ...['cold', 'custodial', 'backing'].map((walletType) => {
        return {
          wallet: {
            baseCoin: { getMPCAlgorithm: () => 'eddsa' },
            type: () => walletType,
            multisigType: () => 'tss',
          } as any as IWallet,
          requestedApiVersion: undefined,
          expectedApiVersion: 'full',
          expectedErrorMessage: '',
          shouldThrow: false,
        };
      }),
    ];

    testCases.forEach((testCase) => {
      if (testCase.expectedErrorMessage) {
        it(`should throw an error if requested apiVersion is ${
          testCase.requestedApiVersion
        } for wallet type ${testCase.wallet.type()} for a ${testCase.wallet.baseCoin.getMPCAlgorithm()} wallet`, () => {
          (() =>
            getTxRequestApiVersion(
              testCase.wallet,
              testCase.requestedApiVersion as ApiVersion | undefined
            )).should.throw(testCase.expectedErrorMessage);
        });
      } else {
        it(`should return ${testCase.expectedApiVersion} if requested apiVersion is ${
          testCase.requestedApiVersion
        } for wallet type ${testCase.wallet.type()} for a ${testCase.wallet.baseCoin.getMPCAlgorithm()} wallet`, () => {
          getTxRequestApiVersion(testCase.wallet, testCase.requestedApiVersion as ApiVersion | undefined).should.equal(
            testCase.expectedApiVersion
          );
        });
      }
    });
  });
});

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


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