aboutsummaryrefslogblamecommitdiffstats
path: root/test/utils/web3_factory.ts
blob: 4785fa858614da8a86db14c7306731468b278a4c (plain) (tree)
1
2
3
4
5
6
7
8
9







                                                                                                   
                                       
                                      
                                                                                       

                            

                                                           



                                   
                                                                 

                                                                            


                                                               



                                                 
                        
      
                                      



                                                                            
  
// HACK: web3 injects XMLHttpRequest into the global scope and ProviderEngine checks XMLHttpRequest
// to know whether it is running in a browser or node environment. We need it to be undefined since
// we are not running in a browser env.
// Filed issue: https://github.com/ethereum/web3.js/issues/844
(global as any).XMLHttpRequest = undefined;
import ProviderEngine = require('web3-provider-engine');
import RpcSubprovider = require('web3-provider-engine/subproviders/rpc');
import * as Web3 from 'web3';
import * as Web3_beta from 'web3_beta';
import {constants} from './constants';
import {EmptyWalletSubProvider} from '../../src/subproviders/empty_wallet_subprovider';

export const web3Factory = {
    create(hasAddresses: boolean = true): Web3 {
        const provider = this.getRpcProvider(hasAddresses);
        const web3 = new Web3();
        web3.setProvider(provider);
        return web3;
    },
    getRpcProvider(hasAddresses: boolean = true): Web3.Provider {
        const provider = new ProviderEngine();
        const rpcUrl = `http://${constants.RPC_HOST}:${constants.RPC_PORT}`;
        if (!hasAddresses) {
            provider.addProvider(new EmptyWalletSubProvider());
        }
        provider.addProvider(new RpcSubprovider({
            rpcUrl,
        }));
        provider.start();
        return provider;
    },
    getProviderBeta(): Web3.Provider {
        const rpcUrl = `http://${constants.RPC_HOST}:${constants.RPC_PORT}`;
        const providerBeta = new Web3_beta.providers.HttpProvider(rpcUrl);
        return providerBeta;
    },
};