1234567891011121314151617import {expect} from 'chai';18import {contractHelpers, createEthAccountWithBalance, deployFlipper, itWeb3} from './util/helpers';1920describe('EVM allowlist', () => {21 itWeb3('Contract allowlist can be toggled', async ({api, web3, privateKeyWrapper}) => {22 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);23 const flipper = await deployFlipper(web3, owner);2425 const helpers = contractHelpers(web3, owner);2627 28 expect(await helpers.methods.allowlistEnabled(flipper.options.address).call()).to.be.false;2930 31 await helpers.methods.toggleAllowlist(flipper.options.address, true).send({from: owner});32 expect(await helpers.methods.allowlistEnabled(flipper.options.address).call()).to.be.true;3334 35 await helpers.methods.toggleAllowlist(flipper.options.address, false).send({from: owner});36 expect(await helpers.methods.allowlistEnabled(flipper.options.address).call()).to.be.false;37 });3839 itWeb3('Non-allowlisted user can\'t call contract with allowlist enabled', async ({api, web3, privateKeyWrapper}) => {40 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);41 const flipper = await deployFlipper(web3, owner);42 const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);4344 const helpers = contractHelpers(web3, owner);4546 47 await flipper.methods.flip().send({from: caller});48 expect(await flipper.methods.getValue().call()).to.be.true;4950 51 await helpers.methods.toggleAllowlist(flipper.options.address, true).send({from: owner});52 await expect(flipper.methods.flip().send({from: caller})).to.rejected;53 expect(await flipper.methods.getValue().call()).to.be.true;5455 56 await helpers.methods.toggleAllowed(flipper.options.address, caller, true).send({from: owner});57 await flipper.methods.flip().send({from: caller});58 expect(await flipper.methods.getValue().call()).to.be.false;59 });60});