From adff81ebce8da550cb4e56daf86753bc25245fb1 Mon Sep 17 00:00:00 2001 From: 0xJabberwock <0xjabberwock@defi.sucks> Date: Wed, 25 Sep 2024 18:19:57 -0300 Subject: [PATCH] test: integrate HorizonAccountingExtension --- script/Deploy.s.sol | 1 - .../arbitrum/ArbitrateDispute.t.sol | 45 ++++++++++++------- .../arbitrum/DisputeResponse.t.sol | 6 +-- .../arbitrum/ProposeResponse.t.sol | 6 +-- 4 files changed, 34 insertions(+), 24 deletions(-) diff --git a/script/Deploy.s.sol b/script/Deploy.s.sol index b0c4f34..822a11d 100644 --- a/script/Deploy.s.sol +++ b/script/Deploy.s.sol @@ -55,7 +55,6 @@ contract Deploy is Script { IEBOFinalityModule public eboFinalityModule; // Extensions - IBondEscalationAccounting public bondEscalationAccounting; IHorizonAccountingExtension public horizonAccountingExtension; // Periphery diff --git a/test/integration/arbitrum/ArbitrateDispute.t.sol b/test/integration/arbitrum/ArbitrateDispute.t.sol index e6595c3..be472fb 100644 --- a/test/integration/arbitrum/ArbitrateDispute.t.sol +++ b/test/integration/arbitrum/ArbitrateDispute.t.sol @@ -74,14 +74,18 @@ contract IntegrationArbitrateDispute is IntegrationBase { IBondEscalationModule.BondEscalation memory _escalation = bondEscalationModule.getEscalation(_requestId); assertEq(_escalation.disputeId, _disputeId); assertEq(uint8(_escalation.status), uint8(IBondEscalationModule.BondEscalationStatus.DisputerWon)); - // Assert BondEscalationAccounting::pay - assertEq( - bondEscalationAccounting.bondedAmountOf(_proposer, graphToken, _requestId), responseBondSize - disputeBondSize - ); - assertEq(bondEscalationAccounting.balanceOf(_proposer, graphToken), 0); - // Assert BondEscalationAccounting::release - assertEq(bondEscalationAccounting.bondedAmountOf(_disputer, graphToken, _requestId), 0); - assertEq(bondEscalationAccounting.balanceOf(_disputer, graphToken), disputeBondSize * 2); + // Assert HorizonAccountingExtension::pay + assertEq(horizonAccountingExtension.bondedForRequest(_proposer, _requestId), responseBondSize - disputeBondSize); + assertEq(horizonAccountingExtension.totalBonded(_proposer), responseBondSize - disputeBondSize); + // Assert HorizonStaking::slash + IHorizonStaking.Provision memory _provision = + horizonStaking.getProvision(_proposer, address(horizonAccountingExtension)); + assertEq(_provision.tokens, responseBondSize - disputeBondSize); + // Assert GraphToken::transfer + assertEq(graphToken.balanceOf(_disputer), disputeBondSize); + // Assert HorizonAccountingExtension::release + assertEq(horizonAccountingExtension.bondedForRequest(_disputer, _requestId), 0); + assertEq(horizonAccountingExtension.totalBonded(_disputer), 0); // Assert Oracle::finalize assertEq(oracle.finalizedAt(_requestId), block.number); assertEq(oracle.finalizedResponseId(_requestId), 0); @@ -152,15 +156,21 @@ contract IntegrationArbitrateDispute is IntegrationBase { IBondEscalationModule.BondEscalation memory _escalation = bondEscalationModule.getEscalation(_requestId); assertEq(_escalation.disputeId, _disputeId); assertEq(uint8(_escalation.status), uint8(IBondEscalationModule.BondEscalationStatus.DisputerLost)); - // Assert BondEscalationAccounting::pay - assertEq(bondEscalationAccounting.bondedAmountOf(_disputer, graphToken, _requestId), 0); - assertEq(bondEscalationAccounting.balanceOf(_disputer, graphToken), 0); + // Assert HorizonAccountingExtension::pay + assertEq(horizonAccountingExtension.bondedForRequest(_disputer, _requestId), 0); + assertEq(horizonAccountingExtension.totalBonded(_disputer), 0); + // Assert HorizonStaking::slash + IHorizonStaking.Provision memory _provision = + horizonStaking.getProvision(_disputer, address(horizonAccountingExtension)); + assertEq(_provision.tokens, 0); + // Assert GraphToken::transfer + assertEq(graphToken.balanceOf(_proposer), disputeBondSize); // Assert Oracle::finalize assertEq(oracle.finalizedAt(_requestId), block.number); assertEq(oracle.finalizedResponseId(_requestId), _responseId); - // Assert BondEscalationAccounting::release - assertEq(bondEscalationAccounting.bondedAmountOf(_proposer, graphToken, _requestId), 0); - assertEq(bondEscalationAccounting.balanceOf(_proposer, graphToken), responseBondSize + disputeBondSize); + // Assert HorizonAccountingExtension::release + assertEq(horizonAccountingExtension.bondedForRequest(_proposer, _requestId), 0); + assertEq(horizonAccountingExtension.totalBonded(_proposer), 0); // Revert if the dispute has already been arbitrated vm.expectRevert(ICouncilArbitrator.CouncilArbitrator_DisputeAlreadyArbitrated.selector); @@ -221,9 +231,10 @@ contract IntegrationArbitrateDispute is IntegrationBase { IBondEscalationModule.BondEscalation memory _escalation = bondEscalationModule.getEscalation(_requestId); assertEq(_escalation.disputeId, _disputeId); assertEq(uint8(_escalation.status), uint8(IBondEscalationModule.BondEscalationStatus.Escalated)); - // Assert BondEscalationAccounting::release - assertEq(bondEscalationAccounting.bondedAmountOf(_disputer, graphToken, _requestId), 0); - assertEq(bondEscalationAccounting.balanceOf(_disputer, graphToken), disputeBondSize); + // Assert HorizonAccountingExtension::release + assertEq(horizonAccountingExtension.bondedForRequest(_disputer, _requestId), 0); + assertEq(horizonAccountingExtension.totalBonded(_disputer), 0); + // TODO: Why isn't proposer's bond released? // Assert Oracle::finalize assertEq(oracle.finalizedAt(_requestId), block.number); assertEq(oracle.finalizedResponseId(_requestId), 0); diff --git a/test/integration/arbitrum/DisputeResponse.t.sol b/test/integration/arbitrum/DisputeResponse.t.sol index 26ff74f..e8eb4f9 100644 --- a/test/integration/arbitrum/DisputeResponse.t.sol +++ b/test/integration/arbitrum/DisputeResponse.t.sol @@ -61,9 +61,9 @@ contract IntegrationDisputeResponse is IntegrationBase { IBondEscalationModule.BondEscalation memory _escalation = bondEscalationModule.getEscalation(_requestId); assertEq(_escalation.disputeId, _disputeId); assertEq(uint8(_escalation.status), uint8(IBondEscalationModule.BondEscalationStatus.Active)); - // Assert BondEscalationAccounting::bond - assertEq(bondEscalationAccounting.bondedAmountOf(_disputer, graphToken, _requestId), disputeBondSize); - assertEq(bondEscalationAccounting.balanceOf(_disputer, graphToken), 0); + // Assert HorizonAccountingExtension::bond + assertEq(horizonAccountingExtension.bondedForRequest(_disputer, _requestId), disputeBondSize); + assertEq(horizonAccountingExtension.totalBonded(_disputer), disputeBondSize); // Revert if the response has already been disputed vm.expectRevert(abi.encodeWithSelector(IOracle.Oracle_ResponseAlreadyDisputed.selector, _responseId)); diff --git a/test/integration/arbitrum/ProposeResponse.t.sol b/test/integration/arbitrum/ProposeResponse.t.sol index 92b3ea8..948cd9b 100644 --- a/test/integration/arbitrum/ProposeResponse.t.sol +++ b/test/integration/arbitrum/ProposeResponse.t.sol @@ -43,9 +43,9 @@ contract IntegrationProposeResponse is IntegrationBase { // Assert Oracle::proposeResponse assertEq(oracle.responseCreatedAt(_responseId), block.number); - // Assert BondEscalationAccounting::bond - assertEq(bondEscalationAccounting.bondedAmountOf(_proposer, graphToken, _requestId), responseBondSize); - assertEq(bondEscalationAccounting.balanceOf(_proposer, graphToken), 0); + // Assert HorizonAccountingExtension::bond + assertEq(horizonAccountingExtension.bondedForRequest(_proposer, _requestId), responseBondSize); + assertEq(horizonAccountingExtension.totalBonded(_proposer), responseBondSize); // Revert if the response has already been proposed vm.expectRevert(IOracle.Oracle_InvalidResponseBody.selector);