浏览代码

Closing time must be strictly after opening time. (#1440)

Nicolás Venturo 7 年之前
父节点
当前提交
1c5f16ae26
共有 2 个文件被更改,包括 9 次插入3 次删除
  1. 1 1
      contracts/crowdsale/validation/TimedCrowdsale.sol
  2. 8 2
      test/crowdsale/TimedCrowdsale.test.js

+ 1 - 1
contracts/crowdsale/validation/TimedCrowdsale.sol

@@ -29,7 +29,7 @@ contract TimedCrowdsale is Crowdsale {
   constructor(uint256 openingTime, uint256 closingTime) internal {
     // solium-disable-next-line security/no-block-members
     require(openingTime >= block.timestamp);
-    require(closingTime >= openingTime);
+    require(closingTime > openingTime);
 
     _openingTime = openingTime;
     _closingTime = closingTime;

+ 8 - 2
test/crowdsale/TimedCrowdsale.test.js

@@ -29,18 +29,24 @@ contract('TimedCrowdsale', function ([_, investor, wallet, purchaser]) {
     this.token = await SimpleToken.new();
   });
 
-  it('rejects an opening time in the past', async function () {
+  it('reverts if the opening time is in the past', async function () {
     await shouldFail.reverting(TimedCrowdsaleImpl.new(
       (await time.latest()) - time.duration.days(1), this.closingTime, rate, wallet, this.token.address
     ));
   });
 
-  it('rejects a closing time before the opening time', async function () {
+  it('reverts if the closing time is before the opening time', async function () {
     await shouldFail.reverting(TimedCrowdsaleImpl.new(
       this.openingTime, this.openingTime - time.duration.seconds(1), rate, wallet, this.token.address
     ));
   });
 
+  it('reverts if the closing time equals the opening time', async function () {
+    await shouldFail.reverting(TimedCrowdsaleImpl.new(
+      this.openingTime, this.openingTime, rate, wallet, this.token.address
+    ));
+  });
+
   context('with crowdsale', function () {
     beforeEach(async function () {
       this.crowdsale = await TimedCrowdsaleImpl.new(