PHP WebShell
Текущая директория: /opt/BitGoJS/modules/utxo-lib/test/integration_local_rpc/generate
Просмотр файла: fixtures.ts
import * as assert from 'assert';
import * as fs from 'fs-extra';
import * as path from 'path';
import { networks, Network, getNetworkName, getMainnet } from '../../../src';
import { getKeyTriple } from '../../../src/testutil';
import { RpcClient } from './RpcClient';
import { RpcTransaction } from './RpcTypes';
import { getDefaultTransactionVersion } from '../../../src/bitgo';
export type Protocol = {
network: Network;
version: number;
};
export function getProtocolVersions(network: Network): number[] {
switch (getMainnet(network)) {
case networks.zcash:
// FIXME(BTC-1633): re-enable protocol version 500
// return [400, 450, 500];
return [400, 450];
default:
return [getDefaultTransactionVersion(network)];
}
}
export function getFixtureDir(protocol: Protocol): string {
let networkName = getNetworkName(protocol.network);
assert(networkName);
if (networkName === 'bitcoinBitGoSignet' || networkName === 'bitcoinTestnet4') {
networkName = 'bitcoinPublicSignet';
}
return path.join(__dirname, '..', 'fixtures', networkName, `v${protocol.version}`);
}
export async function wipeFixtures(protocol: Protocol): Promise<void> {
try {
await fs.remove(getFixtureDir(protocol));
} catch (e) {
if (e.code === 'ENOENT') {
return;
}
}
}
export async function writeFixture(protocol: Protocol, filename: string, content: unknown): Promise<void> {
await fs.mkdir(getFixtureDir(protocol), { recursive: true });
await fs.writeFile(path.join(getFixtureDir(protocol), filename), JSON.stringify(content, null, 2));
}
export async function readFixture<T>(protocol: Protocol, filename: string): Promise<T> {
return JSON.parse(await fs.readFile(path.join(getFixtureDir(protocol), filename), 'utf8'));
}
export type TransactionFixtureWithInputs = {
transaction: RpcTransaction;
inputs: RpcTransaction[];
};
export async function writeTransactionFixtureWithInputs(
rpc: RpcClient,
protocol: Protocol,
filename: string,
txid: string
): Promise<void> {
const transaction = await rpc.getRawTransactionVerbose(txid);
const inputTransactionIds = transaction.vin.reduce(
(all: string[], input) => (all.includes(input.txid) ? all : [...all, input.txid]),
[]
);
const inputs = await RpcClient.parallelMap(inputTransactionIds, (inputTxid) =>
rpc.getRawTransactionVerbose(inputTxid)
);
assert.strictEqual(inputs.length, inputTransactionIds.length);
await writeFixture(protocol, filename, {
transaction,
inputs,
});
}
export const fixtureKeys = getKeyTriple('rpctest');
Выполнить команду
Для локальной разработки. Не используйте в интернете!