PHP WebShell
Текущая директория: /opt/BitGoJS/modules/sdk-coin-bch/test/unit
Просмотр файла: bch.ts
/**
* @prettier
*/
import { BitGoAPI } from '@bitgo/sdk-api';
import { TestBitGo, TestBitGoAPI } from '@bitgo/sdk-test';
import { Bch } from '../../src/bch';
import { Tbch } from '../../src/tbch';
describe('Custom BCH Tests', function () {
const bitgo: TestBitGoAPI = TestBitGo.decorate(BitGoAPI, { env: 'test' });
bitgo.initializeTestVars();
bitgo.safeRegister('bch', Bch.createInstance);
bitgo.safeRegister('tbch', Tbch.createInstance);
const bch = bitgo.coin('bch') as Bch;
const tbch = bitgo.coin('tbch') as Tbch;
// we use mainnet bch so we can reuse the mainnet address examples
it('should correctly convert addresses', function () {
// P2PKH cashaddr -> cashaddr
bch
.canonicalAddress('bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a', 'cashaddr')
.should.equal('bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a');
bch
.canonicalAddress('qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a', 'cashaddr')
.should.equal('bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a');
// P2PKH base58 -> cashaddr
bch
.canonicalAddress('1BpEi6DfDAUFd7GtittLSdBeYJvcoaVggu', 'cashaddr')
.should.equal('bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a');
// P2SH cashaddr -> cashaddr
bch
.canonicalAddress('bitcoincash:ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq', 'cashaddr')
.should.equal('bitcoincash:ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq');
bch
.canonicalAddress('ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq', 'cashaddr')
.should.equal('bitcoincash:ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq');
// P2SH base58 -> cashaddr
bch
.canonicalAddress('3CWFddi6m4ndiGyKqzYvsFYagqDLPVMTzC', 'cashaddr')
.should.equal('bitcoincash:ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq');
// no 'bitcoincash:' prefix
bch
.canonicalAddress('ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq', 'cashaddr')
.should.equal('bitcoincash:ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq');
// P2PKH cashaddr -> base58
bch
.canonicalAddress('bitcoincash:qqq3728yw0y47sqn6l2na30mcw6zm78dzqre909m2r', 'base58')
.should.equal('16w1D5WRVKJuZUsSRzdLp9w3YGcgoxDXb');
bch
.canonicalAddress('qqq3728yw0y47sqn6l2na30mcw6zm78dzqre909m2r', 'base58')
.should.equal('16w1D5WRVKJuZUsSRzdLp9w3YGcgoxDXb');
// P2PKH base58 -> base58
bch
.canonicalAddress('16w1D5WRVKJuZUsSRzdLp9w3YGcgoxDXb', 'base58')
.should.equal('16w1D5WRVKJuZUsSRzdLp9w3YGcgoxDXb');
// P2SH cashaddr -> base58
bch
.canonicalAddress('bitcoincash:pr95sy3j9xwd2ap32xkykttr4cvcu7as4yc93ky28e', 'base58')
.should.equal('3LDsS579y7sruadqu11beEJoTjdFiFCdX4');
bch
.canonicalAddress('pr95sy3j9xwd2ap32xkykttr4cvcu7as4yc93ky28e', 'base58')
.should.equal('3LDsS579y7sruadqu11beEJoTjdFiFCdX4');
// P2SH base58 -> base58
bch
.canonicalAddress('3LDsS579y7sruadqu11beEJoTjdFiFCdX4', 'base58')
.should.equal('3LDsS579y7sruadqu11beEJoTjdFiFCdX4');
// undefined version defaults to base58
bch
.canonicalAddress('bitcoincash:ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq')
.should.equal('3CWFddi6m4ndiGyKqzYvsFYagqDLPVMTzC');
bch
.canonicalAddress('ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq')
.should.equal('3CWFddi6m4ndiGyKqzYvsFYagqDLPVMTzC');
// all capitalized
bch
.canonicalAddress('BITCOINCASH:QQQ3728YW0Y47SQN6L2NA30MCW6ZM78DZQRE909M2R', 'base58')
.should.equal('16w1D5WRVKJuZUsSRzdLp9w3YGcgoxDXb');
bch
.canonicalAddress('QQQ3728YW0Y47SQN6L2NA30MCW6ZM78DZQRE909M2R', 'base58')
.should.equal('16w1D5WRVKJuZUsSRzdLp9w3YGcgoxDXb');
// testnet addresses
tbch
.canonicalAddress('2NCEDmmKNNnqKvnWw7pE3RLzuFe5aHHVy1X', 'cashaddr')
.should.equal('bchtest:prgrnjengs555k3cff2s3gqxg3xyyr9uzyh9js5m8f');
tbch
.canonicalAddress('n3jYBjCzgGNydQwf83Hz6GBzGBhMkKfgL1', 'cashaddr')
.should.equal('bchtest:qremgr9dr9x5swv82k69qdjzrvdxgkaaesftdp5xla');
tbch
.canonicalAddress('bchtest:prgrnjengs555k3cff2s3gqxg3xyyr9uzyh9js5m8f', 'cashaddr')
.should.equal('bchtest:prgrnjengs555k3cff2s3gqxg3xyyr9uzyh9js5m8f');
tbch
.canonicalAddress('bchtest:prgrnjengs555k3cff2s3gqxg3xyyr9uzyh9js5m8f', 'cashaddr')
.should.equal('bchtest:prgrnjengs555k3cff2s3gqxg3xyyr9uzyh9js5m8f');
tbch
.canonicalAddress('prgrnjengs555k3cff2s3gqxg3xyyr9uzyh9js5m8f', 'base58')
.should.equal('2NCEDmmKNNnqKvnWw7pE3RLzuFe5aHHVy1X');
tbch
.canonicalAddress('prgrnjengs555k3cff2s3gqxg3xyyr9uzyh9js5m8f', 'base58')
.should.equal('2NCEDmmKNNnqKvnWw7pE3RLzuFe5aHHVy1X');
tbch
.canonicalAddress('prgrnjengs555k3cff2s3gqxg3xyyr9uzyh9js5m8f', 'cashaddr')
.should.equal('bchtest:prgrnjengs555k3cff2s3gqxg3xyyr9uzyh9js5m8f');
});
it('should reject invalid addresses', function () {
// improperly short data segment
(() => {
bch.canonicalAddress('bitcoincash:sy3j9xwd2ap32xkykttr4cvcu7as4yc93ky28e', 'base58');
}).should.throw();
// mismatched data segment (cashaddr)
(() => {
bch.canonicalAddress('bitcoincash:yr95sy3j9xwd2ap32xkykttr4cvcu7as4yc93ky28e', 'base58');
}).should.throw();
// double prefix
(() => {
bch.canonicalAddress('bitcoincash:bitcoincash:pr95sy3j9xwd2ap32xkykttr4cvcu7as4yc93ky28e', 'base58');
}).should.throw();
// mismatched data segment (base58)
(() => {
bch.canonicalAddress('3DDsS579y7sruadqu11beEJoTjdFiFCdX4', 'base58');
}).should.throw();
// improper prefix
(() => {
bch.canonicalAddress(':qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a', 'base58');
}).should.throw();
(() => {
bch.canonicalAddress('bitcoin:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a', 'base58');
}).should.throw();
// mismatched capitalization
(() => {
bch.canonicalAddress('bitcoincash:QPM2Qsznhks23z7629mms6s4cwef74vcwvy22gdx6a', 'cashaddr');
}).should.throw();
// improper version
(() => {
bch.canonicalAddress('bitcoincash:qqq3728yw0y47sqn6l2na30mcw6zm78dzqre909m2r', 'blah');
}).should.throw();
// undefined address
(() => {
bch.canonicalAddress(undefined as any, 'blah');
}).should.throw();
});
});
Выполнить команду
Для локальной разработки. Не используйте в интернете!