mirror of https://github.com/hyperledger/besu
An enterprise-grade Java-based, Apache 2.0 licensed Ethereum client https://wiki.hyperledger.org/display/besu
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
2.6 KiB
54 lines
2.6 KiB
// Copyright ConsenSys AG.
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
const TestPermissioning = artifacts.require('SimpleAccountPermissioning.sol');
|
|
var proxy;
|
|
|
|
var address1 = "0x627306090abaB3A6e1400e9345bC60c78a8BEf57";
|
|
var address2 = "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73";
|
|
|
|
var value = 99;
|
|
var gasPrice = 88;
|
|
var gasLimit = 77;
|
|
var payload = "0x1234";
|
|
|
|
contract('Permissioning: Accounts', () => {
|
|
it('TEST CONTRACT permits ANY transaction when account whitelist is empty', async () => {
|
|
proxy = await TestPermissioning.new();
|
|
let permitted = await proxy.transactionAllowed(address1, address2, value, gasPrice, gasLimit, payload);
|
|
assert.equal(permitted, true, 'expected ANY tx to be permitted since whitelist is empty');
|
|
});
|
|
|
|
it('Should add an account to the whitelist and then permit that node', async () => {
|
|
await proxy.addAccount(address1);
|
|
let permitted = await proxy.transactionAllowed(address1, address2, value, gasPrice, gasLimit, payload);
|
|
assert.equal(permitted, true, 'added address1: expected tx1 to be permitted');
|
|
|
|
// await another
|
|
await proxy.addAccount(address2);
|
|
permitted = await proxy.transactionAllowed(address2, address1, value, gasPrice, gasLimit, payload);
|
|
assert.equal(permitted, true, 'added address2: expected tx2 to be permitted');
|
|
|
|
// first one still permitted
|
|
permitted = await proxy.transactionAllowed(address1, address2, value, gasPrice, gasLimit, payload);
|
|
assert.equal(permitted, true, 'expected tx from address1 to still be permitted');
|
|
});
|
|
|
|
it('Should remove an account from the whitelist and then NOT permit that account to send tx', async () => {
|
|
await proxy.removeAccount(address2);
|
|
let permitted = await proxy.transactionAllowed(address2, address1, value, gasPrice, gasLimit, payload);
|
|
assert.equal(permitted, false, 'expected removed account (address2) NOT permitted to send tx');
|
|
|
|
// first one still permitted
|
|
permitted = await proxy.transactionAllowed(address1, address2, value, gasPrice, gasLimit, payload);
|
|
assert.equal(permitted, true, 'expected tx from address1 to still be permitted');
|
|
|
|
// remove remaining account from whitelist
|
|
await proxy.removeAccount(address1);
|
|
permitted = await proxy.transactionAllowed(address2, address1, value, gasPrice, gasLimit, payload);
|
|
assert.equal(permitted, true, 'whitelist now empty so ANY account now permitted to send tx');
|
|
|
|
// first one still permitted
|
|
permitted = await proxy.transactionAllowed(address1, address2, value, gasPrice, gasLimit, payload);
|
|
assert.equal(permitted, true, 'expected tx from address1 to still be permitted');
|
|
});
|
|
});
|
|
|