UNPKG

test-ic-wallet-middleware-icrc

Version:
223 lines (222 loc) 10.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const agent_1 = require("@dfinity/agent"); const principal_1 = require("@dfinity/principal"); const common_1 = require("@ic-wallet-middleware/common"); const mockLogger_1 = require("../../../__tests_utils/mockLogger"); const transferFromServiceHandler_1 = require("../../../handlers/serviceHandlers/transferFromServiceHandler/transferFromServiceHandler"); const assetMetaDataCacheHandler_1 = require("../../../internalHandlers/icrcCacheDataHandlers/assets/assetMetaDataCacheHandler/assetMetaDataCacheHandler"); const subAccountBalanceHandler_1 = require("../../../internalHandlers/icrcCacheDataHandlers/assets/subAccountBalanceHandler/subAccountBalanceHandler"); const ServiceAssetCacheCreditHandler_1 = require("../../../internalHandlers/icrcCacheDataHandlers/services/serviceAssetCreditCacheHandler/ServiceAssetCacheCreditHandler"); const serviceAssetDepositHandler_1 = require("../../../internalHandlers/icrcCacheDataHandlers/services/serviceAssetDepositHandler/serviceAssetDepositHandler"); const serviceAssetDetailsHandler_1 = require("../../../internalHandlers/icrcCacheDataHandlers/services/serviceAssetDetailsHandler/serviceAssetDetailsHandler"); const types_1 = require("../../../types"); describe("Unit ServiceAssetCacheCreditHandler tests", () => { const testData = [ { name: "transfer", input: { amount: "0.0002", fromPrincipal: "pmr6h-yaaaa-aaaao-a3myq-cai", ledgerAddress: "ryjl3-tyaaa-aaaaa-aaaba-cai", toPrincipal: "3etep-celzb-5t4iw-swa7s-3yek6-g45iq-cuopt-6t3lp-phfdf-xh7va-gqe", toSubId: types_1.SubAccountId.parseFromString("0x1") }, data: { details: { assetDetail: { allowanceFee: BigInt(1000), withdrawalFee: BigInt(1000), depositFee: BigInt(1000), } }, credit: { ledgerAddress: "ryjl3-tyaaa-aaaaa-aaaba-cai", credit: BigInt(1000000) }, debit: { serviceAssetDeposit: BigInt(0) }, metadata: { symbol: "ICP", name: "Internet Computer", decimals: 8, logo: "", fee: BigInt(10000), } }, result: common_1.FormResult.error([{ fieldName: "", localizationKey: "default.error.message", message: "Insufficient Credit" }]) }, { name: "error, Amount should be more that withdrawal fee", input: { amount: "0.0001", fromPrincipal: "pmr6h-yaaaa-aaaao-a3myq-cai", ledgerAddress: "ryjl3-tyaaa-aaaaa-aaaba-cai", toPrincipal: "3etep-celzb-5t4iw-swa7s-3yek6-g45iq-cuopt-6t3lp-phfdf-xh7va-gqe", toSubId: types_1.SubAccountId.parseFromString("0x1") }, data: { details: { assetDetail: { allowanceFee: BigInt(10000), withdrawalFee: BigInt(10000), depositFee: BigInt(10000), } }, credit: { ledgerAddress: "ryjl3-tyaaa-aaaaa-aaaba-cai", credit: BigInt(1000000) }, debit: { serviceAssetDeposit: BigInt(0) }, metadata: { symbol: "ICP", name: "Internet Computer", decimals: 8, logo: "", fee: BigInt(10000), } }, result: common_1.FormResult.error([{ fieldName: "amount", localizationKey: "transfer.amount.less.minimum.withdrawal", message: "Amount should be more that withdrawal fee: 10000" }]) }, { name: "error, Amount should be more that 0", input: { amount: "0", fromPrincipal: "pmr6h-yaaaa-aaaao-a3myq-cai", ledgerAddress: "ryjl3-tyaaa-aaaaa-aaaba-cai", toPrincipal: "3etep-celzb-5t4iw-swa7s-3yek6-g45iq-cuopt-6t3lp-phfdf-xh7va-gqe", toSubId: types_1.SubAccountId.parseFromString("0x1") }, data: { details: { assetDetail: { allowanceFee: BigInt(10000), withdrawalFee: BigInt(10000), depositFee: BigInt(10000), } }, credit: { ledgerAddress: "ryjl3-tyaaa-aaaaa-aaaba-cai", credit: BigInt(10000) }, debit: { serviceAssetDeposit: BigInt(10000) }, metadata: { symbol: "ICP", name: "Internet Computer", decimals: 8, logo: "", fee: BigInt(10000), } }, result: common_1.FormResult.error([{ fieldName: "amount", localizationKey: "transfer.service.invalid.amount", message: "Invalid amount", }]) }, { name: "error, Sent amount should be less than balance ", input: { amount: "0.0002", fromPrincipal: "pmr6h-yaaaa-aaaao-a3myq-cai", ledgerAddress: "ryjl3-tyaaa-aaaaa-aaaba-cai", toPrincipal: "3etep-celzb-5t4iw-swa7s-3yek6-g45iq-cuopt-6t3lp-phfdf-xh7va-gqe", toSubId: types_1.SubAccountId.parseFromString("0x1") }, data: { details: { assetDetail: { allowanceFee: BigInt(10000), withdrawalFee: BigInt(10000), depositFee: BigInt(10000), } }, credit: { ledgerAddress: "ryjl3-tyaaa-aaaaa-aaaba-cai", credit: BigInt(10000) }, debit: { serviceAssetDeposit: BigInt(10000) }, metadata: { symbol: "ICP", name: "Internet Computer", decimals: 8, logo: "", fee: BigInt(10000), }, }, result: common_1.FormResult.error([{ fieldName: "amount", localizationKey: "transfer.from.no.enough.balance", message: "Sent amount should be less than balance", }]) }, { name: "error, Sent amount should be less than balance ", input: { amount: "0.0002", fromPrincipal: "pmr6h-yaaaa-aaaao-a3myq-cai", ledgerAddress: "ryjl3-tyaaa-aaaaa-aaaba-cai", toPrincipal: "3etep-celzb-5t4iw-swa7s-3yek6-g45iq-cuopt-6t3lp-phfdf-xh7va-gqe", toSubId: types_1.SubAccountId.parseFromString("0x1") }, data: { details: { assetDetail: { allowanceFee: BigInt(10000), withdrawalFee: BigInt(10000), depositFee: BigInt(10000), } }, credit: { ledgerAddress: "ryjl3-tyaaa-aaaaa-aaaba-cai", credit: BigInt(10000) }, debit: { serviceAssetDeposit: BigInt(10000) }, metadata: undefined, }, result: common_1.FormResult.error([{ fieldName: "fromPrincipal", localizationKey: "asset.not.found", message: "Asset Not Found", }]) } ]; for (let test of testData) { it(test.name, async () => { jest.restoreAllMocks(); const identifierService = new common_1.IdentifierService(); const assetMetaDataHandler = new assetMetaDataCacheHandler_1.AssetMetaDataCacheHandler(); assetMetaDataHandler.handle = jest.fn().mockReturnValue(Promise.resolve(test.data.metadata)); const serviceAssetDetailsHandler = new serviceAssetDetailsHandler_1.ServiceAssetDetailsHandler(); serviceAssetDetailsHandler.process = jest.fn().mockReturnValue(Promise.resolve(test.data.details)); const serviceAssetCreditHandler = new ServiceAssetCacheCreditHandler_1.ServiceAssetCacheCreditHandler(); serviceAssetCreditHandler.process = jest.fn().mockReturnValue(Promise.resolve(test.data.credit)); const serviceAssetDepositHandler = new serviceAssetDepositHandler_1.ServiceAssetDepositHandler(); serviceAssetDepositHandler.process = jest.fn().mockReturnValue(Promise.resolve(test.data.debit)); const subAccountBalanceHandler = new subAccountBalanceHandler_1.SubAccountBalanceHandler(); identifierService.getAgent = jest.fn().mockReturnValue(new agent_1.HttpAgent()); identifierService.getPrincipal = jest.fn().mockReturnValue(principal_1.Principal.fromText("gjcgk-x4xlt-6dzvd-q3mrr-pvgj5-5bjoe-beege-n4b7d-7hna5-pa5uq-5qe")); const logger = new mockLogger_1.MockLogger(); const transferFromServiceHandler = new transferFromServiceHandler_1.TransferFromServiceHandler(logger, assetMetaDataHandler, serviceAssetDetailsHandler, serviceAssetCreditHandler, serviceAssetDepositHandler, identifierService, subAccountBalanceHandler); const result = await transferFromServiceHandler.handle(test.input); expect(result).toEqual(test.result); }, 100000); } });