PHP WebShell

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

Просмотр файла: algoToken.js

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
require("should");
const sdk_test_1 = require("@bitgo/sdk-test");
const sdk_api_1 = require("@bitgo/sdk-api");
const src_1 = require("../../src");
describe('Algo Unison Token:', function () {
    let bitgo;
    let algoTokenCoin;
    const tokenName = 'talgo:USON-16026728';
    before(function () {
        bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'test' });
        src_1.AlgoToken.createTokenConstructors().forEach(({ name, coinConstructor }) => {
            bitgo.safeRegister(name, coinConstructor);
        });
        bitgo.initializeTestVars();
        algoTokenCoin = bitgo.coin(tokenName);
    });
    it('should return constants', function () {
        algoTokenCoin.getChain().should.equal(tokenName);
        algoTokenCoin.getBaseChain().should.equal('talgo');
        algoTokenCoin.getFullName().should.equal('Algo Token');
        algoTokenCoin.getBaseFactor().should.equal(1e2);
        algoTokenCoin.type.should.equal(tokenName);
        algoTokenCoin.name.should.equal('Unison');
        algoTokenCoin.coin.should.equal('talgo');
        algoTokenCoin.network.should.equal('Testnet');
        algoTokenCoin.decimalPlaces.should.equal(2);
    });
});
describe('Algo USDC Token:', function () {
    let bitgo;
    let algoTokenCoin;
    const USDCtokenName = 'talgo:USDC-10458941';
    before(function () {
        bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'test' });
        src_1.AlgoToken.createTokenConstructors().forEach(({ name, coinConstructor }) => {
            bitgo.safeRegister(name, coinConstructor);
        });
        bitgo.initializeTestVars();
        algoTokenCoin = bitgo.coin(USDCtokenName);
    });
    it('should return constants', function () {
        algoTokenCoin.getChain().should.equal(USDCtokenName);
        algoTokenCoin.getBaseChain().should.equal('talgo');
        algoTokenCoin.getFullName().should.equal('Algo Token');
        algoTokenCoin.getBaseFactor().should.equal(1e6);
        algoTokenCoin.type.should.equal(USDCtokenName);
        algoTokenCoin.name.should.equal('USDC');
        algoTokenCoin.coin.should.equal('talgo');
        algoTokenCoin.network.should.equal('Testnet');
        algoTokenCoin.decimalPlaces.should.equal(6);
    });
});
describe('Algo USDt Token:', function () {
    let bitgo;
    let algoTokenCoin;
    const USDTtokenName = 'talgo:USDt-180447';
    before(function () {
        bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'test' });
        src_1.AlgoToken.createTokenConstructors().forEach(({ name, coinConstructor }) => {
            bitgo.safeRegister(name, coinConstructor);
        });
        bitgo.initializeTestVars();
        algoTokenCoin = bitgo.coin(USDTtokenName);
    });
    it('should return constants', function () {
        algoTokenCoin.getChain().should.equal(USDTtokenName);
        algoTokenCoin.getBaseChain().should.equal('talgo');
        algoTokenCoin.getFullName().should.equal('Algo Token');
        algoTokenCoin.getBaseFactor().should.equal(1e6);
        algoTokenCoin.type.should.equal(USDTtokenName);
        algoTokenCoin.name.should.equal('Testnet Algorand USDT');
        algoTokenCoin.coin.should.equal('talgo');
        algoTokenCoin.network.should.equal('Testnet');
        algoTokenCoin.decimalPlaces.should.equal(6);
    });
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxnb1Rva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L2FsZ29Ub2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGtCQUFnQjtBQUVoQiw4Q0FBMEQ7QUFDMUQsNENBQTBDO0FBQzFDLG1DQUFzQztBQUV0QyxRQUFRLENBQUMsb0JBQW9CLEVBQUU7SUFDN0IsSUFBSSxLQUFtQixDQUFDO0lBQ3hCLElBQUksYUFBYSxDQUFDO0lBQ2xCLE1BQU0sU0FBUyxHQUFHLHFCQUFxQixDQUFDO0lBRXhDLE1BQU0sQ0FBQztRQUNMLEtBQUssR0FBRyxvQkFBUyxDQUFDLFFBQVEsQ0FBQyxrQkFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDdEQsZUFBUyxDQUFDLHVCQUF1QixFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRTtZQUN4RSxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FBQztRQUNILEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzNCLGFBQWEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3hDLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHlCQUF5QixFQUFFO1FBQzVCLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pELGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25ELGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3ZELGFBQWEsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxNQUFNLENBQUMs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QUM1QyxDQUFDLENBQUMsQ0FBQztRQUNILEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzNCLGFBQWEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzVDLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHlCQUF5QixFQUFFO1FBQzVCLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3JELGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25ELGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3ZELGFBQWEsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hELGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMvQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUN6RCxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlDLGFBQWEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdzaG91bGQnO1xuXG5pbXBvcnQgeyBUZXN0Qml0R28sIFRlc3RCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby9zZGstdGVzdCc7XG5pbXBvcnQgeyBCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby9zZGstYXBpJztcbmltcG9ydCB7IEFsZ29Ub2tlbiB9IGZyb20gJy4uLy4uL3NyYyc7XG5cbmRlc2NyaWJlKCdBbGdvIFVuaXNvbiBUb2tlbjonLCBmdW5jdGlvbiAoKSB7XG4gIGxldCBiaXRnbzogVGVzdEJpdEdvQVBJO1xuICBsZXQgYWxnb1Rva2VuQ29pbjtcbiAgY29uc3QgdG9rZW5OYW1lID0gJ3RhbGdvOlVTT04tMTYwMjY3MjgnO1xuXG4gIGJlZm9yZShmdW5jdGlvbiAoKSB7XG4gICAgYml0Z28gPSBUZXN0Qml0R28uZGVjb3JhdGUoQml0R29BUEksIHsgZW52OiAndGVzdCcgfSk7XG4gICAgQWxnb1Rva2VuLmNyZWF0ZVRva2VuQ29uc3RydWN0b3JzKCkuZm9yRWFjaCgoeyBuYW1lLCBjb2luQ29uc3RydWN0b3IgfSkgPT4ge1xuICAgICAgYml0Z28uc2FmZVJlZ2lzdGVyKG5hbWUsIGNvaW5Db25zdHJ1Y3Rvcik7XG4gICAgfSk7XG4gICAgYml0Z28uaW5pdGlhbGl6ZVRlc3RWYXJzKCk7XG4gICAgYWxnb1Rva2VuQ29pbiA9IGJpdGdvLmNvaW4odG9rZW5OYW1lKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gY29uc3RhbnRzJywgZnVuY3Rpb24gKCkge1xuICAgIGFsZ29Ub2tlbkNvaW4uZ2V0Q2hhaW4oKS5zaG91bGQuZXF1YWwodG9rZW5OYW1lKTtcbiAgICBhbGdvVG9rZW5Db2luLmdldEJhc2VDaGFpbigpLnNob3VsZC5lcXVhbCgndGFsZ28nKTtcbiAgICBhbGdvVG9rZW5Db2luLmdldEZ1bGxOYW1lKCkuc2hvdWxkLmVxdWFsKCdBbGdvIFRva2VuJyk7XG4gICAgYWxnb1Rva2VuQ29pbi5nZXRCYXNlRmFjdG9yKCkuc2hvdWxkLmVxdWFsKDFlMik7XG4gICAgYWxnb1Rva2VuQ29pbi50eXBlLnNob3VsZC5lcXVhbCh0b2tlbk5hbWUpO1xuICAgIGFsZ29Ub2tlbkNvaW4ubmFtZS5zaG91bGQuZXF1YWwoJ1VuaXNvbicpO1xuICAgIGFsZ29Ub2tlbkNvaW4uY29pbi5zaG91bGQuZXF1YWwoJ3RhbGdvJyk7XG4gICAgYWxnb1Rva2VuQ29pbi5uZXR3b3JrLnNob3VsZC5lcXVhbCgnVGVzdG5ldCcpO1xuICAgIGFsZ29Ub2tlbkNvaW4uZGVjaW1hbFBsYWNlcy5zaG91bGQuZXF1YWwoMik7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdBbGdvIFVTREMgVG9rZW46JywgZnVuY3Rpb24gKCkge1xuICBsZXQgYml0Z287XG4gIGxldCBhbGdvVG9rZW5Db2luO1xuICBjb25zdCBVU0RDdG9rZW5OYW1lID0gJ3RhbGdvOlVTREMtMTA0NTg5NDEnO1xuXG4gIGJlZm9yZShmdW5jdGlvbiAoKSB7XG4gICAgYml0Z28gPSBUZXN0Qml0R28uZGVjb3JhdGUoQml0R29BUEksIHsgZW52OiAndGVzdCcgfSk7XG4gICAgQWxnb1Rva2VuLmNyZWF0ZVRva2VuQ29uc3RydWN0b3JzKCkuZm9yRWFjaCgoeyBuYW1lLCBjb2luQ29uc3RydWN0b3IgfSkgPT4ge1xuICAgICAgYml0Z28uc2FmZVJlZ2lzdGVyKG5hbWUsIGNvaW5Db25zdHJ1Y3Rvcik7XG4gICAgfSk7XG4gICAgYml0Z28uaW5pdGlhbGl6ZVRlc3RWYXJzKCk7XG4gICAgYWxnb1Rva2VuQ29pbiA9IGJpdGdvLmNvaW4oVVNEQ3Rva2VuTmFtZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIGNvbnN0YW50cycsIGZ1bmN0aW9uICgpIHtcbiAgICBhbGdvVG9rZW5Db2luLmdldENoYWluKCkuc2hvdWxkLmVxdWFsKFVTREN0b2tlbk5hbWUpO1xuICAgIGFsZ29Ub2tlbkNvaW4uZ2V0QmFzZUNoYWluKCkuc2hvdWxkLmVxdWFsKCd0YWxnbycpO1xuICAgIGFsZ29Ub2tlbkNvaW4uZ2V0RnVsbE5hbWUoKS5zaG91bGQuZXF1YWwoJ0FsZ28gVG9rZW4nKTtcbiAgICBhbGdvVG9rZW5Db2luLmdldEJhc2VGYWN0b3IoKS5zaG91bGQuZXF1YWwoMWU2KTtcbiAgICBhbGdvVG9rZW5Db2luLnR5cGUuc2hvdWxkLmVxdWFsKFVTREN0b2tlbk5hbWUpO1xuICAgIGFsZ29Ub2tlbkNvaW4ubmFtZS5zaG91bGQuZXF1YWwoJ1VTREMnKTtcbiAgICBhbGdvVG9rZW5Db2luLmNvaW4uc2hvdWxkLmVxdWFsKCd0YWxnbycpO1xuICAgIGFsZ29Ub2tlbkNvaW4ubmV0d29yay5zaG91bGQuZXF1YWwoJ1Rlc3RuZXQnKTtcbiAgICBhbGdvVG9rZW5Db2luLmRlY2ltYWxQbGFjZXMuc2hvdWxkLmVxdWFsKDYpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnQWxnbyBVU0R0IFRva2VuOicsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IGJpdGdvO1xuICBsZXQgYWxnb1Rva2VuQ29pbjtcbiAgY29uc3QgVVNEVHRva2VuTmFtZSA9ICd0YWxnbzpVU0R0LTE4MDQ0Nyc7XG5cbiAgYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICBiaXRnbyA9IFRlc3RCaXRHby5kZWNvcmF0ZShCaXRHb0FQSSwgeyBlbnY6ICd0ZXN0JyB9KTtcbiAgICBBbGdvVG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3RvcnMoKS5mb3JFYWNoKCh7IG5hbWUsIGNvaW5Db25zdHJ1Y3RvciB9KSA9PiB7XG4gICAgICBiaXRnby5zYWZlUmVnaXN0ZXIobmFtZSwgY29pbkNvbnN0cnVjdG9yKTtcbiAgICB9KTtcbiAgICBiaXRnby5pbml0aWFsaXplVGVzdFZhcnMoKTtcbiAgICBhbGdvVG9rZW5Db2luID0gYml0Z28uY29pbihVU0RUdG9rZW5OYW1lKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gY29uc3RhbnRzJywgZnVuY3Rpb24gKCkge1xuICAgIGFsZ29Ub2tlbkNvaW4uZ2V0Q2hhaW4oKS5zaG91bGQuZXF1YWwoVVNEVHRva2VuTmFtZSk7XG4gICAgYWxnb1Rva2VuQ29pbi5nZXRCYXNlQ2hhaW4oKS5zaG91bGQuZXF1YWwoJ3RhbGdvJyk7XG4gICAgYWxnb1Rva2VuQ29pbi5nZXRGdWxsTmFtZSgpLnNob3VsZC5lcXVhbCgnQWxnbyBUb2tlbicpO1xuICAgIGFsZ29Ub2tlbkNvaW4uZ2V0QmFzZUZhY3RvcigpLnNob3VsZC5lcXVhbCgxZTYpO1xuICAgIGFsZ29Ub2tlbkNvaW4udHlwZS5zaG91bGQuZXF1YWwoVVNEVHRva2VuTmFtZSk7XG4gICAgYWxnb1Rva2VuQ29pbi5uYW1lLnNob3VsZC5lcXVhbCgnVGVzdG5ldCBBbGdvcmFuZCBVU0RUJyk7XG4gICAgYWxnb1Rva2VuQ29pbi5jb2luLnNob3VsZC5lcXVhbCgndGFsZ28nKTtcbiAgICBhbGdvVG9rZW5Db2luLm5ldHdvcmsuc2hvdWxkLmVxdWFsKCdUZXN0bmV0Jyk7XG4gICAgYWxnb1Rva2VuQ29pbi5kZWNpbWFsUGxhY2VzLnNob3VsZC5lcXVhbCg2KTtcbiAgfSk7XG59KTtcbiJdfQ==

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


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