def deploy_mocks(decimals=18, initial_value=2000): """ Use this script if you want to deploy mocks to a testnet """ # Set a default gas price priority_fee("1 gwei") print(f"The active network is {network.show_active()}") print("Deploying Mocks...") account = get_account() print("Deploying Mock Link Token...") link_token = LinkToken.deploy({"from": account}) print("Deploying Mock Price Feed...") mock_price_feed = MockV3Aggregator.deploy(decimals, initial_value, {"from": account}) print(f"Deployed to {mock_price_feed.address}") print("Deploying Mock VRFCoordinator...") mock_vrf_coordinator = VRFCoordinatorMock.deploy( link_token.address, { "from": account, "gas_price": chain.base_fee }) print(f"Deployed to {mock_vrf_coordinator.address}") print("Deploying Mock Oracle...") mock_oracle = MockOracle.deploy(link_token.address, {"from": account}) print(f"Deployed to {mock_oracle.address}") print("Mocks Deployed!")
def get_link_token(get_account): if network.show_active() in ['development', 'mainnet-fork']: link_token = LinkToken.deploy({'from': get_account}) return link_token if network.show_active() in config['networks']: return Contract.from_abi( "vrf_coordinator_mock", config['networks'][network.show_active()]['link_token'], LinkToken.abi) else: pytest.skip('Invalid network/link token specified ')
def test_chainlink_api_call_without_link(job_id, dev_account, node_account, chainlink_fee): # Arrange link_token = LinkToken.deploy({"from": dev_account}) oracle = MockOracle.deploy(link_token.address, {"from": dev_account}) api_consumer = APIConsumer.deploy(oracle.address, job_id, chainlink_fee, link_token.address, {"from": dev_account}) oracle.setFulfillmentPermission(node_account, True, {"from": dev_account}) # Act / Assert with pytest.raises(brownie.exceptions.VirtualMachineError): api_consumer.requestVolumeData({"from": dev_account})
def get_link_token(get_account): if network.show_active() == 'development' or 'fork' in network.show_active( ): link_token = LinkToken.deploy({'from': get_account}) return link_token if network.show_active() in config['networks']: return Contract.from_abi( "link_token", config['networks'][network.show_active()]['link_token'], LinkToken.abi) else: pytest.skip('Invalid network/link token specified ')
def get_link_token(get_account): if network.show_active() == "development" or "fork" in network.show_active( ): link_token = LinkToken.deploy({"from": get_account}) return link_token if network.show_active() in config["networks"]: return Contract.from_abi( "link_token", config["networks"][network.show_active()]["link_token"], LinkToken.abi, ) else: pytest.skip("Invalid network/link token specified ")
def link_token(pm, deployer): if network.show_active() == "development" or "fork" in network.show_active( ): # link = pm("alphachainio/[email protected]").LinkToken yield LinkToken.deploy({"from": deployer}) if network.show_active() in config["networks"]: yield Contract.from_abi( "link_token", config["networks"][network.show_active()]["link_token"], LinkToken.abi, ) else: pytest.skip("Invalid network/link token specified ")
def test_chainlink_api_call_with_link(job_id, dev_account, node_account, chainlink_fee): # Arrange link_token = LinkToken.deploy({"from": dev_account}) oracle = MockOracle.deploy(link_token.address, {"from": dev_account}) api_consumer = APIConsumer.deploy(oracle.address, job_id, chainlink_fee, link_token.address, {"from": dev_account}) oracle.setFulfillmentPermission(node_account, True, {"from": dev_account}) link_token.transfer(api_consumer.address, chainlink_fee, {"from": dev_account}) # Act transaction_data = api_consumer.requestVolumeData({"from": dev_account}) # Assert assert oracle.address == transaction_data.logs[3].address
def deploy_mocks(decimals=DECIMALS, initial_value=INITIAL_VALUE): """ Use this script if you want to deploy mocks to a testnet """ print(f"The active network is {network.show_active()}") print("Deploying Mocks...") account = get_account() print("Deploying Mock Link Token...") link_token = LinkToken.deploy({"from": account}) print("Deploying Mock Price Feed...") mock_price_feed = MockV3Aggregator.deploy(decimals, initial_value, {"from": account}) print(f"Deployed to {mock_price_feed.address}") print("Deploying Mock VRFCoordinator...") mock_vrf_coordinator = VRFCoordinatorMock.deploy(link_token.address, {"from": account}) print(f"Deployed to {mock_vrf_coordinator.address}") print("Deploying Mock Oracle...") mock_oracle = MockOracle.deploy(link_token.address, {"from": account}) print(f"Deployed to {mock_oracle.address}") print("Mocks Deployed!")
def test_chainlink_api_call_with_link_fulfilled(job_id, dev_account, node_account, chainlink_fee, expiry_time): # Arrange link_token = LinkToken.deploy({"from": dev_account}) oracle = MockOracle.deploy(link_token.address, {"from": dev_account}) api_consumer = APIConsumer.deploy( oracle.address, "29fa9aa13bf1468788b7cc4a500a45b8", chainlink_fee, link_token.address, {"from": dev_account}, ) oracle.setFulfillmentPermission(node_account, True, {"from": dev_account}) link_token.transfer(api_consumer.address, chainlink_fee * 3, {"from": dev_account}) transaction_receipt = api_consumer.requestVolumeData({"from": dev_account}) reqid = transaction_receipt.events["ChainlinkRequested"]["id"] selector = "" # Act for key, value in api_consumer.__dict__["selectors"].items(): if value == "fulfill": selector = key # We cheated and added `exp_time` to a public variable in the Oracle.sol # This is all needed because fulfillOracleRequest hashes all the params and checks to make sure the # Hashes all match # We are using a modified Oracle.sol successful = oracle.fulfillOracleRequest( reqid, chainlink_fee, api_consumer.address, selector, oracle.exp_time(), "", {"from": node_account}, ) assert successful.status == 1
def deploy_mocks(decimals=DECIMALS, initial_value=INITIAL_VALUE): account = get_account() MockV3Aggregator.deploy(decimals, initial_value, {"from": account}) link_token = LinkToken.deploy({"from": account}) VRFCoordinatorMock.deploy(link_token.address, {"from": account}) print("Deployed!")