Files
openzeppelin-contracts/test/ReentrancyGuard.test.js
2018-01-02 15:58:35 +00:00

32 lines
1.0 KiB
JavaScript

import expectThrow from './helpers/expectThrow';
const ReentrancyMock = artifacts.require('./mocks/ReentrancyMock.sol');
const ReentrancyAttack = artifacts.require('./mocks/ReentrancyAttack.sol');
contract('ReentrancyGuard', function (accounts) {
let reentrancyMock;
beforeEach(async function () {
reentrancyMock = await ReentrancyMock.new();
let initialCounter = await reentrancyMock.counter();
assert.equal(initialCounter, 0);
});
it('should not allow remote callback', async function () {
let attacker = await ReentrancyAttack.new();
await expectThrow(reentrancyMock.countAndCall(attacker.address));
});
// The following are more side-effects than intended behaviour:
// I put them here as documentation, and to monitor any changes
// in the side-effects.
it('should not allow local recursion', async function () {
await expectThrow(reentrancyMock.countLocalRecursive(10));
});
it('should not allow indirect local recursion', async function () {
await expectThrow(reentrancyMock.countThisRecursive(10));
});
});