Fixing up browser test cases.
This commit is contained in:
parent
f6990b6e1f
commit
cf83d92cc1
@ -1,8 +1,11 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
module.exports = {
|
var Tests = {
|
||||||
"contract-interface": require('./run-contract-interface.js'),
|
"contract-interface": require('./run-contract-interface.js'),
|
||||||
"hdnode": require('./run-hdnode.js'),
|
"hdnode": require('./run-hdnode.js'),
|
||||||
|
"providers": require('./run-providers.js'),
|
||||||
"utils": require('./run-utils.js'),
|
"utils": require('./run-utils.js'),
|
||||||
"wallet": require('./run-wallet.js'),
|
"wallet": require('./run-wallet.js'),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
module.exports = Tests;
|
@ -23,13 +23,25 @@ var callFallback = (function() {
|
|||||||
})();
|
})();
|
||||||
|
|
||||||
var privateKey = null;
|
var privateKey = null;
|
||||||
try {
|
if (fs && fs.readFileSync) {
|
||||||
privateKey = fs.readFileSync('.test-account.key').toString();
|
try {
|
||||||
console.log('Found privateKey!');
|
privateKey = fs.readFileSync('.test-account.key').toString();
|
||||||
} catch (error) {
|
console.log('Found privateKey!');
|
||||||
console.log('Creating new private key!');
|
} catch (error) {
|
||||||
privateKey = utils.hexlify(utils.randomBytes(32));
|
console.log('Creating new private key!');
|
||||||
fs.writeFileSync('.test-account.key', privateKey);
|
privateKey = utils.hexlify(utils.randomBytes(32));
|
||||||
|
fs.writeFileSync('.test-account.key', privateKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
privateKey = global.localStorage.getItem('ethers-tests-privateKey');
|
||||||
|
if (privateKey) {
|
||||||
|
console.log('Found privateKey');
|
||||||
|
} else {
|
||||||
|
console.log('Creating new private key!');
|
||||||
|
privateKey = utils.hexlify(utils.randomBytes(32));
|
||||||
|
global.localStorage.setItem('ethers-tests-privateKey', privateKey);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var provider = providers.getDefaultProvider(true);
|
var provider = providers.getDefaultProvider(true);
|
||||||
|
@ -1,92 +0,0 @@
|
|||||||
'use strict';
|
|
||||||
|
|
||||||
var contracts = require('../contracts/index.js');
|
|
||||||
//var providers = require('../providers/index.js');
|
|
||||||
|
|
||||||
var provider = new providers.EtherscanProvider({testnet: true});
|
|
||||||
|
|
||||||
module.exports = function(test) {
|
|
||||||
var contractAddress = '0xdfaf84077cF4bCECA4F79d167F47041Ed3006D5b';
|
|
||||||
var contractABI = {
|
|
||||||
"SimpleStorage": [
|
|
||||||
{
|
|
||||||
"constant":true,
|
|
||||||
"inputs":[],
|
|
||||||
"name":"getValue",
|
|
||||||
"outputs":[{"name":"value","type":"string"}],
|
|
||||||
"type":"function"
|
|
||||||
}, {
|
|
||||||
"constant":false,
|
|
||||||
"inputs":[{"name":"value","type":"string"}],
|
|
||||||
"name":"setValue",
|
|
||||||
"outputs":[],
|
|
||||||
"type":"function"
|
|
||||||
}, {
|
|
||||||
"anonymous":false,
|
|
||||||
"inputs":[
|
|
||||||
{"indexed":false,"name":"oldValue","type":"string"},
|
|
||||||
{"indexed":false,"name":"newValue","type":"string"}
|
|
||||||
],
|
|
||||||
"name":"valueChanged",
|
|
||||||
"type":"event"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
var contractInterface = new contracts.Interface(contractABI.SimpleStorage);
|
|
||||||
var getValue = contractInterface.getValue()
|
|
||||||
var setValue = contractInterface.setValue("foobar");
|
|
||||||
var valueChanged = contractInterface.valueChanged()
|
|
||||||
|
|
||||||
test.equal(getValue.data, '0x20965255', "wrong call data");
|
|
||||||
test.equal(setValue.data, '0x93a0935200000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006666f6f6261720000000000000000000000000000000000000000000000000000', "wrong transaction data");
|
|
||||||
test.ok(
|
|
||||||
(valueChanged.topics.length === 1 && valueChanged.topics[0] === '0x68ad6719a0070b3bb2f866fa0d46c8123b18cefe9b387ddb4feb6647ca418435'),
|
|
||||||
"wrong call data"
|
|
||||||
);
|
|
||||||
|
|
||||||
// @TODO - test decode
|
|
||||||
|
|
||||||
var privateKey = new Buffer(32);
|
|
||||||
privateKey.fill(0x42);
|
|
||||||
|
|
||||||
var wallet = new Wallet(privateKey, provider);
|
|
||||||
var contract = wallet.getContract(contractAddress, contractABI.SimpleStorage);
|
|
||||||
|
|
||||||
function testCall() {
|
|
||||||
return new Promise(function(resolve, reject) {
|
|
||||||
contract.getValue().then(function(result) {
|
|
||||||
test.equal(result[0], 'test888888', 'failed to call getVaue (positional)');
|
|
||||||
test.equal(result.value, 'test888888', 'failed to call getVaue (keyword)');
|
|
||||||
resolve(result);
|
|
||||||
}, function(error) {
|
|
||||||
test.ok(false, 'failed to call getValue (is parity running on this host?)');
|
|
||||||
reject(error);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function testEstimate() {
|
|
||||||
return new Promise(function(resolve, reject) {
|
|
||||||
contract.estimate.setValue('foo').then(function(result) {
|
|
||||||
test.equal(result.toString(16), '8f5a', 'failed to estimate setVaue');
|
|
||||||
resolve(result);
|
|
||||||
}, function(error) {
|
|
||||||
test.ok(false, 'failed to call getValue (is parity running on this host?)');
|
|
||||||
reject(error);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
Promise.all([
|
|
||||||
testCall(),
|
|
||||||
testEstimate(),
|
|
||||||
]).then(function(results) {
|
|
||||||
test.done();
|
|
||||||
}, function(error) {
|
|
||||||
console.log('ERROR', error);
|
|
||||||
test.done();
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
module.exports.testSelf = module.exports;
|
|
@ -1,105 +0,0 @@
|
|||||||
'use strict';
|
|
||||||
var Wallet = require('../index.js');
|
|
||||||
|
|
||||||
var Web3 = require('web3');
|
|
||||||
|
|
||||||
// @TODO: We need to do a lot more test cases here:
|
|
||||||
// - homestead
|
|
||||||
// - sendTransaction
|
|
||||||
// - estimateGas with various parameters set and not set
|
|
||||||
// - estimateGas on a contract with from/value conditionals
|
|
||||||
// - Metamask-style injected Web3
|
|
||||||
|
|
||||||
module.exports = function(test) {
|
|
||||||
|
|
||||||
var url = 'http://localhost:8545';
|
|
||||||
var web3Provider = new Web3.providers.HttpProvider(url)
|
|
||||||
var web3 = new Web3(web3Provider)
|
|
||||||
|
|
||||||
var providers = [
|
|
||||||
(new Wallet.providers.Web3Provider(web3Provider)),
|
|
||||||
(new Wallet.providers.Web3Provider(web3)),
|
|
||||||
(new Wallet.providers.HttpProvider(url)),
|
|
||||||
(new Wallet.providers.EtherscanProvider({testnet: true})),
|
|
||||||
]
|
|
||||||
|
|
||||||
var pending = [];
|
|
||||||
|
|
||||||
function checkMethod(method, params, expectedValue) {
|
|
||||||
var checks = [];
|
|
||||||
providers.forEach(function(provider) {
|
|
||||||
checks.push(new Promise(function(resolve, reject) {
|
|
||||||
provider[method].apply(provider, params).then(function(value) {
|
|
||||||
resolve(value);
|
|
||||||
}, function(error) {
|
|
||||||
reject(error);
|
|
||||||
});
|
|
||||||
}));
|
|
||||||
});
|
|
||||||
|
|
||||||
pending.push(new Promise(function(resolve, reject) {
|
|
||||||
Promise.all(checks).then(function(results) {
|
|
||||||
if (!expectedValue) { expectedValue = results[0]; }
|
|
||||||
results.forEach(function(value) {
|
|
||||||
if (expectedValue instanceof Wallet.utils.BN) {
|
|
||||||
test.ok(expectedValue.eq(value), 'Failed ' + method);
|
|
||||||
} else if (typeof(expectedValue) === 'function') {
|
|
||||||
test.ok(expectedValue(value), 'Failed ' + method);
|
|
||||||
} else {
|
|
||||||
test.equal(value, expectedValue, 'Failed ' + method);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
resolve();
|
|
||||||
}, function(error) {
|
|
||||||
console.log(error);
|
|
||||||
test.ok(false, 'Error - ' + error.message)
|
|
||||||
});
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
|
|
||||||
checkMethod(
|
|
||||||
'getBalance', ['0x7357589f8e367c2C31F51242fB77B350A11830F3']
|
|
||||||
);
|
|
||||||
checkMethod(
|
|
||||||
'getTransactionCount', ['0x7357589f8e367c2C31F51242fB77B350A11830F3']
|
|
||||||
);
|
|
||||||
checkMethod('getGasPrice', []);
|
|
||||||
checkMethod(
|
|
||||||
'call', [{to: '0xdfaf84077cF4bCECA4F79d167F47041Ed3006D5b', data: '0x20965255'}],
|
|
||||||
'0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006666f6f6261720000000000000000000000000000000000000000000000000000'
|
|
||||||
);
|
|
||||||
checkMethod(
|
|
||||||
'estimateGas', [{
|
|
||||||
to: '0xdfaf84077cF4bCECA4F79d167F47041Ed3006D5b',
|
|
||||||
from: '0x7357589f8e367c2C31F51242fB77B350A11830F3',
|
|
||||||
data: '0x93a0935200000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003666f6f0000000000000000000000000000000000000000000000000000000000'
|
|
||||||
}],
|
|
||||||
new Wallet.utils.BN('35588')
|
|
||||||
);
|
|
||||||
|
|
||||||
var privateKey = new Buffer(32);
|
|
||||||
privateKey.fill(0x42);
|
|
||||||
|
|
||||||
var wallet = new Wallet(privateKey, url);
|
|
||||||
pending.push(new Promise(function(resolve, reject) {
|
|
||||||
wallet.estimateGas({
|
|
||||||
to: '0xdfaf84077cF4bCECA4F79d167F47041Ed3006D5b',
|
|
||||||
data: '0x93a0935200000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003666f6f0000000000000000000000000000000000000000000000000000000000'
|
|
||||||
}).then(function(value) {
|
|
||||||
test.equal(value.toString(10), '35588', 'Failed to call wallet.estimateGas');
|
|
||||||
resolve();
|
|
||||||
}, function(error) {
|
|
||||||
reject(error);
|
|
||||||
});
|
|
||||||
}));
|
|
||||||
|
|
||||||
Promise.all(pending).then(function(results) {
|
|
||||||
test.done();
|
|
||||||
}, function(error) {
|
|
||||||
console.log(error);
|
|
||||||
test.ok(false, 'Error occured: ' + error.message);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports.testSelf = module.exports;
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user