-
Notifications
You must be signed in to change notification settings - Fork 24
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feat/stargate tester contract #220
Changes from 1 commit
9d50d68
122e45c
f82826b
7295a31
1585aa2
b657d5d
ebbb001
9d2c6ea
01e5f5a
752c205
8fc14a0
a20cb20
a8c5aee
ebf0280
825207d
42ab0c6
342efc6
0d5be4e
5718e0b
41e822a
e43ad9a
cd84611
2cfe4a1
9b4741f
c92a4ad
8a0f953
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
use base64::engine::general_purpose::STANDARD as BASE64_STANDARD; | ||
use base64::Engine; | ||
use prost::Message; | ||
|
||
pub fn encode_proto_message<T: Message>(msg: T) -> String { | ||
let mut buf = vec![]; | ||
T::encode(&msg, &mut buf).unwrap(); | ||
BASE64_STANDARD.encode(&buf) | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,114 @@ | ||
use crate::{ | ||
contract::{CREATE_DERIVATIVE_ORDER_REPLY_ID, CREATE_SPOT_ORDER_REPLY_ID}, | ||
msg::{MSG_CREATE_DERIVATIVE_LIMIT_ORDER_ENDPOINT, MSG_CREATE_SPOT_LIMIT_ORDER_ENDPOINT}, | ||
order_management::{create_derivative_limit_order, create_spot_limit_order, create_stargate_msg, encode_bytes_message}, | ||
state::{CacheOrderInfo, ORDER_CALL_CACHE}, | ||
ContractError, | ||
}; | ||
use cosmos_sdk_proto::{cosmos::authz::v1beta1::MsgExec, traits::Message, Any}; | ||
use cosmwasm_std::{DepsMut, Env, MessageInfo, Response, SubMsg}; | ||
use injective_cosmwasm::{InjectiveMsgWrapper, InjectiveQuerier, InjectiveQueryWrapper, MarketId, OrderType, SubaccountId}; | ||
use injective_math::{scale::Scaled, FPDecimal}; | ||
|
||
pub const MSG_EXEC: &str = "/cosmos.authz.v1beta1.MsgExec"; | ||
|
||
pub fn handle_test_transient_spot_order( | ||
deps: DepsMut<InjectiveQueryWrapper>, | ||
env: Env, | ||
info: &MessageInfo, | ||
market_id: MarketId, | ||
subaccount_id: SubaccountId, | ||
price: String, | ||
quantity: String, | ||
) -> Result<Response<InjectiveMsgWrapper>, ContractError> { | ||
let querier = InjectiveQuerier::new(&deps.querier); | ||
let spot_market = querier.query_spot_market(&market_id).unwrap().market.unwrap(); | ||
|
||
let order_msg = create_spot_limit_order( | ||
FPDecimal::must_from_str(price.as_str()).scaled(18i32), | ||
FPDecimal::must_from_str(quantity.as_str()).scaled(18i32), | ||
OrderType::Sell, | ||
info.sender.as_str(), | ||
subaccount_id.as_str(), | ||
&spot_market, | ||
); | ||
|
||
let order_bytes = encode_bytes_message(&order_msg).unwrap(); | ||
|
||
let msg_exec = MsgExec { | ||
grantee: env.contract.address.to_string(), | ||
msgs: vec![Any { | ||
type_url: MSG_CREATE_SPOT_LIMIT_ORDER_ENDPOINT.to_string(), | ||
value: order_bytes, | ||
}], | ||
}; | ||
|
||
let order_submessage = SubMsg::reply_on_success( | ||
create_stargate_msg(MSG_EXEC, msg_exec.encode_to_vec()).unwrap(), | ||
CREATE_SPOT_ORDER_REPLY_ID, | ||
); | ||
|
||
save_cache_info(deps, market_id, subaccount_id)?; | ||
|
||
Ok(Response::new().add_submessage(order_submessage)) | ||
} | ||
|
||
pub fn handle_test_transient_derivative_order( | ||
deps: DepsMut<InjectiveQueryWrapper>, | ||
env: Env, | ||
info: &MessageInfo, | ||
market_id: MarketId, | ||
subaccount_id: SubaccountId, | ||
price: String, | ||
quantity: String, | ||
margin: String, | ||
) -> Result<Response<InjectiveMsgWrapper>, ContractError> { | ||
let querier: InjectiveQuerier = InjectiveQuerier::new(&deps.querier); | ||
let market = querier.query_derivative_market(&market_id).unwrap().market.unwrap(); | ||
|
||
let order_msg = create_derivative_limit_order( | ||
FPDecimal::must_from_str(price.as_str()).scaled(18i32), | ||
FPDecimal::must_from_str(quantity.as_str()).scaled(18i32), | ||
FPDecimal::must_from_str(margin.as_str()).scaled(18i32), | ||
OrderType::Buy, | ||
info.sender.as_str(), | ||
subaccount_id.as_str(), | ||
&market, | ||
); | ||
|
||
let order_bytes = encode_bytes_message(&order_msg).unwrap(); | ||
|
||
let msg_exec = MsgExec { | ||
grantee: env.contract.address.to_string(), | ||
msgs: vec![Any { | ||
type_url: MSG_CREATE_DERIVATIVE_LIMIT_ORDER_ENDPOINT.to_string(), | ||
value: order_bytes, | ||
}], | ||
}; | ||
|
||
let order_submessage = SubMsg::reply_on_success( | ||
create_stargate_msg(MSG_EXEC, msg_exec.encode_to_vec()).unwrap(), | ||
CREATE_DERIVATIVE_ORDER_REPLY_ID, | ||
); | ||
|
||
save_cache_info(deps, market_id, subaccount_id)?; | ||
|
||
Ok(Response::new().add_submessage(order_submessage)) | ||
} | ||
|
||
fn save_cache_info(deps: DepsMut<InjectiveQueryWrapper>, market_id: MarketId, subaccount_id: SubaccountId) -> Result<(), ContractError> { | ||
let cache_order_info = CacheOrderInfo { | ||
subaccount: subaccount_id, | ||
market_id, | ||
}; | ||
|
||
let mut order_cache = match ORDER_CALL_CACHE.may_load(deps.storage)? { | ||
Some(order_cache) => order_cache, | ||
None => vec![], | ||
}; | ||
|
||
order_cache.push(cache_order_info); | ||
|
||
ORDER_CALL_CACHE.save(deps.storage, &order_cache)?; | ||
Ok(()) | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,13 +1,16 @@ | ||
pub mod contract; | ||
mod encode_helper; | ||
mod error; | ||
mod handle; | ||
pub mod msg; | ||
mod order_management; | ||
mod query; | ||
mod reply; | ||
mod state; | ||
#[cfg(test)] | ||
mod testing; | ||
mod types; | ||
#[cfg(test)] | ||
pub mod utils; | ||
|
||
pub use crate::error::ContractError; |
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,82 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
use crate::{encode_helper::encode_proto_message, query::handle_query_stargate, state::ORDER_CALL_CACHE, ContractError}; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
use cosmwasm_std::{DepsMut, Event, Reply, Response}; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
use injective_cosmwasm::InjectiveQueryWrapper; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#[allow(clippy::derive_partial_eq_without_eq)] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#[derive(Clone, PartialEq, Eq, ::prost::Message, ::serde::Serialize, ::serde::Deserialize, ::schemars::JsonSchema)] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
pub struct QueryTraderSpotOrdersRequest { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/// Market ID for the market | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#[prost(string, tag = "1")] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#[serde(alias = "marketID")] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
pub market_id: ::prost::alloc::string::String, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/// SubaccountID of the trader | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#[prost(string, tag = "2")] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#[serde(alias = "subaccountID")] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
pub subaccount_id: ::prost::alloc::string::String, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#[allow(clippy::derive_partial_eq_without_eq)] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#[derive(Clone, PartialEq, Eq, ::prost::Message, ::serde::Serialize, ::serde::Deserialize, ::schemars::JsonSchema)] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
pub struct QueryTraderDerivativeOrdersRequest { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/// Market ID for the market | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#[prost(string, tag = "1")] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#[serde(alias = "marketID")] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
pub market_id: ::prost::alloc::string::String, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/// SubaccountID of the trader | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#[prost(string, tag = "2")] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#[serde(alias = "subaccountID")] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
pub subaccount_id: ::prost::alloc::string::String, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
pub fn handle_create_order_reply_stargate(deps: DepsMut<InjectiveQueryWrapper>, _msg: &Reply) -> Result<Response, ContractError> { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
let mut response_str = "Something went wrong".to_string(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if let Some(mut cache) = ORDER_CALL_CACHE.may_load(deps.storage)? { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if !cache.is_empty() { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
let order_info = &cache[0]; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
let encode_query_message = encode_proto_message(QueryTraderSpotOrdersRequest { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
market_id: order_info.market_id.clone().into(), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
subaccount_id: order_info.subaccount.clone().into(), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
let stargate_response = handle_query_stargate( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
&deps.querier, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
"/injective.exchange.v1beta1.Query/TraderSpotTransientOrders".to_string(), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
encode_query_message, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
response_str = match stargate_response { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ok(binary) => String::from_utf8(binary.0).unwrap_or_else(|e| format!("Failed to decode binary to string: {:?}", e)), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Err(e) => format!("Error: {:?}", e), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
cache.clear(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ORDER_CALL_CACHE.save(deps.storage, &cache)?; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ok(Response::new().add_event(Event::new("transient_order").add_attributes([("query_str", response_str)]))) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Optimize error handling in string operations. - Ok(binary) => String::from_utf8(binary.0).unwrap_or_else(|e| format!("Failed to decode binary to string: {:?}", e)),
+ Ok(binary) => String::from_utf8(binary.0).unwrap_or_else(|e| format!("Failed to decode binary to string: {}", e)), Change Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
pub fn handle_create_derivative_order_reply_stargate(deps: DepsMut<InjectiveQueryWrapper>, _msg: &Reply) -> Result<Response, ContractError> { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
let mut response_str = "Something went wrong".to_string(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if let Some(mut cache) = ORDER_CALL_CACHE.may_load(deps.storage)? { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if !cache.is_empty() { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
let order_info = &cache[0]; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
let encode_query_message = encode_proto_message(QueryTraderDerivativeOrdersRequest { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
market_id: order_info.market_id.clone().into(), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
subaccount_id: order_info.subaccount.clone().into(), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
let stargate_response = handle_query_stargate( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
&deps.querier, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
"/injective.exchange.v1beta1.Query/TraderDerivativeTransientOrders".to_string(), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
encode_query_message, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
response_str = match stargate_response { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ok(binary) => String::from_utf8(binary.0).unwrap_or_else(|e| format!("Failed to decode binary to string: {:?}", e)), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Err(e) => format!("Error: {:?}", e), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
cache.clear(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ORDER_CALL_CACHE.save(deps.storage, &cache)?; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ok(Response::new().add_event(Event::new("transient_derivative_order").add_attributes([("query_str", response_str)]))) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Optimize error handling in string operations. - Ok(binary) => String::from_utf8(binary.0).unwrap_or_else(|e| format!("Failed to decode binary to string: {:?}", e)),
+ Ok(binary) => String::from_utf8(binary.0).unwrap_or_else(|e| format!("Failed to decode binary to string: {}", e)), Change Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,7 @@ | ||
mod test_auction; | ||
mod test_auth; | ||
mod test_bank; | ||
mod test_exchange; | ||
mod test_exchange_derivative; | ||
mod test_oracle; | ||
mod type_helpers; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
use crate::{ | ||
encode_helper::encode_proto_message, | ||
msg::{QueryMsg, QueryStargateResponse}, | ||
testing::type_helpers::{AuthParams, CosmosAuthQueryAccountsResponse, ParamResponse}, | ||
utils::{ExchangeType, Setup}, | ||
}; | ||
use cosmos_sdk_proto::cosmos::auth::v1beta1::QueryAccountRequest; | ||
use injective_test_tube::{Account, Module, Wasm}; | ||
|
||
#[test] | ||
#[cfg_attr(not(feature = "integration"), ignore)] | ||
fn test_query_auth_params() { | ||
let env = Setup::new(ExchangeType::None); | ||
let wasm = Wasm::new(&env.app); | ||
let query_msg = QueryMsg::QueryStargate { | ||
path: "/cosmos.auth.v1beta1.Query/Params".to_string(), | ||
query_request: "".to_string(), | ||
}; | ||
|
||
let contract_response: QueryStargateResponse = wasm.query(&env.contract_address, &query_msg).unwrap(); | ||
let contract_response = contract_response.value; | ||
let response: ParamResponse<AuthParams> = serde_json::from_str(&contract_response).unwrap(); | ||
assert_eq!(response.params.max_memo_characters, "256"); | ||
} | ||
|
||
#[test] | ||
#[cfg_attr(not(feature = "integration"), ignore)] | ||
fn test_query_auth_account() { | ||
let env = Setup::new(ExchangeType::None); | ||
let wasm = Wasm::new(&env.app); | ||
|
||
let user_address = env.users[0].account.address().to_string(); | ||
let query_msg = QueryMsg::QueryStargate { | ||
path: "/cosmos.auth.v1beta1.Query/Account".to_string(), | ||
query_request: encode_proto_message(QueryAccountRequest { | ||
address: user_address.to_owned(), | ||
}), | ||
}; | ||
|
||
let contract_response: QueryStargateResponse = wasm.query(&env.contract_address, &query_msg).unwrap(); | ||
let contract_response = contract_response.value; | ||
let response: CosmosAuthQueryAccountsResponse = serde_json::from_str(&contract_response).unwrap(); | ||
assert_eq!(response.account.base_account.address, user_address); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Address potential conflict with existing reply IDs and improve error handling.
The past review comments indicate a potential conflict with the
CREATE_SPOT_ORDER_REPLY_ID
andCREATE_DERIVATIVE_ORDER_REPLY_ID
constants across different modules. Please ensure that these constants are unique to avoid any unexpected behavior.Additionally, consider improving the error handling in the
reply
function by providing a more descriptive error message for unrecognized reply IDs.Apply this diff to improve the error handling: