1import {expect} from 'chai';2import {contractHelpers, createEthAccount, createEthAccountWithBalance, deployFlipper, itWeb3} from './util/helpers';34describe('EVM allowlist', () => {5 itWeb3('Contract allowlist can be toggled', async ({api, web3}) => {6 const owner = await createEthAccountWithBalance(api, web3);7 const flipper = await deployFlipper(web3, owner);8 const randomUser = createEthAccount(web3);910 const helpers = contractHelpers(web3, owner);1112 13 expect(await helpers.methods.allowlistEnabled(flipper.options.address).call()).to.be.false;14 expect(await helpers.methods.allowed(flipper.options.address, randomUser).call()).to.be.true;1516 17 await helpers.methods.toggleAllowlist(flipper.options.address, true).send({from: owner});18 expect(await helpers.methods.allowlistEnabled(flipper.options.address).call()).to.be.true;19 expect(await helpers.methods.allowed(flipper.options.address, randomUser).call()).to.be.false;2021 22 await helpers.methods.toggleAllowlist(flipper.options.address, false).send({from: owner});23 expect(await helpers.methods.allowlistEnabled(flipper.options.address).call()).to.be.false;24 expect(await helpers.methods.allowed(flipper.options.address, randomUser).call()).to.be.true;25 });2627 itWeb3('Non-allowlisted user can\'t call contract with allowlist enabled', async ({api, web3}) => {28 const owner = await createEthAccountWithBalance(api, web3);29 const flipper = await deployFlipper(web3, owner);30 const caller = await createEthAccountWithBalance(api, web3);3132 const helpers = contractHelpers(web3, owner);3334 35 await flipper.methods.flip().send({from: caller});36 expect(await flipper.methods.getValue().call()).to.be.true;3738 39 await helpers.methods.toggleAllowlist(flipper.options.address, true).send({from: owner});40 await expect(flipper.methods.flip().send({from: caller})).to.rejected;41 expect(await flipper.methods.getValue().call()).to.be.true;4243 44 await helpers.methods.toggleAllowed(flipper.options.address, caller, true).send({from: owner});45 await flipper.methods.flip().send({from: caller});46 expect(await flipper.methods.getValue().call()).to.be.false;47 });48});