UNPKG

@melonproject/protocol

Version:

Technology Regulated and Operated Investment Funds

98 lines (97 loc) 4.63 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const web3_eth_accounts_1 = __importDefault(require("web3-eth-accounts")); const token_math_1 = require("@melonproject/token-math"); const testLogger_1 = require("./testLogger"); const constructEnvironment_1 = require("../../utils/environment/constructEnvironment"); const Environment_1 = require("../../utils/environment/Environment"); const ensure_1 = require("../../utils/guards/ensure"); // tslint:disable-next-line:max-line-length const testMnemonic = 'exhibit now news planet fame thank swear reform tilt accident bitter axis'; exports.keyPairs = new Map([ [ '0xc0c82081f2ad248391cd1483ae211d56c280887a', '0xd3fdff38aaf7be159fc1c12c66982fea997df08ca5b91b399e437370d3681721', ], [ '0x697d686207b035afef108f39d6ab2fe0a5528c81', '0x9cc70449981c6df178133db4c075c408876e8be3b147fa11f8ee947faa0b0011', ], [ '0x957e5117873b7e64ae9bb3d7f7e907f46de480f6', '0x53f76b9ee429500aacf3730228ab4fdc72683e952b48a8c4a923c04203d93a56', ], [ '0x603b6ff5667ea0610122ff483a540aa60f18d545', '0x1a4b1a2941ef98ab3e8aa83572bc81d8fe178a2d21ee42b888fd0597848746de', ], [ '0x83a422230f49ce9ab2d8e75c3d493a6ccf91e36a', '0xb5556102fef8ffc4e044cd6708039787ed97bb5860fd1bff2fcac88d77ff70eb', ], [ '0x1141caf50b083e21bb48130460ce11eb47758545', '0x35dae058318c0869a4bd3acc659e345a60d71aa86d37b6ba299391e86d6e0b21', ], [ '0x6029bce8e8c9fe26bc096b45b1106ff4da3eba5d', '0xba830c02b1aff9bc5a6e194bab37a3865e26bc5b33402c6f292552c7f89f9732', ], [ '0x94b76e27c0caf9db8a64b6b86c8dd1d89e21d709', '0x6750fdc727aeb0854e57018b02e0e144820d15eed1a9e950fff367484e93aa48', ], [ '0x834cd847a5ce0bac0eda3355df9bf9fe2420e339', '0x071570dd341ce1056771af8f4efd0fe3a0874eacc10228b9c4d626b007102e21', ], [ '0xbe1ac5962e318d0335b8d8aabff55dc4bad01826', '0x2760966c32dd5179176ab8066895148f2bdfa3072427b9904660a0555d1c32e7', ], ]); const getGanache = () => { // tslint:disable-next-line:variable-name const Ganache = require('@melonproject/ganache-cli'); const provider = Ganache.provider({ gasLimit: '0x7a1200', // tslint:disable-next-line:object-literal-sort-keys default_balance_ether: 10000000000000, mnemonic: testMnemonic, }); testLogger_1.testLogger('melon:protocol:test:utils', Environment_1.LogLevels.DEBUG, 'In-memory Ganache'); return provider; }; exports.initTestEnvironment = (endpoint) => __awaiter(this, void 0, void 0, function* () { const jsonRpcEndpoint = endpoint || process.env.JSON_RPC_ENDPOINT; const environment = constructEnvironment_1.constructEnvironment({ // Pass in Ganache.provider but only if // process.env.JSON_RPC_ENDPOINT is not set endpoint: jsonRpcEndpoint, logger: testLogger_1.testLogger, provider: !jsonRpcEndpoint && getGanache(), }); const accounts = yield environment.eth.getAccounts(); ensure_1.ensure(accounts.length > 0, 'No accounts found. Are your running a test chain?'); ensure_1.ensure(exports.keyPairs.has(accounts[0].toLowerCase()), `Unknown address: ${accounts[0]}. Are you running ganache with the right mnemonic: ${testMnemonic}`); const web3Accounts = new web3_eth_accounts_1.default(environment.eth.currentProvider); const signTransaction = (unsignedTransaction, from = new token_math_1.Address(accounts[0])) => web3Accounts .signTransaction(unsignedTransaction, exports.keyPairs.get(from.toLowerCase())) .then(t => t.rawTransaction); const enhancedEnvironment = Object.assign({}, environment, { wallet: { address: accounts[0], signTransaction, } }); return enhancedEnvironment; });