diff --git a/src/ReservoirPriceOracle.sol b/src/ReservoirPriceOracle.sol index 824f411..76bbc1b 100644 --- a/src/ReservoirPriceOracle.sol +++ b/src/ReservoirPriceOracle.sol @@ -507,15 +507,14 @@ contract ReservoirPriceOracle is IPriceOracle, IReservoirPriceOracle, Owned(msg. } /// @notice Sets the pair to serve as price feed for a given route. - // TODO: Should be TokenA & TokenB because this function sorts them? - function designatePair(address aToken0, address aToken1, ReservoirPair aPair) external onlyOwner { - (aToken0, aToken1) = aToken0.sortTokens(aToken1); - // TODO: Should be require as it's possible to fail right? Generally - // assert is used for symbolic provers to find invariants they can break. - assert(aToken0 == address(aPair.token0()) && aToken1 == address(aPair.token1())); + function designatePair(address aTokenA, address aTokenB, ReservoirPair aPair) external onlyOwner { + (aTokenA, aTokenB) = aTokenA.sortTokens(aTokenB); + if (aTokenA != address(aPair.token0()) || aTokenB != address(aPair.token1())) { + revert OracleErrors.IncorrectTokensDesignatePair(); + } - pairs[aToken0][aToken1] = aPair; - emit DesignatePair(aToken0, aToken1, aPair); + pairs[aTokenA][aTokenB] = aPair; + emit DesignatePair(aTokenA, aTokenB, aPair); } function undesignatePair(address aToken0, address aToken1) external onlyOwner { diff --git a/src/libraries/OracleErrors.sol b/src/libraries/OracleErrors.sol index 3d1fa97..3a70260 100644 --- a/src/libraries/OracleErrors.sol +++ b/src/libraries/OracleErrors.sol @@ -4,6 +4,7 @@ pragma solidity ^0.8.0; /// @dev Collection of all oracle related errors. library OracleErrors { // config errors + error IncorrectTokensDesignatePair(); error InvalidRoute(); error InvalidRouteLength(); error InvalidTwapPeriod(); diff --git a/test/unit/ReservoirPriceOracle.t.sol b/test/unit/ReservoirPriceOracle.t.sol index f6c9c50..82331f0 100644 --- a/test/unit/ReservoirPriceOracle.t.sol +++ b/test/unit/ReservoirPriceOracle.t.sol @@ -925,7 +925,7 @@ contract ReservoirPriceOracleTest is BaseTest { function testDesignatePair_IncorrectPair() external { // act & assert - vm.expectRevert(); + vm.expectRevert(OracleErrors.IncorrectTokensDesignatePair.selector); _oracle.designatePair(address(_tokenA), address(_tokenC), _pair); }