UUPSUpgradeableMock.sol 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. // SPDX-License-Identifier: MIT
  2. pragma solidity ^0.8.19;
  3. import {UUPSUpgradeable} from "../../proxy/utils/UUPSUpgradeable.sol";
  4. import {ERC1967Utils} from "../../proxy/ERC1967/ERC1967Utils.sol";
  5. contract NonUpgradeableMock {
  6. uint256 internal _counter;
  7. function current() external view returns (uint256) {
  8. return _counter;
  9. }
  10. function increment() external {
  11. ++_counter;
  12. }
  13. }
  14. contract UUPSUpgradeableMock is NonUpgradeableMock, UUPSUpgradeable {
  15. // Not having any checks in this function is dangerous! Do not do this outside tests!
  16. function _authorizeUpgrade(address) internal override {}
  17. }
  18. contract UUPSUpgradeableUnsafeMock is UUPSUpgradeableMock {
  19. function upgradeTo(address newImplementation) public override {
  20. ERC1967Utils.upgradeToAndCall(newImplementation, bytes(""), false);
  21. }
  22. function upgradeToAndCall(address newImplementation, bytes memory data) public payable override {
  23. ERC1967Utils.upgradeToAndCall(newImplementation, data, false);
  24. }
  25. }
  26. contract UUPSUnsupportedProxiableUUID is UUPSUpgradeableMock {
  27. function proxiableUUID() external pure override returns (bytes32) {
  28. return keccak256("invalid UUID");
  29. }
  30. }