From e7ea21f454870874f26836f820994925afc3a72e Mon Sep 17 00:00:00 2001 From: Gas One Cent <86567384+gas1cent@users.noreply.github.com> Date: Wed, 6 Nov 2024 15:14:40 +0400 Subject: [PATCH] fix: access control in unit and integration tests --- src/contracts/CouncilArbitrator.sol | 2 +- .../arbitrum/IntegrationBase.t.sol | 23 +++++++++++++++---- test/unit/CouncilArbitrator.t.sol | 4 ++-- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/contracts/CouncilArbitrator.sol b/src/contracts/CouncilArbitrator.sol index 191ef51..23021d5 100644 --- a/src/contracts/CouncilArbitrator.sol +++ b/src/contracts/CouncilArbitrator.sol @@ -71,7 +71,7 @@ contract CouncilArbitrator is ICouncilArbitrator { getAnswer[_disputeId] = _award; // TODO: Make sure the access control is correct IAccessController.AccessControl memory _accessControl = - IAccessController.AccessControl({user: msg.sender, data: bytes('')}); + IAccessController.AccessControl({user: address(this), data: bytes('')}); ORACLE.resolveDispute( _resolutionParams.request, _resolutionParams.response, _resolutionParams.dispute, _accessControl diff --git a/test/integration/arbitrum/IntegrationBase.t.sol b/test/integration/arbitrum/IntegrationBase.t.sol index 4797f41..85230cb 100644 --- a/test/integration/arbitrum/IntegrationBase.t.sol +++ b/test/integration/arbitrum/IntegrationBase.t.sol @@ -36,8 +36,7 @@ contract IntegrationBase is Deploy, Test { uint256 internal _currentEpoch; uint256 internal _blockNumber; - IAccessController.AccessControl internal _accessControl = - IAccessController.AccessControl({user: address(0), data: bytes('')}); + IAccessController.AccessControl internal _accessControl; function setUp() public virtual override { vm.createSelectFork(vm.rpcUrl('arbitrum'), _ARBITRUM_SEPOLIA_FORK_BLOCK); @@ -65,6 +64,9 @@ contract IntegrationBase is Deploy, Test { // Set block number _blockNumber = block.number; + + // Configure the access control + _accessControl = IAccessController.AccessControl({user: address(0), data: bytes('')}); } function _createRequest() internal returns (bytes32 _requestId) { @@ -89,9 +91,11 @@ contract IntegrationBase is Deploy, Test { function _proposeResponse(bytes32 _requestId) internal returns (bytes32 _responseId) { IOracle.Request memory _requestData = _requests[_requestId]; - IOracle.Response memory _responseData = _instantiateResponseData(_requestId); + // Set the caller + _accessControl.user = _proposer; + vm.prank(_proposer); oracle.proposeResponse(_requestData, _responseData, _accessControl); @@ -102,9 +106,11 @@ contract IntegrationBase is Deploy, Test { function _disputeResponse(bytes32 _requestId, bytes32 _responseId) internal returns (bytes32 _disputeId) { IOracle.Request memory _requestData = _requests[_requestId]; IOracle.Response memory _responseData = _responses[_responseId]; - IOracle.Dispute memory _disputeData = _instantiateDisputeData(_requestId, _responseId); + // Set the caller + _accessControl.user = _disputer; + vm.prank(_disputer); oracle.disputeResponse(_requestData, _responseData, _disputeData, _accessControl); @@ -143,6 +149,9 @@ contract IntegrationBase is Deploy, Test { IOracle.Response memory _responseData = _responses[_responseId]; IOracle.Dispute memory _disputeData = _disputes[_disputeId]; + // Set the caller + _accessControl.user = address(this); + oracle.escalateDispute(_requestData, _responseData, _disputeData, _accessControl); } @@ -151,6 +160,9 @@ contract IntegrationBase is Deploy, Test { IOracle.Response memory _responseData = _responses[_responseId]; IOracle.Dispute memory _disputeData = _disputes[_disputeId]; + // Set the caller + _accessControl.user = address(this); + oracle.resolveDispute(_requestData, _responseData, _disputeData, _accessControl); } @@ -163,6 +175,9 @@ contract IntegrationBase is Deploy, Test { IOracle.Request memory _requestData = _requests[_requestId]; IOracle.Response memory _responseData = _responses[_responseId]; + // Set the caller + _accessControl.user = address(this); + oracle.finalize(_requestData, _responseData, _accessControl); } diff --git a/test/unit/CouncilArbitrator.t.sol b/test/unit/CouncilArbitrator.t.sol index c141bc1..df8d99d 100644 --- a/test/unit/CouncilArbitrator.t.sol +++ b/test/unit/CouncilArbitrator.t.sol @@ -43,8 +43,7 @@ contract CouncilArbitrator_Unit_BaseTest is Test, Helpers { IOracle public oracle; IArbitratorModule public arbitratorModule; IArbitrable public arbitrable; - IAccessController.AccessControl internal _accessControl = - IAccessController.AccessControl({user: address(0), data: bytes('')}); + IAccessController.AccessControl internal _accessControl; event ResolutionStarted( bytes32 indexed _disputeId, IOracle.Request _request, IOracle.Response _response, IOracle.Dispute _dispute @@ -61,6 +60,7 @@ contract CouncilArbitrator_Unit_BaseTest is Test, Helpers { vm.mockCall(address(arbitratorModule), abi.encodeCall(IValidator.ORACLE, ()), abi.encode(oracle)); councilArbitrator = new MockCouncilArbitrator(arbitratorModule, arbitrable); + _accessControl = IAccessController.AccessControl({user: address(councilArbitrator), data: bytes('')}); } function _mockGetAnswer(bytes32 _disputeId, IOracle.DisputeStatus _status) internal {