Skip to content

Commit

Permalink
adjust test
Browse files Browse the repository at this point in the history
  • Loading branch information
rapidddenis committed Sep 18, 2024
1 parent c2e0e62 commit 3a7cc0b
Show file tree
Hide file tree
Showing 35 changed files with 384 additions and 377 deletions.
2 changes: 1 addition & 1 deletion contracts/staking/Staking.sol
Original file line number Diff line number Diff line change
Expand Up @@ -737,7 +737,7 @@ contract Staking is
// initialize component
__Component_init(
registry.getAuthority(),
address(registry),
registryAddress,
registry.getNftId(), // parent nft id
CONTRACT_NAME,
STAKING(),
Expand Down
29 changes: 15 additions & 14 deletions test/ProxyManager.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
pragma solidity ^0.8.20;

import {Test, Vm, console} from "../lib/forge-std/src/Test.sol";
import {VersionLib} from "../contracts/type/Version.sol";
import {IVersionable} from "../contracts/upgradeability/IVersionable.sol";
import {VersionLib, VersionPartLib, VersionPart} from "../contracts/type/Version.sol";
import {IUpgradeable} from "../contracts/upgradeability/IUpgradeable.sol";
import {ProxyManager} from "../contracts/upgradeability/ProxyManager.sol";

import {GifTest} from "./base/GifTest.sol";
Expand All @@ -20,42 +20,43 @@ contract ProxyManagerTest is GifTest {
assertTrue(address(proxyManager) != address(0), "proxyManager address zero");

bytes memory initializationData = abi.encode(uint(42));
IVersionable versionable = proxyManager.initialize(
IUpgradeable upgradeable = proxyManager.initialize(
address(registry),
address(new ContractV01()),
initializationData,
bytes32(""));
// solhint-disable-next-line
console.log("versionable[address]", address(versionable));
assertTrue(address(versionable) != address(0), "versionable address zero");
console.log("upgradeable[address]", address(upgradeable));
assertTrue(address(upgradeable) != address(0), "upgradeable address zero");

// solhint-disable-next-line
console.log("version[int]", versionable.getVersion().toInt());
assertTrue(versionable.getVersion() == VersionLib.toVersion(1,0,0), "version not (1,0,0)");
console.log("version[int]", upgradeable.getVersion().toInt());
assertTrue(upgradeable.getVersion() == VersionLib.toVersion(3,0,0), "version not (3,0,0)");

ContractV01 productV1 = ContractV01(address(versionable));
ContractV01 productV1 = ContractV01(address(upgradeable));
assertEq(productV1.getDataV01(), "hi from version 1", "unexpected message for getDataV01");

ContractV02 productV2 = ContractV02(address(versionable));
ContractV02 productV2 = ContractV02(address(upgradeable));
vm.expectRevert();
productV2.getDataV02();
}

function testProductV01DeployAndUpgrade() public {

ProxyManager proxyManager = new ProxyManager();
VersionPart release = VersionPartLib.toVersionPart(4);
bytes memory initializationData = abi.encode(uint(0));
bytes memory upgradeData = abi.encode(uint(0));
IVersionable versionable = proxyManager.initialize(
IUpgradeable upgradeable = proxyManager.initialize(
address(registry),
address(new ContractV01()),
address(new ContractV01()),
initializationData,
bytes32(""));
proxyManager.upgrade(address(new ContractV02()), upgradeData);

assertTrue(versionable.getVersion() == VersionLib.toVersion(1,0,1), "version not (1,0,1)");
assertTrue(upgradeable.getVersion() == VersionLib.toVersion(3,0,1), "version not (3,0,1)");

ContractV02 productV2 = ContractV02(address(versionable));
ContractV02 productV2 = ContractV02(address(upgradeable));
assertEq(productV2.getDataV01(), "hi from version 1", "unexpected message for getDataV01");
assertEq(productV2.getDataV02(), "hi from version 2", "unexpected message for getDataV02");
}
Expand All @@ -69,7 +70,7 @@ contract ProxyManagerTest is GifTest {
bytes memory initializationData = abi.encode(uint(0));
proxyManager.initialize(
address(registry),
address(new ContractV01()),
address(new ContractV01()),
initializationData,
bytes32(""));

Expand Down
18 changes: 10 additions & 8 deletions test/authorization/AccessAdmin.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,11 @@ contract AccessAdminForTesting is AccessAdmin {
RoleId internal _managerRoleId;

// constructor as in registry admin
constructor() {
constructor(VersionPart release) {
initialize(
address(new AccessManagerCloneable()),
"TestAdmin");
"TestAdmin",
release);
}

function completeSetup(
Expand All @@ -45,10 +46,11 @@ contract AccessAdminForTesting is AccessAdmin {
reinitializer(type(uint8).max)
onlyDeployer()
{
// link access manager to registry and release
AccessManagerCloneable(authority()).completeSetup(
registry,
release);
// link access manager to registry
//AccessManagerCloneable(authority()).completeSetup(
// registry);

__RegistryLinked_init(registry);

// create targets for testing
_createUncheckedTarget(address(this), "AccessAdmin", IAccess.TargetType.Core);
Expand Down Expand Up @@ -255,12 +257,12 @@ contract AccessAdminBaseTest is Test {
vm.startPrank(accessAdminDeployer);

// create access admin for testing
accessAdmin = new AccessAdminForTesting();
release = VersionPartLib.toVersionPart(3);
accessAdmin = new AccessAdminForTesting(release);

// create registry and release version
registryAdmin = new RegistryAdmin();
registry = new Registry(registryAdmin, globalRegistry);
release = VersionPartLib.toVersionPart(3);

// complete setup (which links internal acccess manager to registry and release)
// and grants manager role to deployer
Expand Down
18 changes: 4 additions & 14 deletions test/authorization/AccessManagerCloneable.t.sol
Original file line number Diff line number Diff line change
@@ -1,32 +1,22 @@
// SPDX-License-Identifier: Apache-2.0
pragma solidity ^0.8.20;

import {IAccessManaged} from "../../lib/openzeppelin-contracts/contracts/access/manager/IAccessManaged.sol";
import {Test, console} from "../../lib/forge-std/src/Test.sol";


import {AccessManagerCloneable} from "../../contracts/authorization/AccessManagerCloneable.sol";
import {AccessManagedMock} from "../mock/AccessManagedMock.sol";
import {ContractLib} from "../../contracts/shared/ContractLib.sol";
import {RegistryAdmin} from "../../contracts/registry/RegistryAdmin.sol";
import {Registry} from "../../contracts/registry/Registry.sol";
import {VersionPart, VersionPartLib} from "../../contracts/type/Version.sol";

contract AccessManagerCloneableTesting is AccessManagerCloneable {
function setRelase(VersionPart release) public {
_checkAndSetRelease(release);
}
}

contract AccessManagerCloneableTest is Test {

address public admin = makeAddr("accessManagerAdmin");
AccessManagerCloneableTesting public accessManager;
AccessManagerCloneable public accessManager;

function setUp() public virtual {
accessManager = new AccessManagerCloneableTesting();
accessManager.initialize(admin);
accessManager.setRelase(VersionPartLib.toVersionPart(3));
VersionPart release = VersionPartLib.toVersionPart(3);
accessManager = new AccessManagerCloneable();
accessManager.initialize(admin, release);
}


Expand Down
16 changes: 4 additions & 12 deletions test/authorization/AccessManagerCloneableEx.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,7 @@ import {Test, console} from "../../lib/forge-std/src/Test.sol";


import {AccessManagerCloneable} from "../../contracts/authorization/AccessManagerCloneable.sol";
import {AccessManagerCloneableTest} from "./AccessManagerCloneable.t.sol";
import {AccessManagedMock} from "../mock/AccessManagedMock.sol";
import {RegistryAdmin} from "../../contracts/registry/RegistryAdmin.sol";
import {Registry} from "../../contracts/registry/Registry.sol";
import {VersionPart, VersionPartLib} from "../../contracts/type/Version.sol";


Expand All @@ -22,20 +19,15 @@ contract AccessManagerCloneableExtendedTest is Test {
address public admin = makeAddr("accessManagerAdmin");
AccessManagerCloneable public accessManager;

RegistryAdmin registryAdmin;
Registry registry;
AccessManagedMock accessManaged;

function setUp() public {
VersionPart release = VersionPartLib.toVersionPart(3);
accessManager = new AccessManagerCloneable();
accessManager.initialize(admin);
accessManager.initialize(admin, release);

registryAdmin = new RegistryAdmin();
registry = new Registry(registryAdmin, globalRegistry);

VersionPart version = VersionPartLib.toVersionPart(3);
vm.prank(admin);
accessManager.completeSetup(address(registry), version);
//vm.prank(admin);
//accessManager.completeSetup(address(registry));

accessManaged = new AccessManagedMock(address(accessManager));

Expand Down
2 changes: 0 additions & 2 deletions test/authorization/RegistryAdminEx.sol
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ contract RegistryAdminEx is RegistryAdmin {
function completeSetup(
address registry,
address authorization,
VersionPart release,
address gifAdmin,
address gifManager
)
Expand All @@ -26,7 +25,6 @@ contract RegistryAdminEx is RegistryAdmin {
super.completeSetup(
registry,
authorization,
release,
gifAdmin,
gifManager);

Expand Down
51 changes: 35 additions & 16 deletions test/base/GifDeployer.sol
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// SPDX-License-Identifier: Apache-2.0
pragma solidity ^0.8.20;

import {Create2} from "@openzeppelin/contracts/utils/Create2.sol";
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManager.sol";
import {Test, console} from "../../lib/forge-std/src/Test.sol";
Expand Down Expand Up @@ -70,7 +71,6 @@ import {StakingServiceManager} from "../../contracts/staking/StakingServiceManag

contract GifDeployer is Test {

uint8 public constant GIF_RELEASE = 3;
string public constant COMMIT_HASH = "1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a";

struct DeployedServiceInfo {
Expand All @@ -84,7 +84,7 @@ contract GifDeployer is Test {
address public registryOwner = makeAddr("registryOwner");
address public stakingOwner = registryOwner;
address public gifAdmin = registryOwner;
address public gifManager = registryOwner;
address public gifManager = makeAddr("gifManager"); // must be different from gifAdmin

// deploy core
IERC20Metadata public dip;
Expand Down Expand Up @@ -213,7 +213,6 @@ contract GifDeployer is Test {
registryAdmin.completeSetup(
address(registry),
address(new RegistryAuthorization(COMMIT_HASH)),
VersionPartLib.toVersionPart(GIF_RELEASE),
gifAdmin,
gifManager);

Expand All @@ -223,7 +222,6 @@ contract GifDeployer is Test {
// solhint-disable enable
}


function _deployRegistry(IERC20Metadata dip)
internal
returns (
Expand All @@ -233,12 +231,21 @@ contract GifDeployer is Test {
RegistryAdmin registryAdmin
)
{
console.log("gifManager ", gifManager);

address deployer = gifManager;
address globalRegistry = address(0x1234);
bytes32 salt = "0x1234";

address registryAddress = _computeRegistryAddress(deployer, globalRegistry, salt);
console.log("calculated registry address ", registryAddress);

console.log(" a) deploy registry admin");
registryAdmin = new RegistryAdmin();
registryAdmin = new RegistryAdmin{salt: salt}();

console.log(" b) deploy registry");
registry = new Registry(registryAdmin, globalRegistry);
registry = new Registry{salt: salt}(registryAdmin, address(0x1234));
require(address(registry) == registryAddress, "unexpected registry address");

console.log(" c) deploy release registry");
releaseRegistry = new ReleaseRegistry(registry);
Expand Down Expand Up @@ -494,19 +501,15 @@ contract GifDeployer is Test {
assertEq(a.nftId.toInt(), b.nftId.toInt(), "getObjectInfo(address).nftId returned unexpected value");
assertEq(a.parentNftId.toInt(), b.parentNftId.toInt(), "getObjectInfo(address).parentNftId returned unexpected value");
assertEq(a.objectType.toInt(), b.objectType.toInt(), "getObjectInfo(address).objectType returned unexpected value");
assertEq(a.release.toInt(), b.release.toInt(), "getObjectInfo(address).release returned unexpected value");
assertEq(a.objectAddress, b.objectAddress, "getObjectInfo(address).objectAddress returned unexpected value");
assertEq(a.initialOwner, b.initialOwner, "getObjectInfo(address).initialOwner returned unexpected value");
assertEq(a.data.length, b.data.length, "getObjectInfo(address).data.length returned unexpected value");
assertEq(keccak256(a.data), keccak256(b.data), "getObjectInfo(address).data returned unexpected value");

return (
(a.nftId == b.nftId) &&
(a.parentNftId == b.parentNftId) &&
(a.objectType == b.objectType) &&
(a.objectAddress == b.objectAddress) &&
(a.initialOwner == b.initialOwner) &&
(a.data.length == b.data.length) &&
keccak256(a.data) == keccak256(b.data)
(a.release == b.release) &&
(a.objectAddress == b.objectAddress)
);
}

Expand All @@ -516,10 +519,9 @@ contract GifDeployer is Test {
NftIdLib.zero(),
NftIdLib.zero(),
ObjectTypeLib.zero(),
VersionPartLib.zero(),
false,
address(0),
address(0),
bytes("")
address(0)
)
);
}
Expand Down Expand Up @@ -701,4 +703,21 @@ contract GifDeployer is Test {
console.log("");
// solhint-enable
}

function _computeRegistryAddress(address deployer, address globalRegistry, bytes32 salt) internal pure returns (address) {
address accessAdmin = Create2.computeAddress(
salt,
keccak256(abi.encodePacked(
type(RegistryAdmin).creationCode)), // bytecodeHash
deployer);

return Create2.computeAddress(
salt,
keccak256(abi.encodePacked(
type(Registry).creationCode,
abi.encode(
accessAdmin,
globalRegistry))), // bytecodeHash
deployer);
}
}
2 changes: 0 additions & 2 deletions test/base/GifTest.sol
Original file line number Diff line number Diff line change
Expand Up @@ -275,7 +275,6 @@ contract GifTest is GifDeployer {
instanceReader: masterInstanceReader
}),
registry,
VersionPartLib.toVersionPart(3),
registryOwner,
false);

Expand All @@ -288,7 +287,6 @@ contract GifTest is GifDeployer {
masterInstanceAdmin.completeSetup(
address(registry),
address(instanceAuthorizationV3),
VersionPartLib.toVersionPart(3),
address(masterInstance));

require(address(masterInstanceAdmin.getRegistry()) == address(registry), "unexpected master instance registry");
Expand Down
Loading

0 comments on commit 3a7cc0b

Please sign in to comment.