rhaki_cw_mock_http_querier 0.1.0

Cosmwasm mock querier for testing, that can perform http request to public lcd.
Documentation
use cosmwasm_std::{to_binary, Deps, OwnedDeps, QueryRequest, StdResult, Uint128, WasmQuery};
use cw20::{BalanceResponse as Cw20BalanceResponse, Cw20QueryMsg};

use crate::mock::{create_http_mock, DefaultWasmMockQuerier, HttpWasmMockQuerier};

const TERRA2_PULBLIC_NODE_URL: &str = "https://phoenix-lcd.terra.dev";

#[test]
pub fn simple_query() {
    let contract_pair_astro_usdc =
        String::from("terra1w579ysjvpx7xxhckxewk8sykxz70gm48wpcuruenl29rhe6p6raslhj0m6");
    let contract_astro =
        String::from("terra1nsuqsk6kh58ulczatwev87ttq2z6r3pusulg9r24mfj2fvtzd4uq3exn26");

    let deps: OwnedDeps<_, _, HttpWasmMockQuerier<DefaultWasmMockQuerier>> =
        create_http_mock(None, TERRA2_PULBLIC_NODE_URL, None);

    let amount =
        query_balance_cw20(deps.as_ref(), contract_astro, contract_pair_astro_usdc).unwrap();

    println!("{amount}")
}

pub fn query_balance_cw20(
    deps: Deps,
    cw20_address: String,
    account_address: String,
) -> StdResult<Uint128> {
    let balance_response: Cw20BalanceResponse =
        deps.querier.query(&QueryRequest::Wasm(WasmQuery::Smart {
            contract_addr: cw20_address,
            msg: to_binary(&Cw20QueryMsg::Balance {
                address: account_address,
            })?,
        }))?;

    Ok(balance_response.balance)
}