// Copyright ConsenSys AG.
// SPDX-License-Identifier: Apache-2.0
const TestPermissioning = artifacts . require ( 'SimpleNodePermissioning.sol' ) ;
var proxy ;
var node1High = "0x9bd359fdc3a2ed5df436c3d8914b1532740128929892092b7fcb320c1b62f375" ;
var node1Low = "0x892092b7fcb320c1b62f3759bd359fdc3a2ed5df436c3d8914b1532740128929" ;
var node1Host = "0x9bd359fdc3a2ed5df436c3d8914b1532" ;
var node1Port = 30303 ;
var node2High = "0x892092b7fcb320c1b62f3759bd359fdc3a2ed5df436c3d8914b1532740128929" ;
var node2Low = "0x892092b7fcb320c1b62f3759bd359fdc3a2ed5df436c3d8914b1532740128929" ;
var node2Host = "0x596c3d8914b1532fdc3a2ed5df439bd3" ;
var node2Port = 30304 ;
contract ( 'Permissioning: Nodes' , ( ) => {
it ( 'Should NOT permit any node when none have been added' , async ( ) => {
proxy = await TestPermissioning . new ( ) ;
let permitted = await proxy . enodeAllowed ( node1High , node1Low , node1Host , node1Port ) ;
assert . equal ( permitted , false , 'expected node NOT permitted' ) ;
} ) ;
it ( 'Should compute key' , async ( ) => {
let key1 = await proxy . computeKey ( node1High , node1Low , node1Host ) ;
let key2 = await proxy . computeKey ( node1High , node1Low , node1Host ) ;
assert . equal ( key1 , key2 , "computed keys should be the same" ) ;
let key3 = await proxy . computeKey ( node2High , node2Low , node2Host ) ;
assert ( key3 != key2 , "computed keys for different nodes should be different" ) ;
} ) ;
it ( 'Should add a node to the whitelist and then permit that node' , async ( ) => {
await proxy . addEnode ( node1High , node1Low , node1Host , node1Port ) ;
let permitted = await proxy . enodeAllowed ( node1High , node1Low , node1Host , node1Port ) ;
assert . equal ( permitted , true , 'expected node added to be permitted' ) ;
// await another
await proxy . addEnode ( node2High , node2Low , node2Host , node2Port ) ;
permitted = await proxy . enodeAllowed ( node2High , node2Low , node2Host , node2Port ) ;
assert . equal ( permitted , true , 'expected node 2 added to be permitted' ) ;
// first one still permitted
permitted = await proxy . enodeAllowed ( node1High , node1Low , node1Host , node1Port ) ;
assert . equal ( permitted , true , 'expected node 1 added to be permitted' ) ;
} ) ;
it ( 'Should allow a connection between 2 added nodes' , async ( ) => {
let permitted = await proxy . connectionAllowed ( node1High , node1Low , node1Host , node1Port , node2High , node2Low , node2Host , node2Port ) ;
assert . equal ( permitted , '0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff' , 'expected 2 added nodes to work as source <> destination' ) ;
} ) ;
it ( 'Should remove a node from the whitelist and then NOT permit that node' , async ( ) => {
await proxy . removeEnode ( node1High , node1Low , node1Host , node1Port ) ;
let permitted = await proxy . enodeAllowed ( node1High , node1Low , node1Host , node1Port ) ;
assert . equal ( permitted , false , 'expected removed node NOT permitted' ) ;
permitted = await proxy . connectionAllowed ( node1High , node1Low , node1Host , node1Port , node2High , node2Low , node2Host , node2Port ) ;
assert . equal ( permitted , '0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff' , 'expected source disallowed since it was removed' ) ;
} ) ;
} ) ;