@consensys-software/permissioning-smart-contracts
Version:
Smart contracts and dapp implementing EEA spec onchain permissioning
69 lines (51 loc) • 2.91 kB
JavaScript
const NodeIngress = artifacts.require('NodeIngress.sol');
const NodeRules = artifacts.require('NodeRules.sol');
const RulesStorage = artifacts.require('NodeStorage.sol');
const Admin = artifacts.require('Admin.sol');
// Contract keys
const RULES_NAME = "0x72756c6573000000000000000000000000000000000000000000000000000000";
const ADMIN_NAME = "0x61646d696e697374726174696f6e000000000000000000000000000000000000";
const enode1 = "9bd359fdc3a2ed5df436c3d8914b1532740128929892092b7fcb320c1b62f375"
+ "2e1092b7fcb320c1b62f3759bd359fdc3a2ed5df436c3d8914b1532740128929";
const node1Host = "127.0.0.1";
const node1Port = 30303;
const newAdmin = "f17f52151EbEF6C7334FAD080c5704D77216b732";
contract("NodeRules (Events)", () => {
let nodeIngressContract;
let nodeRulesContract;
let adminContract;
beforeEach(async () => {
nodeIngressContract = await NodeIngress.new();
adminContract = await Admin.new();
await nodeIngressContract.setContractAddress(ADMIN_NAME, adminContract.address);
// set the storage
storageContract = await RulesStorage.new(nodeIngressContract.address);
console.log(" >>> Storage contract deployed with address = " + storageContract.address);
nodeRulesContract = await NodeRules.new(nodeIngressContract.address, storageContract.address);
await nodeIngressContract.setContractAddress(RULES_NAME, nodeRulesContract.address);
// set rules as the storage owner
await storageContract.upgradeVersion(nodeRulesContract.address);
console.log(" >>> Set storage owner to Rules.address");
})
it('should emit events when node added', async () => {
await nodeRulesContract.addEnode(enode1, node1Host, node1Port);
await nodeRulesContract.addEnode(enode1, node1Host, node1Port);
// Get the events
let result = await nodeRulesContract.getPastEvents("NodeAdded", {fromBlock: 0, toBlock: "latest" });
// Verify the successful NodeAdded event is 'true'
assert.equal(result[0].returnValues.nodeAdded, true, "nodeAdded SHOULD be true");
// Verify the unsuccessful dupliate NodeAdded event is 'false'
assert.equal(result[1].returnValues.nodeAdded, false, "nodeAdded SHOULD be false");
});
it('should emit events when node removed', async () => {
await nodeRulesContract.addEnode(enode1, node1Host, node1Port);
await nodeRulesContract.removeEnode(enode1, node1Host, node1Port);
await nodeRulesContract.removeEnode(enode1, node1Host, node1Port);
// Get the events
let result = await nodeRulesContract.getPastEvents("NodeRemoved", {fromBlock: 0, toBlock: "latest" });
// Verify the successful NodeRemoved event is 'true'
assert.equal(result[0].returnValues.nodeRemoved, true, "nodeRemoved SHOULD be true");
// Verify the unsuccessful duplicate NodeRemoved event is 'false'
assert.equal(result[1].returnValues.nodeRemoved, false, "nodeRemoved SHOULD be false");
});
});