123456import { IKeyringPair } from '@polkadot/types/types';7import chai from 'chai';8import chaiAsPromised from 'chai-as-promised';9import privateKey from './substrate/privateKey';10import usingApi from './substrate/substrate-api';11import { deployFlipper, getFlipValue, toggleFlipValueExpectSuccess } from './util/contracthelpers';12import {13 enableContractSponsoringExpectFailure,14 enableContractSponsoringExpectSuccess,15 findUnusedAddress,16 setContractSponsoringRateLimitExpectSuccess,17} from './util/helpers';1819chai.use(chaiAsPromised);20const expect = chai.expect;2122describe('Integration Test enableContractSponsoring', () => {23 it('ensure tx fee is paid from endowment', async () => {24 await usingApi(async (api) => {25 const user = await findUnusedAddress(api);2627 const [flipper, deployer] = await deployFlipper(api);28 await enableContractSponsoringExpectSuccess(deployer, flipper.address, true);29 await setContractSponsoringRateLimitExpectSuccess(deployer, flipper.address, 1);30 await toggleFlipValueExpectSuccess(user, flipper);3132 expect(await getFlipValue(flipper, deployer)).to.be.false;33 });34 });3536 it('ensure it can be enabled twice', async () => {37 await usingApi(async (api) => {38 const [flipper, deployer] = await deployFlipper(api);3940 await enableContractSponsoringExpectSuccess(deployer, flipper.address, true);41 await enableContractSponsoringExpectSuccess(deployer, flipper.address, true);42 });43 });4445 it('ensure it can be disabled twice', async () => {46 await usingApi(async (api) => {47 const [flipper, deployer] = await deployFlipper(api);4849 await enableContractSponsoringExpectSuccess(deployer, flipper.address, true);50 await enableContractSponsoringExpectSuccess(deployer, flipper.address, false);51 await enableContractSponsoringExpectSuccess(deployer, flipper.address, false);52 });53 });5455 it('ensure it can be re-enabled', async () => {56 await usingApi(async (api) => {57 const [flipper, deployer] = await deployFlipper(api);5859 await enableContractSponsoringExpectSuccess(deployer, flipper.address, true);60 await enableContractSponsoringExpectSuccess(deployer, flipper.address, false);61 await enableContractSponsoringExpectSuccess(deployer, flipper.address, true);62 });63 });6465});6667describe('Negative Integration Test enableContractSponsoring', () => {68 let alice: IKeyringPair;6970 before(async () => {71 alice = privateKey('//Alice');72 });7374 it('fails when called for non-contract address', async () => {75 await usingApi(async (api) => {76 const user = await findUnusedAddress(api);7778 await enableContractSponsoringExpectFailure(alice, user.address, true);79 });80 });8182 it('fails when called by non-owning user', async () => {83 await usingApi(async (api) => {84 const [flipper, _] = await deployFlipper(api);8586 await enableContractSponsoringExpectFailure(alice, flipper.address, true);87 });88 });89});