tests: Add browser WASM tests for evm_client
This commit is contained in:
69
evm_client/tests/balance.rs
Normal file
69
evm_client/tests/balance.rs
Normal file
@@ -0,0 +1,69 @@
|
||||
use evm_client::{EvmClient, EvmProvider, Signer};
|
||||
|
||||
// Dummy signer that returns a known Ethereum address (Vitalik's address)
|
||||
struct DummySigner;
|
||||
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
#[async_trait::async_trait]
|
||||
impl Signer for DummySigner {
|
||||
async fn sign(&self, _message: &[u8]) -> Result<Vec<u8>, evm_client::EvmError> {
|
||||
Err(evm_client::EvmError::Vault("sign not implemented".to_string()))
|
||||
}
|
||||
fn address(&self) -> String {
|
||||
// Vitalik's main address (has funds on mainnet)
|
||||
"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045".to_string()
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
#[tokio::test]
|
||||
async fn test_get_balance_vitalik() {
|
||||
// Use a public Ethereum mainnet RPC
|
||||
let provider = EvmProvider::Http {
|
||||
name: "mainnet".to_string(),
|
||||
url: "https://eth.drpc.org".to_string(),
|
||||
chain_id: 1,
|
||||
};
|
||||
let signer = DummySigner;
|
||||
let mut client = EvmClient::new(signer);
|
||||
client.add_provider("mainnet".to_string(), provider);
|
||||
client.set_current("mainnet").unwrap();
|
||||
let balance = client.get_balance("0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045").await.unwrap();
|
||||
assert!(balance > 0, "Vitalik's balance should be greater than zero");
|
||||
}
|
||||
|
||||
#[cfg(target_arch = "wasm32")]
|
||||
use wasm_bindgen_test::*;
|
||||
|
||||
#[cfg(target_arch = "wasm32")]
|
||||
#[async_trait::async_trait(?Send)]
|
||||
impl Signer for DummySigner {
|
||||
async fn sign(&self, _message: &[u8]) -> Result<Vec<u8>, evm_client::EvmError> {
|
||||
Err(evm_client::EvmError::Vault("sign not implemented".to_string()))
|
||||
}
|
||||
fn address(&self) -> String {
|
||||
// Vitalik's main address (has funds on mainnet)
|
||||
"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045".to_string()
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(target_arch = "wasm32")]
|
||||
wasm_bindgen_test::wasm_bindgen_test_configure!(run_in_browser);
|
||||
|
||||
#[cfg(target_arch = "wasm32")]
|
||||
#[wasm_bindgen_test(async)]
|
||||
async fn test_get_balance_vitalik_browser() {
|
||||
let provider = EvmProvider::Http {
|
||||
name: "mainnet".to_string(),
|
||||
url: "https://eth.drpc.org".to_string(),
|
||||
chain_id: 1,
|
||||
};
|
||||
let signer = DummySigner;
|
||||
let mut client = EvmClient::new(signer);
|
||||
client.add_provider("mainnet".to_string(), provider);
|
||||
client.set_current("mainnet").unwrap();
|
||||
let balance = client.get_balance("0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045").await;
|
||||
assert!(balance.is_ok(), "Balance query should succeed in browser");
|
||||
let balance = balance.unwrap();
|
||||
assert!(balance > 0u128, "Vitalik's balance should be greater than zero");
|
||||
}
|
||||
Reference in New Issue
Block a user