1import { IKeyringPair } from '@polkadot/types/types';2import privateKey from './substrate/privateKey';3import usingApi from './substrate/substrate-api';4import waitNewBlocks from './substrate/wait-new-blocks';5import { deployFlipper, toggleFlipValueExpectFailure, toggleFlipValueExpectSuccess } from './util/contracthelpers';6import {7 enableContractSponsoringExpectSuccess,8 findUnusedAddress,9 setContractSponsoringRateLimitExpectFailure,10 setContractSponsoringRateLimitExpectSuccess,11} from './util/helpers';1213describe('Integration Test setContractSponsoringRateLimit', () => {14 it('ensure sponsored contract can\'t be called twice without pause for free', async () => {15 await usingApi(async (api) => {16 const user = await findUnusedAddress(api);1718 const [flipper, deployer] = await deployFlipper(api);19 await enableContractSponsoringExpectSuccess(deployer, flipper.address, true);20 await setContractSponsoringRateLimitExpectSuccess(deployer, flipper.address, 10);21 await toggleFlipValueExpectSuccess(user, flipper);22 await toggleFlipValueExpectFailure(user, flipper);23 });24 });2526 it('ensure sponsored contract can be called twice with pause for free', async () => {27 await usingApi(async (api) => {28 const user = await findUnusedAddress(api);2930 const [flipper, deployer] = await deployFlipper(api);31 await enableContractSponsoringExpectSuccess(deployer, flipper.address, true);32 await setContractSponsoringRateLimitExpectSuccess(deployer, flipper.address, 1);33 await toggleFlipValueExpectSuccess(user, flipper);34 await waitNewBlocks(api, 1);35 await toggleFlipValueExpectSuccess(user, flipper);36 });37 });38});3940describe('Negative Integration Test setContractSponsoringRateLimit', () => {41 let alice: IKeyringPair;4243 before(async () => {44 alice = privateKey('//Alice');45 });4647 it('fails when called for non-contract address', async () => {48 await usingApi(async (api) => {49 const user = await findUnusedAddress(api);5051 await setContractSponsoringRateLimitExpectFailure(alice, user.address, 1);52 });53 });5455 it('fails when called by non-owning user', async () => {56 await usingApi(async (api) => {57 const [flipper, _] = await deployFlipper(api);5859 await setContractSponsoringRateLimitExpectFailure(alice, flipper.address, 1);60 });61 });62});