Remove CanReclaimToken (#1306)
This commit is contained in:
committed by
Francisco Giordano
parent
6cae0f458d
commit
bafdcf0701
@ -1,26 +0,0 @@
|
|||||||
pragma solidity ^0.4.24;
|
|
||||||
|
|
||||||
import "./Ownable.sol";
|
|
||||||
import "../token/ERC20/IERC20.sol";
|
|
||||||
import "../token/ERC20/SafeERC20.sol";
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @title Contracts that should be able to recover tokens
|
|
||||||
* @author SylTi
|
|
||||||
* @dev This allow a contract to recover any ERC20 token received in a contract by transferring the balance to the contract owner.
|
|
||||||
* This will prevent any accidental loss of tokens.
|
|
||||||
*/
|
|
||||||
contract CanReclaimToken is Ownable {
|
|
||||||
using SafeERC20 for IERC20;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dev Reclaim all ERC20 compatible tokens
|
|
||||||
* @param token ERC20 The address of the token contract
|
|
||||||
*/
|
|
||||||
function reclaimToken(IERC20 token) external onlyOwner {
|
|
||||||
uint256 balance = token.balanceOf(this);
|
|
||||||
token.safeTransfer(owner(), balance);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,40 +0,0 @@
|
|||||||
const { expectThrow } = require('../helpers/expectThrow');
|
|
||||||
|
|
||||||
const CanReclaimToken = artifacts.require('CanReclaimToken');
|
|
||||||
const ERC20Mock = artifacts.require('ERC20Mock');
|
|
||||||
|
|
||||||
const BigNumber = web3.BigNumber;
|
|
||||||
|
|
||||||
require('chai')
|
|
||||||
.use(require('chai-bignumber')(BigNumber))
|
|
||||||
.should();
|
|
||||||
|
|
||||||
contract('CanReclaimToken', function ([_, owner, anyone]) {
|
|
||||||
let token = null;
|
|
||||||
let canReclaimToken = null;
|
|
||||||
|
|
||||||
beforeEach(async function () {
|
|
||||||
// Create contract and token
|
|
||||||
token = await ERC20Mock.new(owner, 100, { from: owner });
|
|
||||||
canReclaimToken = await CanReclaimToken.new({ from: owner });
|
|
||||||
|
|
||||||
// Force token into contract
|
|
||||||
await token.transfer(canReclaimToken.address, 10, { from: owner });
|
|
||||||
(await token.balanceOf(canReclaimToken.address)).should.be.bignumber.equal(10);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should allow owner to reclaim tokens', async function () {
|
|
||||||
const ownerStartBalance = await token.balanceOf(owner);
|
|
||||||
await canReclaimToken.reclaimToken(token.address, { from: owner });
|
|
||||||
const ownerFinalBalance = await token.balanceOf(owner);
|
|
||||||
ownerFinalBalance.sub(ownerStartBalance).should.be.bignumber.equal(10);
|
|
||||||
|
|
||||||
(await token.balanceOf(canReclaimToken.address)).should.be.bignumber.equal(0);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should allow only owner to reclaim tokens', async function () {
|
|
||||||
await expectThrow(
|
|
||||||
canReclaimToken.reclaimToken(token.address, { from: anyone })
|
|
||||||
);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
Reference in New Issue
Block a user