From c9ce72b8124db3bd2fd50d5c68047a671957d635 Mon Sep 17 00:00:00 2001 From: claravanstaden Date: Fri, 11 Aug 2023 11:01:06 +0200 Subject: [PATCH] Start with smoketest for transact. --- contracts/src/DeployScript.sol | 2 ++ contracts/test/mocks/HelloWorld.sol | 12 ++++++++++++ parachain/primitives/router/src/outbound/mod.rs | 6 +----- smoketest/make-bindings.sh | 2 +- smoketest/tests/transact_polkadot_to_ethereum.rs | 5 ++++- 5 files changed, 20 insertions(+), 7 deletions(-) create mode 100644 contracts/test/mocks/HelloWorld.sol diff --git a/contracts/src/DeployScript.sol b/contracts/src/DeployScript.sol index 2ed5c078de..39def1b823 100644 --- a/contracts/src/DeployScript.sol +++ b/contracts/src/DeployScript.sol @@ -15,6 +15,7 @@ import {AgentExecutor} from "./AgentExecutor.sol"; import {ParaID, Config} from "./Types.sol"; import {SafeNativeTransfer} from "./utils/SafeTransfer.sol"; import {stdJson} from "forge-std/StdJson.sol"; +import {HelloWorld} from "../test/mocks/HelloWorld.sol"; contract DeployScript is Script { using SafeNativeTransfer for address payable; @@ -81,6 +82,7 @@ contract DeployScript is Script { payable(assetHubAgent).safeNativeTransfer(initialDeposit); new GatewayUpgradeMock(); + new HelloWorld(); vm.stopBroadcast(); } diff --git a/contracts/test/mocks/HelloWorld.sol b/contracts/test/mocks/HelloWorld.sol new file mode 100644 index 0000000000..e46f92f861 --- /dev/null +++ b/contracts/test/mocks/HelloWorld.sol @@ -0,0 +1,12 @@ +// SPDX-License-Identifier: Apache-2.0 +// SPDX-FileCopyrightText: 2023 Snowfork +pragma solidity ^0.8.0; + +contract HelloWorld { + event SaidHello(string message); + + function sayHello(string memory _text) public { + string memory fullMessage = string(abi.encodePacked("Hello world ", _text)); + emit SaidHello(fullMessage); + } +} diff --git a/parachain/primitives/router/src/outbound/mod.rs b/parachain/primitives/router/src/outbound/mod.rs index 085776a16e..24786897d3 100644 --- a/parachain/primitives/router/src/outbound/mod.rs +++ b/parachain/primitives/router/src/outbound/mod.rs @@ -177,7 +177,6 @@ enum XcmConverterError { BeneficiaryResolutionFailed, AssetResolutionFailed, SetTopicExpected, - UnknownCommand } struct XcmConverter<'a, Call> { @@ -313,8 +312,6 @@ impl<'a, Call> XcmConverter<'a, Call> { } fn transact_message(&mut self) -> Result { - use XcmConverterError::*; - Ok(AgentExecuteCommand::Transact { target: Default::default(), payload: vec![], @@ -331,7 +328,6 @@ impl<'a, Call> XcmConverter<'a, Call> { mod tests { use frame_support::parameter_types; use hex_literal::hex; - use xcm::DoubleEncoded; use snowbridge_core::outbound::{MessageHash, SubmitError}; use super::*; @@ -780,7 +776,7 @@ mod tests { Transact{ origin_kind: OriginKind::Native, require_weight_at_most: Default::default(), - call: Default::default(),// TODO fix + call: vec![].into(), }, SetTopic([0; 32]), ] diff --git a/smoketest/make-bindings.sh b/smoketest/make-bindings.sh index 50730c6fbb..e047cfa342 100755 --- a/smoketest/make-bindings.sh +++ b/smoketest/make-bindings.sh @@ -6,7 +6,7 @@ mkdir -p src/contracts # Generate Rust bindings for contracts forge bind --module --overwrite \ - --select 'IGateway|WETH9|GatewayUpgradeMock' \ + --select 'IGateway|WETH9|GatewayUpgradeMock|HelloWorld' \ --bindings-path src/contracts \ --root ../contracts diff --git a/smoketest/tests/transact_polkadot_to_ethereum.rs b/smoketest/tests/transact_polkadot_to_ethereum.rs index fe1700b9e3..b450a82149 100644 --- a/smoketest/tests/transact_polkadot_to_ethereum.rs +++ b/smoketest/tests/transact_polkadot_to_ethereum.rs @@ -5,6 +5,9 @@ use snowbridge_smoketest::contracts::i_gateway::InboundMessageDispatchedFilter; use snowbridge_smoketest::helper::*; use snowbridge_smoketest::parachains::bridgehub::api::ethereum_control::events::TransferNativeFromAgent; use snowbridge_smoketest::xcm::construct_xcm_message; +use hex_literal::hex; + +const HELLO_WORLD_CONTRACT: [u8; 20] = hex!("EE9170ABFbf9421Ad6DD07F6BDec9D89F2B581E0"); #[tokio::test] async fn transact() { @@ -27,7 +30,7 @@ async fn transact() { let message = construct_xcm_message( construct_transact_call( &test_clients.bridge_hub_client, - ETHEREUM_ADDRESS.into(), // TODO TARGET ARBITRARY CONTRACT + HELLO_WORLD_CONTRACT.into(), vec![], // TODO CONTRACT BYTES HERE ) .await