bitgo
Version:
BitGo JavaScript SDK
87 lines • 13.4 kB
JavaScript
describe('BitGoJS in the browser', () => {
it('Should work', () => {
const BitGoJS = window['BitGoJS'];
expect(BitGoJS).toBeTruthy();
});
});
describe('Coins', () => {
it('Should work for all coins', () => {
const BitGoJS = window['BitGoJS'];
const bitgo = new BitGoJS.BitGo({ env: 'test' });
// these objects are defined in BitGoJS.Coin, but are not coins in the traditional sense
// or if statics coins name ("thorchain:rune") doesn't match with class name (Rune)
const excludedKeys = {
AbstractUtxoCoin: 1,
AbstractLightningCoin: 1,
AdaToken: 1,
Erc20Token: 1,
Erc721Token: 1,
EthLikeCoin: 1,
TethLikeCoin: 1,
OfcToken: 1,
StellarToken: 1,
CeloToken: 1,
EosToken: 1,
AlgoToken: 1,
AvaxCToken: 1,
PolygonToken: 1,
BscToken: 1,
ArbethToken: 1,
OpethToken: 1,
ZkethToken: 1,
SuiToken: 1,
TaoToken: 1,
PolyxToken: 1,
BeraToken: 1,
XrpToken: 1,
Rune: 1,
Trune: 1,
Tao: 1,
Ttao: 1,
AptToken: 1,
Icp: 1,
Ticp: 1,
Iota: 1,
Tiota: 1,
Sip10Token: 1,
SoneiumToken: 1,
Polyx: 1,
Tpolyx: 1,
CoredaoToken: 1,
EvmCoin: 1,
Nep141Token: 1,
WorldToken: 1,
CosmosSharedCoin: 1,
VetToken: 1,
EthLikeErc20Token: 1,
EthLikeErc721Token: 1,
HashToken: 1,
FlrToken: 1,
MonToken: 1,
XdcToken: 1,
JettonToken: 1,
Tip20Token: 1,
};
Object.keys(BitGoJS.Coin)
.filter((coinName) => !excludedKeys[coinName])
.forEach((coinName) => {
const coinIdentifier = coinName.toLowerCase();
const coin = bitgo.coin(coinIdentifier);
expect(coin).toBeTruthy();
expect(coin.type).toEqual(coinIdentifier);
});
});
it('UTXO bufferutils should work', () => {
const BitGoJS = window['BitGoJS'];
const bitgo = new BitGoJS.BitGo({ env: 'test' });
const txHex = '0100000002008287fa5a4e9d393134b525ae038cbcb4c757eadaa378c33caeed294c63137f000000006b48304502204dc8131adb9420729ff1580bbbcf01f5ef879defee5225a8261b5681075b8a120221009dc3386f5301ab4a88dfd89d8927a7807242a30ee252fa864d61d0b079aaa2c20121038c4b3c81572d84ce32a2a41c5bb54d4c408b5ce3df9be451f4f57ba8bd8ebf59ffffffff17ed0cc32384bf9c410d023d4ab25f4499992824308e89c448fd570e1060fc0e000000006b48304502202c0ff069c0783c11259936307ef906b211542a01ca33cf6993ddb7b8d55b42ac02210095c4bceb1886f5bcc6ca2dbb909259c0509e768693a93fe2d01d511a57356f25012102e99ed9483d91f1fa67abd838f21afd80bf6a3732128ab5aad0ee5b975679c13dffffffff02bca2b100000000001976a914cc3aa0deca267914cbcf96f79ccd1b679d85e20188ac08c2eb0b000000001976a914380c5a7247e945a5aa242056f9b046a9366fe21788ac00000000';
const btc = bitgo.coin('btc');
const tx = btc.createTransactionFromHex(txHex);
expect(tx.getId()).toEqual('4f666850ac8a54c834a90e62fc9dc50b3c99275dd1f91960e1ea89813970e444');
const txHexBig = '0100000002008287fa5a4e9d393134b525ae038cbcb4c757eadaa378c33caeed294c63137f000000006b48304502204dc8131adb9420729ff1580bbbcf01f5ef879defee5225a8261b5681075b8a120221009dc3386f5301ab4a88dfd89d8927a7807242a30ee252fa864d61d0b079aaa2c20121038c4b3c81572d84ce32a2a41c5bb54d4c408b5ce3df9be451f4f57ba8bd8ebf59ffffffff17ed0cc32384bf9c410d023d4ab25f4499992824308e89c448fd570e1060fc0e000000006b48304502202c0ff069c0783c11259936307ef906b211542a01ca33cf6993ddb7b8d55b42ac02210095c4bceb1886f5bcc6ca2dbb909259c0509e768693a93fe2d01d511a57356f25012102e99ed9483d91f1fa67abd838f21afd80bf6a3732128ab5aad0ee5b975679c13dffffffff02f8ffc42ebca2b1001976a914cc3aa0deca267914cbcf96f79ccd1b679d85e20188ac08c2eb0b000000001976a914380c5a7247e945a5aa242056f9b046a9366fe21788ac00000000';
const doge = bitgo.coin('doge');
const txBig = doge.createTransactionFromHex(txHexBig);
expect(txBig.outs[0].value.toString()).toEqual('49999999999999992');
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC9icm93c2VyL2Jyb3dzZXIuc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxRQUFRLENBQUMsd0JBQXdCLEVBQUUsR0FBRyxFQUFFO0lBQ3RDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFO1FBQ3JCLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDL0IsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQztBQUVILFFBQVEsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO0lBQ3JCLEVBQUUsQ0FBQywyQkFBMkIsRUFBRSxHQUFHLEVBQUU7UUFDbkMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sS0FBSyxHQUFHLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELHdGQUF3RjtRQUN4RixtRkFBbUY7UUFDbkYsTUFBTSxZQUFZLEdBQUc7WUFDbkIsZ0JBQWdCLEVBQUUsQ0FBQztZQUNuQixxQkFBcUIsRUFBRSxDQUFDO1lBQ3hCLFFBQVEsRUFBRSxDQUFDO1lBQ1gsVUFBVSxFQUFFLENBQUM7WUFDYixXQUFXLEVBQUUsQ0FBQztZQUNkLFdBQVcsRUFBRSxDQUFDO1lBQ2QsWUFBWSxFQUFFLENBQUM7WUFDZixRQUFRLEVBQUUsQ0FBQztZQUNYLFlBQVksRUFBRSxDQUFDO1lBQ2YsU0FBUyxFQUFFLENBQUM7WUFDWixRQUFRLEVBQUUsQ0FBQztZQUNYLFNBQVMsRUFBRSxDQUFDO1lBQ1osVUFBVSxFQUFFLENBQUM7WUFDYixZQUFZLEVBQUUsQ0FBQztZQUNmLFFBQVEsRUFBRSxDQUFDO1lBQ1gsV0FBVyxF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Iiwic291cmNlc0NvbnRlbnQiOlsiZGVzY3JpYmUoJ0JpdEdvSlMgaW4gdGhlIGJyb3dzZXInLCAoKSA9PiB7XG4gIGl0KCdTaG91bGQgd29yaycsICgpID0+IHtcbiAgICBjb25zdCBCaXRHb0pTID0gd2luZG93WydCaXRHb0pTJ107XG4gICAgZXhwZWN0KEJpdEdvSlMpLnRvQmVUcnV0aHkoKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ0NvaW5zJywgKCkgPT4ge1xuICBpdCgnU2hvdWxkIHdvcmsgZm9yIGFsbCBjb2lucycsICgpID0+IHtcbiAgICBjb25zdCBCaXRHb0pTID0gd2luZG93WydCaXRHb0pTJ107XG4gICAgY29uc3QgYml0Z28gPSBuZXcgQml0R29KUy5CaXRHbyh7IGVudjogJ3Rlc3QnIH0pO1xuICAgIC8vIHRoZXNlIG9iamVjdHMgYXJlIGRlZmluZWQgaW4gQml0R29KUy5Db2luLCBidXQgYXJlIG5vdCBjb2lucyBpbiB0aGUgdHJhZGl0aW9uYWwgc2Vuc2VcbiAgICAvLyBvciBpZiBzdGF0aWNzIGNvaW5zIG5hbWUgKFwidGhvcmNoYWluOnJ1bmVcIikgZG9lc24ndCBtYXRjaCB3aXRoIGNsYXNzIG5hbWUgKFJ1bmUpXG4gICAgY29uc3QgZXhjbHVkZWRLZXlzID0ge1xuICAgICAgQWJzdHJhY3RVdHhvQ29pbjogMSxcbiAgICAgIEFic3RyYWN0TGlnaHRuaW5nQ29pbjogMSxcbiAgICAgIEFkYVRva2VuOiAxLFxuICAgICAgRXJjMjBUb2tlbjogMSxcbiAgICAgIEVyYzcyMVRva2VuOiAxLFxuICAgICAgRXRoTGlrZUNvaW46IDEsXG4gICAgICBUZXRoTGlrZUNvaW46IDEsXG4gICAgICBPZmNUb2tlbjogMSxcbiAgICAgIFN0ZWxsYXJUb2tlbjogMSxcbiAgICAgIENlbG9Ub2tlbjogMSxcbiAgICAgIEVvc1Rva2VuOiAxLFxuICAgICAgQWxnb1Rva2VuOiAxLFxuICAgICAgQXZheENUb2tlbjogMSxcbiAgICAgIFBvbHlnb25Ub2tlbjogMSxcbiAgICAgIEJzY1Rva2VuOiAxLFxuICAgICAgQXJiZXRoVG9rZW46IDEsXG4gICAgICBPcGV0aFRva2VuOiAxLFxuICAgICAgWmtldGhUb2tlbjogMSxcbiAgICAgIFN1aVRva2VuOiAxLFxuICAgICAgVGFvVG9rZW46IDEsXG4gICAgICBQb2x5eFRva2VuOiAxLFxuICAgICAgQmVyYVRva2VuOiAxLFxuICAgICAgWHJwVG9rZW46IDEsXG4gICAgICBSdW5lOiAxLFxuICAgICAgVHJ1bmU6IDEsXG4gICAgICBUYW86IDEsXG4gICAgICBUdGFvOiAxLFxuICAgICAgQXB0VG9rZW46IDEsXG4gICAgICBJY3A6IDEsXG4gICAgICBUaWNwOiAxLFxuICAgICAgSW90YTogMSxcbiAgICAgIFRpb3RhOiAxLFxuICAgICAgU2lwMTBUb2tlbjogMSxcbiAgICAgIFNvbmVpdW1Ub2tlbjogMSxcbiAgICAgIFBvbHl4OiAxLFxuICAgICAgVHBvbHl4OiAxLFxuICAgICAgQ29yZWRhb1Rva2VuOiAxLFxuICAgICAgRXZtQ29pbjogMSxcbiAgICAgIE5lcDE0MVRva2VuOiAxLFxuICAgICAgV29ybGRUb2tlbjogMSxcbiAgICAgIENvc21vc1NoYXJlZENvaW46IDEsXG4gICAgICBWZXRUb2tlbjogMSxcbiAgICAgIEV0aExpa2VFcmMyMFRva2VuOiAxLFxuICAgICAgRXRoTGlrZUVyYzcyMVRva2VuOiAxLFxuICAgICAgSGFzaFRva2VuOiAxLFxuICAgICAgRmxyVG9rZW46IDEsXG4gICAgICBNb25Ub2tlbjogMSxcbiAgICAgIFhkY1Rva2VuOiAxLFxuICAgICAgSmV0dG9uVG9rZW46IDEsXG4gICAgICBUaXAyMFRva2VuOiAxLFxuICAgIH07XG4gICAgT2JqZWN0LmtleXMoQml0R29KUy5Db2luKVxuICAgICAgLmZpbHRlcigoY29pbk5hbWUpID0+ICFleGNsdWRlZEtleXNbY29pbk5hbWVdKVxuICAgICAgLmZvckVhY2goKGNvaW5OYW1lKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvaW5JZGVudGlmaWVyID0gY29pbk5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgY29uc3QgY29pbiA9IGJpdGdvLmNvaW4oY29pbklkZW50aWZpZXIpO1xuICAgICAgICBleHBlY3QoY29pbikudG9CZVRydXRoeSgpO1xuICAgICAgICBleHBlY3QoY29pbi50eXBlKS50b0VxdWFsKGNvaW5JZGVudGlmaWVyKTtcbiAgICAgIH0pO1xuICB9KTtcblxuICBpdCgnVVRYTyBidWZmZXJ1dGlscyBzaG91bGQgd29yaycsICgpID0+IHtcbiAgICBjb25zdCBCaXRHb0pTID0gd2luZG93WydCaXRHb0pTJ107XG4gICAgY29uc3QgYml0Z28gPSBuZXcgQml0R29KUy5CaXRHbyh7IGVudjogJ3Rlc3QnIH0pO1xuXG4gICAgY29uc3QgdHhIZXggPVxuICAgICAgJzAxMDAwMDAwMDIwMDgyODdmYTVhNGU5ZDM5MzEzNGI1MjVhZTAzOGNiY2I0Yzc1N2VhZGFhMzc4YzMzY2FlZWQyOTRjNjMxMzdmMDAwMDAwMDA2YjQ4MzA0NTAyMjA0ZGM4MTMxYWRiOTQyMDcyOWZmMTU4MGJiYmNmMDFmNWVmODc5ZGVmZWU1MjI1YTgyNjFiNTY4MTA3NWI4YTEyMDIyMTAwOWRjMzM4NmY1MzAxYWI0YTg4ZGZkODlkODkyN2E3ODA3MjQyYTMwZWUyNTJmYTg2NGQ2MWQwYjA3OWFhYTJjMjAxMjEwMzhjNGIzYzgxNTcyZDg0Y2UzMmEyYTQxYzViYjU0ZDRjNDA4YjVjZTNkZjliZTQ1MWY0ZjU3YmE4YmQ4ZWJmNTlmZmZmZmZmZjE3ZWQwY2MzMjM4NGJmOWM0MTBkMDIzZDRhYjI1ZjQ0OTk5OTI4MjQzMDhlODljNDQ4ZmQ1NzBlMTA2MGZjMGUwMDAwMDAwMDZiNDgzMDQ1MDIyMDJjMGZmMDY5YzA3ODNjMTEyNTk5MzYzMDdlZjkwNmIyMTE1NDJhMDFjYTMzY2Y2OTkzZGRiN2I4ZDU1YjQyYWMwMjIxMDA5NWM0YmNlYjE4ODZmNWJjYzZjYTJkYmI5MDkyNTljMDUwOWU3Njg2OTNhOTNmZTJkMDFkNTExYTU3MzU2ZjI1MDEyMTAyZTk5ZWQ5NDgzZDkxZjFmYTY3YWJkODM4ZjIxYWZkODBiZjZhMzczMjEyOGFiNWFhZDBlZTViOTc1Njc5YzEzZGZmZmZmZmZmMDJiY2EyYjEwMDAwMDAwMDAwMTk3NmE5MTRjYzNhYTBkZWNhMjY3OTE0Y2JjZjk2Zjc5Y2NkMWI2NzlkODVlMjAxODhhYzA4YzJlYjBiMDAwMDAwMDAxOTc2YTkxNDM4MGM1YTcyNDdlOTQ1YTVhYTI0MjA1NmY5YjA0NmE5MzY2ZmUyMTc4OGFjMDAwMDAwMDAnO1xuICAgIGNvbnN0IGJ0YyA9IGJpdGdvLmNvaW4oJ2J0YycpO1xuICAgIGNvbnN0IHR4ID0gYnRjLmNyZWF0ZVRyYW5zYWN0aW9uRnJvbUhleCh0eEhleCk7XG4gICAgZXhwZWN0KHR4LmdldElkKCkpLnRvRXF1YWwoJzRmNjY2ODUwYWM4YTU0YzgzNGE5MGU2MmZjOWRjNTBiM2M5OTI3NWRkMWY5MTk2MGUxZWE4OTgxMzk3MGU0NDQnKTtcblxuICAgIGNvbnN0IHR4SGV4QmlnID1cbiAgICAgICcwMTAwMDAwMDAyMDA4Mjg3ZmE1YTRlOWQzOTMxMzRiNTI1YWUwMzhjYmNiNGM3NTdlYWRhYTM3OGMzM2NhZWVkMjk0YzYzMTM3ZjAwMDAwMDAwNmI0ODMwNDUwMjIwNGRjODEzMWFkYjk0MjA3MjlmZjE1ODBiYmJjZjAxZjVlZjg3OWRlZmVlNTIyNWE4MjYxYjU2ODEwNzViOGExMjAyMjEwMDlkYzMzODZmNTMwMWFiNGE4OGRmZDg5ZDg5MjdhNzgwNzI0MmEzMGVlMjUyZmE4NjRkNjFkMGIwNzlhYWEyYzIwMTIxMDM4YzRiM2M4MTU3MmQ4NGNlMzJhMmE0MWM1YmI1NGQ0YzQwOGI1Y2UzZGY5YmU0NTFmNGY1N2JhOGJkOGViZjU5ZmZmZmZmZmYxN2VkMGNjMzIzODRiZjljNDEwZDAyM2Q0YWIyNWY0NDk5OTkyODI0MzA4ZTg5YzQ0OGZkNTcwZTEwNjBmYzBlMDAwMDAwMDA2YjQ4MzA0NTAyMjAyYzBmZjA2OWMwNzgzYzExMjU5OTM2MzA3ZWY5MDZiMjExNTQyYTAxY2EzM2NmNjk5M2RkYjdiOGQ1NWI0MmFjMDIyMTAwOTVjNGJjZWIxODg2ZjViY2M2Y2EyZGJiOTA5MjU5YzA1MDllNzY4NjkzYTkzZmUyZDAxZDUxMWE1NzM1NmYyNTAxMjEwMmU5OWVkOTQ4M2Q5MWYxZmE2N2FiZDgzOGYyMWFmZDgwYmY2YTM3MzIxMjhhYjVhYWQwZWU1Yjk3NTY3OWMxM2RmZmZmZmZmZjAyZjhmZmM0MmViY2EyYjEwMDE5NzZhOTE0Y2MzYWEwZGVjYTI2NzkxNGNiY2Y5NmY3OWNjZDFiNjc5ZDg1ZTIwMTg4YWMwOGMyZWIwYjAwMDAwMDAwMTk3NmE5MTQzODBjNWE3MjQ3ZTk0NWE1YWEyNDIwNTZmOWIwNDZhOTM2NmZlMjE3ODhhYzAwMDAwMDAwJztcbiAgICBjb25zdCBkb2dlID0gYml0Z28uY29pbignZG9nZScpO1xuICAgIGNvbnN0IHR4QmlnID0gZG9nZS5jcmVhdGVUcmFuc2FjdGlvbkZyb21IZXgodHhIZXhCaWcpO1xuICAgIGV4cGVjdCh0eEJpZy5vdXRzWzBdLnZhbHVlLnRvU3RyaW5nKCkpLnRvRXF1YWwoJzQ5OTk5OTk5OTk5OTk5OTkyJyk7XG4gIH0pO1xufSk7XG4iXX0=