diff --git a/contracts/Storage.sol b/contracts/Storage.sol index 4658905..b7c9d61 100644 --- a/contracts/Storage.sol +++ b/contracts/Storage.sol @@ -38,6 +38,10 @@ contract Storage is Collateral, Marketplace { return _request(id); } + function getHost(bytes32 id) public view returns (address) { + return _host(id); + } + function finishContract(bytes32 id) public { require(_host(id) != address(0), "Contract not started"); require(!contractFinished[id], "Contract already finished"); diff --git a/test/Storage.test.js b/test/Storage.test.js index fba232a..6f309aa 100644 --- a/test/Storage.test.js +++ b/test/Storage.test.js @@ -1,6 +1,7 @@ const { expect } = require("chai") const { ethers, deployments } = require("hardhat") const { hexlify, randomBytes } = ethers.utils +const { AddressZero } = ethers.constants const { exampleRequest } = require("./examples") const { advanceTime, advanceTimeTo, currentTime } = require("./evm") const { requestId } = require("./ids") @@ -55,6 +56,12 @@ describe("Storage", function () { expect(retrieved.nonce).to.equal(request.nonce) }) + it("can retrieve host that fulfilled request", async function () { + expect(await storage.getHost(requestId(request))).to.equal(AddressZero) + await storage.fulfillRequest(requestId(request), proof) + expect(await storage.getHost(requestId(request))).to.equal(host.address) + }) + describe("finishing the contract", function () { async function waitUntilEnd() { const end = (await storage.proofEnd(id)).toNumber()