From 0a56628f2928f3cce3272074b8b55cc67bdcd2fb Mon Sep 17 00:00:00 2001 From: Sergei Tikhomirov Date: Thu, 3 Oct 2024 14:51:01 +0200 Subject: [PATCH] add test for zero grace period --- test/WakuRlnV2.t.sol | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/test/WakuRlnV2.t.sol b/test/WakuRlnV2.t.sol index 2a64808..ea92926 100644 --- a/test/WakuRlnV2.t.sol +++ b/test/WakuRlnV2.t.sol @@ -205,7 +205,7 @@ contract WakuRlnV2Test is Test { vm.warp(gracePeriodStartTimestamp); assertTrue(w.isInGracePeriod(idCommitment)); - assertFalse(w.isExpired(idCommitment)); // FIXME: what if grace period duration == 0? + assertFalse(w.isExpired(idCommitment)); uint256[] memory commitmentsToExtend = new uint256[](1); commitmentsToExtend[0] = idCommitment; @@ -242,6 +242,42 @@ contract WakuRlnV2Test is Test { w.extendMemberships(commitmentsToExtend); } + function test__ValidRegistrationNoGracePeriod(uint32 membershipRateLimit) external { + vm.pauseGasMetering(); + uint256 idCommitment = 2; + (, uint256 price) = w.priceCalculator().calculate(membershipRateLimit); + vm.assume( + w.minMembershipRateLimit() <= membershipRateLimit && membershipRateLimit <= w.maxMembershipRateLimit() + ); + vm.assume(w.isValidMembershipRateLimit(membershipRateLimit)); + + vm.startPrank(w.owner()); + w.setGracePeriodDuration(0); + vm.stopPrank(); + + vm.resumeGasMetering(); + + token.approve(address(w), price); + w.register(idCommitment, membershipRateLimit); + + (,, uint256 gracePeriodStartTimestamp, uint32 gracePeriodDuration,,,,) = w.memberships(idCommitment); + + assertEq(gracePeriodDuration, 0); + + assertFalse(w.isInGracePeriod(idCommitment)); + assertFalse(w.isExpired(idCommitment)); + + uint256 expectedExpirationTimestamp = gracePeriodStartTimestamp + uint256(gracePeriodDuration); + uint256 membershipExpirationTimestamp = w.membershipExpirationTimestamp(idCommitment); + + assertEq(expectedExpirationTimestamp, membershipExpirationTimestamp); + + vm.warp(membershipExpirationTimestamp); + + assertFalse(w.isInGracePeriod(idCommitment)); + assertTrue(w.isExpired(idCommitment)); + } + function test__ValidRegistrationExtendSingleMembership(uint32 membershipRateLimit) external { vm.pauseGasMetering(); uint256 idCommitment = 2;