## Pre-requisites * [Truffle](https://truffleframework.com/) installed ``` npm install -g truffle ``` * [Wallet](https://www.npmjs.com/package/truffle-hdwallet-provider) installed ``` npm install truffle-hdwallet-provider ``` ## To run the tests: ``` cd acceptance-tests/simple-permissioning-smart-contract ``` * here you will find truffle.js which has network configurations for * development (Ganache) and * devwallet (points to localhost:8545) * Note you need Ganache running if you want to run the tests against it (see below) * Also this truffle.js uses address and private key generated by Ganache with default mnemonic "candy maple cake sugar pudding cream honey rich smooth crumble sweet treat" * To run the Truffle example with Besu, you need Besu running * [check out and build Besu](../../README.md) * run Besu (either in IDE or via command line), with mining and RPC enabled. * Run Truffle migrate against Ganache ``` truffle migrate ``` * Output should look something like: ``` Compiling ./contracts/Migrations.sol... Compiling ./contracts/SimplePermissioning.sol... Writing artifacts to ./build/contracts ⚠️ Important ⚠️ If you're using an HDWalletProvider, it must be Web3 1.0 enabled or your migration will hang. Starting migrations... ====================== > Network name: 'development' > Network id: 5777 > Block gas limit: 6721975 1_initial_migration.js ====================== Deploying 'Migrations' ---------------------- > transaction hash: 0x346b51830819ac04aac4c10082ac3e2b534fee424fa702e37155a4f8eee12f61 > Blocks: 0 Seconds: 0 > contract address: 0xD7de17FB4DFB954535E35353dC82dBB6156a8078 > account: 0x627306090abaB3A6e1400e9345bC60c78a8BEf57 > balance: 96.53012304 > gas used: 284908 > gas price: 20 gwei > value sent: 0 ETH > total cost: 0.00569816 ETH > Saving migration to chain. > Saving artifacts ------------------------------------- > Total cost: 0.00569816 ETH 2_deploy_contracts.js ===================== Deploying 'SimplePermissioning' ------------------------------- > transaction hash: 0x0752d5683ecb210308bc4c387fd8d4bbfde4c05a335bdcf594b608c2e63abf5a > Blocks: 0 Seconds: 0 > contract address: 0x1baf55be3D4b5f1911EB729EEa5A8d089Ee1162a > account: 0x627306090abaB3A6e1400e9345bC60c78a8BEf57 > balance: 96.50582406 > gas used: 1172915 > gas price: 20 gwei > value sent: 0 ETH > total cost: 0.0234583 ETH > Saving migration to chain. > Saving artifacts ------------------------------------- > Total cost: 0.0234583 ETH Summary ======= > Total deployments: 2 > Final cost: 0.02915646 ETH ``` If migrate works, try running the tests ``` cd acceptance-tests/simple-permissioning-smart-contract truffle test ``` * Output should look something like: ``` Using network 'development'. Compiling ./contracts/SimplePermissioning.sol... Contract: Permissioning Ipv4 Function: permissioning Ipv4 ✓ Should NOT permit any node when none have been added (75ms) ✓ Should compute key (71ms) ✓ Should add a node to the whitelist and then permit that node (223ms) ✓ Should allow a connection between 2 added nodes ✓ Should remove a node from the whitelist and then NOT permit that node (91ms) Contract: Permissioning Ipv6 Function: permissioning Ipv6 ✓ Should NOT permit any node when none have been added (79ms) ✓ Should compute key (66ms) ✓ Should add a node to the whitelist and then permit that node (165ms) ✓ Should allow a connection between 2 added nodes ✓ Should remove a node from the whitelist and then NOT permit that node (103ms) 10 passing (1s) ```