From 373ed324bf3173974ed0542b7128ebdd8b0b5279 Mon Sep 17 00:00:00 2001 From: Marc Doerflinger Date: Fri, 12 Aug 2022 15:06:29 +0000 Subject: [PATCH] Store association from policyIdToRiskId in AyiiProduct --- contracts/examples/AyiiProduct.sol | 11 +++++++---- tests/test_ayii_product.py | 4 ++-- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/contracts/examples/AyiiProduct.sol b/contracts/examples/AyiiProduct.sol index a8123d20..f8cd572f 100644 --- a/contracts/examples/AyiiProduct.sol +++ b/contracts/examples/AyiiProduct.sol @@ -42,7 +42,8 @@ contract AyiiProduct is uint256 private _oracleId; mapping(bytes32 /* riskId */ => Risk) private _risks; - mapping(bytes32 /* riskId */ => bytes32 [] /*policyIds*/) private _policies; + mapping(bytes32 /* riskId */ => bytes32 [] /* policyIds */) private _policies; + mapping(bytes32 /* policyId */ => bytes32 /* riskId */) private _riskIdByPolicy; bytes32 [] private _applications; // useful for debugging, might need to get rid of this event LogAyiiPolicyCreated(bytes32 policyId, address policyHolder, uint256 premiumAmount, uint256 sumInsuredAmount); @@ -149,6 +150,7 @@ contract AyiiProduct is if (success) { _policies[riskId].push(processId); + _riskIdByPolicy[processId] = riskId; emit LogAyiiPolicyCreated( processId, @@ -158,7 +160,7 @@ contract AyiiProduct is } } - function triggerOracle(bytes32 riskId) + function triggerOracle(bytes32 riskId, bytes32 processId) external onlyRole(INSURER_ROLE) returns(uint256 requestId) @@ -174,7 +176,7 @@ contract AyiiProduct is ); requestId = _request( - riskId, + processId, queryData, "oracleCallback", _oracleId @@ -193,7 +195,7 @@ contract AyiiProduct is function oracleCallback( uint256 requestId, - bytes32 riskId, + bytes32 processId, bytes calldata responseData ) external @@ -206,6 +208,7 @@ contract AyiiProduct is uint256 aaay ) = abi.decode(responseData, (bytes32, bytes32, bytes32, uint256)); + bytes32 riskId = _riskIdByPolicy[processId]; require(riskId == getRiskId(projectId, uaiId, cropId), "ERROR:AYI-020:RISK_ID_MISMATCH"); Risk storage risk = _risks[riskId]; diff --git a/tests/test_ayii_product.py b/tests/test_ayii_product.py index ecdff5ad..2c6e9af7 100644 --- a/tests/test_ayii_product.py +++ b/tests/test_ayii_product.py @@ -223,8 +223,8 @@ def test_happy_path( print('--- step trigger oracle (call chainlin node) -------------') - tx[0] = product.triggerOracle(riskId[0]) - tx[1] = product.triggerOracle(riskId[1]) + tx[0] = product.triggerOracle(riskId[0], policyId[0]) + tx[1] = product.triggerOracle(riskId[1], policyId[1]) requestId = [tx[0].return_value, tx[1].return_value] # ensure event emitted as chainlink client