mirror of
https://github.com/lens-protocol/core.git
synced 2026-01-13 16:07:56 -05:00
101 lines
3.9 KiB
Solidity
101 lines
3.9 KiB
Solidity
// SPDX-License-Identifier: MIT
|
|
pragma solidity ^0.8.13;
|
|
|
|
import 'test/base/BaseTest.t.sol';
|
|
import {PermissionlessCreator} from 'contracts/misc/PermissionlessCreator.sol';
|
|
import {CreditsFaucet} from 'contracts/misc/CreditsFaucet.sol';
|
|
|
|
contract CreditsFaucetTest is BaseTest {
|
|
error OnlyOwner();
|
|
|
|
using stdJson for string;
|
|
|
|
PermissionlessCreator permissionlessCreator;
|
|
address permissionlessCreatorOwner = makeAddr('PERMISSIONLESS_CREATOR_OWNER');
|
|
|
|
CreditsFaucet creditsFaucet;
|
|
|
|
function setUp() public virtual override {
|
|
super.setUp();
|
|
|
|
if (fork) {
|
|
if (keyExists(json, string(abi.encodePacked('.', forkEnv, '.PermissionlessCreator')))) {
|
|
permissionlessCreator = PermissionlessCreator(
|
|
json.readAddress(string(abi.encodePacked('.', forkEnv, '.PermissionlessCreator')))
|
|
);
|
|
permissionlessCreatorOwner = permissionlessCreator.OWNER();
|
|
} else {
|
|
console.log('PermissionlessCreator key does not exist');
|
|
if (forkVersion == 1) {
|
|
console.log('No PermissionlessCreator address found - deploying new one');
|
|
permissionlessCreator = new PermissionlessCreator(
|
|
permissionlessCreatorOwner,
|
|
address(hub),
|
|
address(lensHandles),
|
|
address(tokenHandleRegistry)
|
|
);
|
|
} else {
|
|
console.log('No PermissionlessCreator address found in addressBook, which is required for V2');
|
|
revert('No PermissionlessCreator address found in addressBook, which is required for V2');
|
|
}
|
|
}
|
|
} else {
|
|
permissionlessCreator = new PermissionlessCreator(
|
|
permissionlessCreatorOwner,
|
|
address(hub),
|
|
address(lensHandles),
|
|
address(tokenHandleRegistry)
|
|
);
|
|
vm.startPrank(permissionlessCreatorOwner);
|
|
permissionlessCreator.setHandleCreationPrice(5 ether);
|
|
permissionlessCreator.setProfileCreationPrice(5 ether);
|
|
permissionlessCreator.setHandleLengthMin(5);
|
|
vm.stopPrank();
|
|
}
|
|
|
|
vm.prank(governance);
|
|
hub.whitelistProfileCreator(address(permissionlessCreator), true);
|
|
|
|
creditsFaucet = new CreditsFaucet(address(permissionlessCreator));
|
|
|
|
vm.prank(permissionlessCreatorOwner);
|
|
permissionlessCreator.addCreditProvider(address(creditsFaucet));
|
|
}
|
|
|
|
// Scenarios
|
|
function testIncreaseCredit(address profileCreator, address txSender) public {
|
|
vm.assume(profileCreator != address(0));
|
|
vm.assume(profileCreator != address(permissionlessCreator));
|
|
vm.assume(profileCreator != address(creditsFaucet));
|
|
vm.assume(txSender != address(0));
|
|
vm.assume(txSender != address(permissionlessCreator));
|
|
vm.assume(txSender != address(creditsFaucet));
|
|
|
|
uint256 creditsBefore = permissionlessCreator.getCreditBalance(profileCreator);
|
|
|
|
vm.prank(txSender);
|
|
creditsFaucet.getCredits(profileCreator, 123);
|
|
|
|
uint256 creditsAfter = permissionlessCreator.getCreditBalance(profileCreator);
|
|
|
|
assertEq(creditsBefore + 123, creditsAfter);
|
|
}
|
|
|
|
function testDecreaseCredit(address profileCreator) public {
|
|
vm.assume(profileCreator != address(0));
|
|
vm.assume(profileCreator != address(permissionlessCreator));
|
|
vm.assume(profileCreator != address(creditsFaucet));
|
|
|
|
creditsFaucet.getCredits(profileCreator, 123456);
|
|
|
|
uint256 creditsBefore = permissionlessCreator.getCreditBalance(profileCreator);
|
|
|
|
vm.prank(profileCreator);
|
|
creditsFaucet.burnCredits(123);
|
|
|
|
uint256 creditsAfter = permissionlessCreator.getCreditBalance(profileCreator);
|
|
|
|
assertEq(creditsBefore - 123, creditsAfter);
|
|
}
|
|
}
|