ibc-test-framework 0.32.2

Framework for writing integration tests for IBC relayers
use crate::chain::cli::async_icq::{async_icq, update_oracle};
use crate::chain::cli::wasm::contract::instantiate_wasm_contract;
use crate::chain::cli::wasm::query::{query_wasm_list_code, query_wasm_list_contracts_by_code};
use crate::prelude::*;
use crate::types::tagged::*;

pub trait AsyncIcqMethodsExt<Chain> {
    fn update_oracle(&self, relayer: &str, fees: &str, init_args: &str) -> Result<(), Error>;

    fn async_icq(&self, channel_id: &ChannelId, query_json: &str, from: &str) -> Result<(), Error>;
}

impl<Chain: Send> AsyncIcqMethodsExt<Chain> for MonoTagged<Chain, &ChainDriver> {
    fn update_oracle(&self, relayer: &str, fees: &str, init_args: &str) -> Result<(), Error> {
        let driver = *self.value();

        let wasm_code = query_wasm_list_code(
            driver.chain_id.as_str(),
            &driver.command_path,
            &driver.home_path,
            &driver.rpc_listen_address(),
        )?;

        instantiate_wasm_contract(
            driver.chain_id.as_str(),
            &driver.command_path,
            &driver.home_path,
            &driver.rpc_listen_address(),
            relayer,
            fees,
            &wasm_code,
            init_args,
        )?;

        let address = query_wasm_list_contracts_by_code(
            driver.chain_id.as_str(),
            &driver.command_path,
            &driver.home_path,
            &driver.rpc_listen_address(),
            &wasm_code,
        )?;

        update_oracle(
            driver.chain_id.as_str(),
            &driver.command_path,
            &driver.home_path,
            &driver.rpc_listen_address(),
            &address,
            relayer,
        )
    }

    fn async_icq(&self, channel_id: &ChannelId, query_json: &str, from: &str) -> Result<(), Error> {
        let driver = *self.value();
        async_icq(
            driver.chain_id.as_str(),
            &driver.command_path,
            &driver.home_path,
            &driver.rpc_listen_address(),
            channel_id.as_str(),
            query_json,
            from,
        )
    }
}