@tatumio/tatum
Version:
Tatum JS SDK
165 lines • 7.54 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.e2eUtil = void 0;
const service_1 = require("../service");
const network_utils_1 = require("../util/network.utils");
exports.e2eUtil = {
initConfig: (network, apiKey, url) => {
const config = {
network,
verbose: exports.e2eUtil.isVerbose,
retryCount: 5,
retryDelay: 2000,
apiKey: {
v4: apiKey ?? network_utils_1.NetworkUtils.getV4ApiKeyForNetwork(network),
},
};
if (url) {
config.rpc = {
nodes: [{ url: url, type: service_1.RpcNodeType.NORMAL }],
};
}
return config;
},
subscriptions: {
getAddress: (network) => {
switch (network) {
case service_1.Network.ETHEREUM_SEPOLIA:
case service_1.Network.ETHEREUM_HOLESKY:
case service_1.Network.FLARE:
case service_1.Network.FLARE_COSTON:
case service_1.Network.FLARE_COSTON_2:
case service_1.Network.FLARE_SONGBIRD:
case service_1.Network.CRONOS:
case service_1.Network.CRONOS_TESTNET:
case service_1.Network.BASE:
case service_1.Network.BASE_SEPOLIA:
case service_1.Network.AVALANCHE_C:
case service_1.Network.AVALANCHE_C_TESTNET:
case service_1.Network.FANTOM:
case service_1.Network.FANTOM_TESTNET:
case service_1.Network.OPTIMISM:
case service_1.Network.OPTIMISM_TESTNET:
case service_1.Network.BERACHAIN_MAINNET:
return '0xdb4C3b4350EE869F2D0a2F43ce0292865E2Aa149';
case service_1.Network.CELO_ALFAJORES:
return '0xdf083B077F1FD890fC71feCaBbd3F68F94cD21Bf';
case service_1.Network.POLYGON_AMOY:
return '0xcf3c930601111c216fc0232d32cf5c2a86f107da';
case service_1.Network.KLAYTN_BAOBAB:
return '0xdc7Dfb8Aa86D41b7e39441711Fe1669f2d843C06';
case service_1.Network.BINANCE_SMART_CHAIN_TESTNET:
return '0xddde2061b144Be4b5921eE1F1Cd2Db4eDC9AE6aA';
case service_1.Network.SOLANA_DEVNET:
return 'GwzBgrXb4PG59zjce24SF2b9JXbLEjJJTBkmytuEZj1b';
case service_1.Network.TRON_SHASTA:
return 'TLduuX5NWFucPPafLbj9eab6Znwrdm72Qv';
case service_1.Network.BITCOIN_TESTNET:
return 'tb1q0w3g78u9uwwpf94m3jtqen3neyge5g7y20w8mt';
case service_1.Network.BITCOIN_CASH_TESTNET:
return 'bchtest:qp495cqlv22676su9hllwy58unawwsmnfvztn0p0t6';
case service_1.Network.XRP:
case service_1.Network.XRP_TESTNET:
return 'rpnU81snz763qoXiHwnonsuTpDNwemL6yu';
case service_1.Network.LITECOIN_TESTNET:
return 'mo6gPn3Ri2c8twJGTxMX8L5p46jjYip5fT';
case service_1.Network.DOGECOIN_TESTNET:
return 'npMHRfj9bdR7bBdQe7RNQNK1QM2nRAN8Sh';
case service_1.Network.ETHEREUM:
return '0xd6B4Dfd10441c15e0D95a2Bce023b4F002634c72';
case service_1.Network.CELO:
return '0xd5f3B4e29A6f2263a9e3F6518309C78d73E407d4';
case service_1.Network.POLYGON:
return '0xdbFad06Aa5cC4a5EDB88ee63A515F8Cc31C7cA52';
case service_1.Network.KLAYTN:
return '0xd8Dc7359aF648462f13e8207aff04559271DD791';
case service_1.Network.BINANCE_SMART_CHAIN:
return '0x9b38ffbac4acb7a9fd15a7b3bbab5796724166ef';
case service_1.Network.SOLANA:
return '5U3bH5b6XtG99aVWLqwVzYPVpQiFHytBD68Rz2eFPZd7';
case service_1.Network.TRON:
return 'TLduuX5NWFucPPafLbj9eab6Znwrdm72Qv';
case service_1.Network.BITCOIN:
return 'bc1qrkh27xvmekrqelnhuajfsw2ksxxwh6dnxxcpsc';
case service_1.Network.BITCOIN_CASH:
return 'qz3yu2m8dzwrw5uc85a5pz78dyxnrvdhf5v8tlf8jd';
case service_1.Network.LITECOIN:
return 'LSNjqFj7ddawFb2tiykRwKUPNDFbPsAVro';
case service_1.Network.DOGECOIN:
return 'DKckW1iwr2tgCaLXPThMAXnPu7gbMJqBx5';
case service_1.Network.TEZOS:
return 'tz1T8S68igxa6uWZbeoWWwbcuRHEDQSzknEX';
default:
throw new Error(`Network ${network} not supported`);
}
},
testAddressBasedSubscription: async (tatum, address, func) => {
await exports.e2eUtil.flushSubscriptions(tatum);
const url = 'https://webhook.site/';
const { data, error } = await func({
url,
address,
});
if (error) {
await tatum.destroy();
throw new Error(error.message.join(','));
}
expect(data.id).toBeDefined();
await tatum.notification.unsubscribe(data.id);
expect(error).toBeUndefined();
expect(data.address.toLowerCase()).toEqual(address.toLowerCase());
expect(url).toBeDefined();
await tatum.destroy();
return data.id;
},
testContractBasedSubscription: async (tatum, contractAddress, func) => {
await exports.e2eUtil.flushSubscriptions(tatum);
const url = 'https://webhook.site/';
const event = '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef';
const { data, error } = await func({
url,
contractAddress,
event,
});
console.log(data);
console.log(error);
if (error) {
throw new Error(error.message.join(','));
}
expect(data.id).toBeDefined();
await tatum.notification.unsubscribe(data.id);
expect(error).toBeUndefined();
expect(data.contractAddress.toLowerCase()).toEqual(contractAddress.toLowerCase());
expect(url).toBeDefined();
await tatum.destroy();
},
testBlockBasedSubscription: async (tatum, func) => {
await exports.e2eUtil.flushSubscriptions(tatum);
const url = 'https://webhook.site/';
const { data, error } = await func({
url,
});
await tatum.notification.unsubscribe(data.id);
expect(error).toBeUndefined();
expect(data.id).toBeDefined();
expect(url).toBeDefined();
await tatum.destroy();
},
},
isVerbose: process.env.E2E_VERBOSE === 'true',
flushSubscriptions: async (tatum) => {
try {
const notifications = await tatum.notification.getAll();
if (notifications?.data?.length > 0) {
for (const notification of notifications.data) {
await tatum.notification.unsubscribe(notification.id);
}
}
}
catch (e) {
console.error('Error flushing subscriptions');
console.error(e);
}
},
};
//# sourceMappingURL=e2e.util.js.map