UNPKG

@unilogin/sdk

Version:

SDK is a JS library, that communicates with relayer. SDK allows managing contract, by creating basic contract-calling messages.

153 lines 6.98 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var chai_1 = require("chai"); var sinon_1 = __importDefault(require("sinon")); var WalletSerializer_1 = require("../../../src/core/services/WalletSerializer"); var commons_1 = require("@unilogin/commons"); var src_1 = require("../../../src"); var ethers_1 = require("ethers"); var ConnectingWallet_1 = require("../../../src/api/wallet/ConnectingWallet"); describe('UNIT: WalletSerializer', function () { var mockSDK = { provider: ethers_1.Wallet.createRandom(), relayerApi: { getDeploymentHash: sinon_1.default.stub().resolves({ transactionHash: commons_1.TEST_TRANSACTION_HASH, state: 'Success' }), }, config: { mineableFactoryTick: 10, mineableFactoryTimeout: 100, }, }; var TEST_FUTURE_WALLET = { contractAddress: commons_1.TEST_CONTRACT_ADDRESS, privateKey: commons_1.TEST_PRIVATE_KEY, ensName: 'name.mylogin.eth', gasPrice: commons_1.TEST_GAS_PRICE, gasToken: commons_1.ETHER_NATIVE_TOKEN.address, deploy: (function () { }), waitForBalance: (function () { }), }; var TEST_APPLICATION_WALLET = { name: 'name.mylogin.eth', contractAddress: commons_1.TEST_CONTRACT_ADDRESS, privateKey: commons_1.TEST_PRIVATE_KEY, }; var TEST_SERIALIZED_WALLET = { name: 'name.mylogin.eth', contractAddress: commons_1.TEST_CONTRACT_ADDRESS, privateKey: commons_1.TEST_PRIVATE_KEY, deploymentHash: commons_1.TEST_MESSAGE_HASH, }; var TEST_DEPLOYING_WALLET = new src_1.DeployingWallet(TEST_SERIALIZED_WALLET, mockSDK); var TEST_DEPLOYED_WALLET = new src_1.DeployedWallet(commons_1.TEST_CONTRACT_ADDRESS, 'name.mylogin.eth', commons_1.TEST_PRIVATE_KEY, mockSDK); var TEST_CONNECTING_WALLET = new ConnectingWallet_1.ConnectingWallet(commons_1.TEST_CONTRACT_ADDRESS, 'name.mylogin.eth', commons_1.TEST_PRIVATE_KEY, {}); describe('serialize', function () { var walletSerializer = new WalletSerializer_1.WalletSerializer({}); it('for None returns None', function () { chai_1.expect(walletSerializer.serialize({ kind: 'None' })).to.deep.eq({ kind: 'None' }); }); it('for Future returns Future', function () { chai_1.expect(walletSerializer.serialize({ kind: 'Future', name: 'name.mylogin.eth', wallet: TEST_FUTURE_WALLET, })).to.deep.eq({ kind: 'Future', name: 'name.mylogin.eth', wallet: { contractAddress: commons_1.TEST_CONTRACT_ADDRESS, privateKey: commons_1.TEST_PRIVATE_KEY, ensName: 'name.mylogin.eth', gasPrice: commons_1.TEST_GAS_PRICE, gasToken: commons_1.ETHER_NATIVE_TOKEN.address, }, }); }); it('for Deployed returns Deployed', function () { chai_1.expect(walletSerializer.serialize({ kind: 'Deployed', wallet: TEST_DEPLOYED_WALLET, })).to.deep.eq({ kind: 'Deployed', wallet: TEST_APPLICATION_WALLET, }); }); it('for Deploying state returns Deploying', function () { chai_1.expect(walletSerializer.serialize({ kind: 'Deploying', wallet: TEST_DEPLOYING_WALLET, })).to.deep.eq({ kind: 'Deploying', wallet: TEST_SERIALIZED_WALLET, }); }); it('for Connecting state returns Connecting', function () { chai_1.expect(walletSerializer.serialize({ kind: 'Connecting', wallet: TEST_CONNECTING_WALLET, })).to.deep.eq({ kind: 'Connecting', wallet: TEST_APPLICATION_WALLET, }); }); }); describe('deserialize', function () { var futureWalletFactory = { createFrom: function () { return TEST_FUTURE_WALLET; }, }; var sdk = __assign(__assign({}, mockSDK), { getFutureWalletFactory: function () { return futureWalletFactory; } }); var walletSerializer = new WalletSerializer_1.WalletSerializer(sdk); it('for None returns None', function () { chai_1.expect(walletSerializer.deserialize({ kind: 'None' })).to.deep.eq({ kind: 'None' }); }); it('for Future returns Future', function () { chai_1.expect(walletSerializer.deserialize({ kind: 'Future', name: 'name.mylogin.eth', wallet: { contractAddress: commons_1.TEST_CONTRACT_ADDRESS, privateKey: commons_1.TEST_PRIVATE_KEY, ensName: 'name.mylogin.eth', gasPrice: commons_1.TEST_GAS_PRICE, gasToken: commons_1.ETHER_NATIVE_TOKEN.address, }, })).to.deep.eq({ kind: 'Future', name: 'name.mylogin.eth', wallet: TEST_FUTURE_WALLET, }); }); it('for Deploying returns Deploying', function () { var state = walletSerializer.deserialize({ kind: 'Deploying', wallet: __assign(__assign({}, TEST_APPLICATION_WALLET), { deploymentHash: TEST_DEPLOYING_WALLET.deploymentHash }), }); commons_1.ensure(state.kind === 'Deploying', chai_1.AssertionError, "Expected state.kind to be 'Deploying', but was " + state.kind); chai_1.expect(state.wallet).to.deep.include(__assign(__assign({}, TEST_APPLICATION_WALLET), { deploymentHash: TEST_DEPLOYING_WALLET.deploymentHash })); chai_1.expect(state.wallet).to.haveOwnProperty('waitForTransactionHash'); chai_1.expect(state.wallet).to.haveOwnProperty('waitToBeSuccess'); }); it('for Deployed returns Deployed', function () { var state = walletSerializer.deserialize({ kind: 'Deployed', wallet: TEST_APPLICATION_WALLET, }); chai_1.expect(state.kind).to.eq('Deployed'); chai_1.expect(state.wallet).to.deep.include(TEST_APPLICATION_WALLET); }); }); }); //# sourceMappingURL=WalletSerializer.test.js.map