Skip to content

Commit

Permalink
(test): Remove unnecessary fuzzing from Functions OnTokenTransfer tes…
Browse files Browse the repository at this point in the history
…ts (#11517)

* (test): Remove unnecessary fuzzing from Functions OnTokenTransfer tests

* Update gas snapshot
  • Loading branch information
justinkaseman authored Dec 8, 2023
1 parent 06656fa commit 1b357f6
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 41 deletions.
12 changes: 6 additions & 6 deletions contracts/gas-snapshots/functions.gas-snapshot
Original file line number Diff line number Diff line change
Expand Up @@ -142,11 +142,11 @@ FunctionsSubscriptions_GetSubscriptionsInRange:test_GetSubscriptionsInRange_Reve
FunctionsSubscriptions_GetSubscriptionsInRange:test_GetSubscriptionsInRange_RevertIfStartIsAfterEnd() (gas: 13459)
FunctionsSubscriptions_GetSubscriptionsInRange:test_GetSubscriptionsInRange_Success() (gas: 59592)
FunctionsSubscriptions_GetTotalBalance:test_GetTotalBalance_Success() (gas: 15010)
FunctionsSubscriptions_OnTokenTransfer:test_OnTokenTransfer_RevertIfCallerIsNoCalldata(uint96) (runs: 256, μ: 43774, ~: 45548)
FunctionsSubscriptions_OnTokenTransfer:test_OnTokenTransfer_RevertIfCallerIsNoSubscription(uint96) (runs: 256, μ: 46286, ~: 48060)
FunctionsSubscriptions_OnTokenTransfer:test_OnTokenTransfer_RevertIfCallerIsNotLink(uint96) (runs: 256, μ: 14295, ~: 14295)
FunctionsSubscriptions_OnTokenTransfer:test_OnTokenTransfer_RevertIfPaused(uint96) (runs: 256, μ: 51443, ~: 53040)
FunctionsSubscriptions_OnTokenTransfer:test_OnTokenTransfer_Success(uint96) (runs: 256, μ: 86057, ~: 89604)
FunctionsSubscriptions_OnTokenTransfer:test_OnTokenTransfer_RevertIfCallerIsNoCalldata() (gas: 39939)
FunctionsSubscriptions_OnTokenTransfer:test_OnTokenTransfer_RevertIfCallerIsNoSubscription() (gas: 42404)
FunctionsSubscriptions_OnTokenTransfer:test_OnTokenTransfer_RevertIfCallerIsNotLink() (gas: 13441)
FunctionsSubscriptions_OnTokenTransfer:test_OnTokenTransfer_RevertIfPaused() (gas: 47347)
FunctionsSubscriptions_OnTokenTransfer:test_OnTokenTransfer_Success(uint96) (runs: 256, μ: 81598, ~: 81598)
FunctionsSubscriptions_OracleWithdraw:test_OracleWithdraw_RevertIfAmountMoreThanBalance() (gas: 20745)
FunctionsSubscriptions_OracleWithdraw:test_OracleWithdraw_RevertIfBalanceInvariant() (gas: 189)
FunctionsSubscriptions_OracleWithdraw:test_OracleWithdraw_RevertIfNoAmount() (gas: 15638)
Expand Down Expand Up @@ -177,7 +177,7 @@ FunctionsSubscriptions_ProposeSubscriptionOwnerTransfer:test_ProposeSubscription
FunctionsSubscriptions_ProposeSubscriptionOwnerTransfer:test_ProposeSubscriptionOwnerTransfer_Success() (gas: 68196)
FunctionsSubscriptions_ProposeSubscriptionOwnerTransfer:test_ProposeSubscriptionOwnerTransfer_SuccessChangeProposedOwner() (gas: 82749)
FunctionsSubscriptions_RecoverFunds:test_OwnerCancelSubscription_RevertIfNotOwner() (gas: 15554)
FunctionsSubscriptions_RecoverFunds:test_RecoverFunds_Success(uint64) (runs: 256, μ: 41717, ~: 41721)
FunctionsSubscriptions_RecoverFunds:test_RecoverFunds_Success() (gas: 41111)
FunctionsSubscriptions_RemoveConsumer:test_RemoveConsumer_RevertIfInvalidConsumer() (gas: 30260)
FunctionsSubscriptions_RemoveConsumer:test_RemoveConsumer_RevertIfNoSubscription() (gas: 15019)
FunctionsSubscriptions_RemoveConsumer:test_RemoveConsumer_RevertIfNotAllowedSender() (gas: 57800)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,12 +130,8 @@ contract FunctionsSubscriptions_OwnerCancelSubscription is FunctionsSubscription
contract FunctionsSubscriptions_RecoverFunds is FunctionsRouterSetup {
event FundsRecovered(address to, uint256 amount);

function test_RecoverFunds_Success(uint64 fundsTransferred) public {
//amount must be less than LINK total supply
vm.assume(fundsTransferred < 1_000_000_000 * 1e18);
vm.assume(fundsTransferred > 0);

// uint256 fundsTransferred = 1 * 1e18; // 1 LINK
function test_RecoverFunds_Success() public {
uint256 fundsTransferred = 1 * 1e18; // 1 LINK
s_linkToken.transfer(address(s_functionsRouter), fundsTransferred);

// topic0 (function signature, always checked), NOT topic1 (false), NOT topic2 (false), NOT topic3 (false), and data (true).
Expand Down Expand Up @@ -320,58 +316,43 @@ contract FunctionsSubscriptions_OnTokenTransfer is FunctionsClientSetup {
s_functionsRouter.addConsumer(s_subscriptionId, address(s_functionsClient));
}

function test_OnTokenTransfer_RevertIfPaused(uint96 fundingAmount) public {
// Funding amount must be less than LINK total supply
function test_OnTokenTransfer_RevertIfPaused() public {
// Funding amount must be less than or equal to LINK total supply
uint256 totalSupplyJuels = 1_000_000_000 * 1e18;
vm.assume(fundingAmount <= totalSupplyJuels);
vm.assume(fundingAmount >= 0);

s_functionsRouter.pause();
vm.expectRevert("Pausable: paused");
s_linkToken.transferAndCall(address(s_functionsRouter), fundingAmount, abi.encode(s_subscriptionId));
s_linkToken.transferAndCall(address(s_functionsRouter), totalSupplyJuels, abi.encode(s_subscriptionId));
}

function test_OnTokenTransfer_RevertIfCallerIsNotLink(uint96 fundingAmount) public {
// Funding amount must be less than LINK total supply
function test_OnTokenTransfer_RevertIfCallerIsNotLink() public {
// Funding amount must be less than or equal to LINK total supply
uint256 totalSupplyJuels = 1_000_000_000 * 1e18;
vm.assume(fundingAmount <= totalSupplyJuels);
vm.assume(fundingAmount >= 0);

vm.expectRevert(FunctionsSubscriptions.OnlyCallableFromLink.selector);
s_functionsRouter.onTokenTransfer(address(s_functionsRouter), fundingAmount, abi.encode(s_subscriptionId));
s_functionsRouter.onTokenTransfer(address(s_functionsRouter), totalSupplyJuels, abi.encode(s_subscriptionId));
}

function test_OnTokenTransfer_RevertIfCallerIsNoCalldata(uint96 fundingAmount) public {
// Funding amount must be less than LINK total supply
function test_OnTokenTransfer_RevertIfCallerIsNoCalldata() public {
// Funding amount must be less than or equal to LINK total supply
uint256 totalSupplyJuels = 1_000_000_000 * 1e18;
vm.assume(fundingAmount <= totalSupplyJuels);
vm.assume(fundingAmount >= 0);

vm.expectRevert(FunctionsSubscriptions.InvalidCalldata.selector);
s_linkToken.transferAndCall(address(s_functionsRouter), fundingAmount, new bytes(0));
s_linkToken.transferAndCall(address(s_functionsRouter), totalSupplyJuels, new bytes(0));
}

function test_OnTokenTransfer_RevertIfCallerIsNoSubscription(uint96 fundingAmount) public {
// Funding amount must be less than LINK total supply
function test_OnTokenTransfer_RevertIfCallerIsNoSubscription() public {
// Funding amount must be less than or equal to LINK total supply
uint256 totalSupplyJuels = 1_000_000_000 * 1e18;
vm.assume(fundingAmount <= totalSupplyJuels);
vm.assume(fundingAmount >= 0);

vm.expectRevert(FunctionsSubscriptions.InvalidSubscription.selector);
uint64 invalidSubscriptionId = 123456789;
s_linkToken.transferAndCall(address(s_functionsRouter), fundingAmount, abi.encode(invalidSubscriptionId));
s_linkToken.transferAndCall(address(s_functionsRouter), totalSupplyJuels, abi.encode(invalidSubscriptionId));
}

function test_OnTokenTransfer_Success(uint96 fundingAmount) public {
// Funding amount must be less than LINK total supply
uint256 totalSupplyJuels = 1_000_000_000 * 1e18;
// Some of the total supply is already in the subscription account
vm.assume(fundingAmount <= totalSupplyJuels);
vm.assume(fundingAmount >= 0);

s_linkToken.transferAndCall(address(s_functionsRouter), fundingAmount, abi.encode(s_subscriptionId));
s_linkToken.transferAndCall(address(s_functionsRouter), totalSupplyJuels, abi.encode(s_subscriptionId));
uint96 subscriptionBalanceAfter = s_functionsRouter.getSubscription(s_subscriptionId).balance;
assertEq(fundingAmount, subscriptionBalanceAfter);
assertEq(totalSupplyJuels, subscriptionBalanceAfter);
}
}

Expand Down

0 comments on commit 1b357f6

Please sign in to comment.