@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
JavaScript
"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