Skip to content
This repository was archived by the owner on Jul 22, 2024. It is now read-only.

Add error handling to RpcState #1107

Merged
merged 12 commits into from
Nov 1, 2023
31 changes: 16 additions & 15 deletions rpc_state_reader/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
pub mod rpc_state;
pub mod rpc_state_errors;
pub mod utils;

#[cfg(test)]
Expand Down Expand Up @@ -31,7 +32,7 @@ mod tests {

#[test]
fn test_get_contract_class_cairo1() {
let rpc_state = RpcState::new_infura(RpcChain::MainNet, BlockTag::Latest.into());
let rpc_state = RpcState::new_infura(RpcChain::MainNet, BlockTag::Latest.into()).unwrap();

let class_hash =
class_hash!("0298e56befa6d1446b86ed5b900a9ba51fd2faa683cd6f50e8f833c0fb847216");
Expand All @@ -44,7 +45,7 @@ mod tests {

#[test]
fn test_get_contract_class_cairo0() {
let rpc_state = RpcState::new_infura(RpcChain::MainNet, BlockTag::Latest.into());
let rpc_state = RpcState::new_infura(RpcChain::MainNet, BlockTag::Latest.into()).unwrap();

let class_hash =
class_hash!("025ec026985a3bf9d0cc1fe17326b245dfdc3ff89b8fde106542a3ea56c5a918");
Expand All @@ -53,7 +54,7 @@ mod tests {

#[test]
fn test_get_class_hash_at() {
let rpc_state = RpcState::new_infura(RpcChain::MainNet, BlockTag::Latest.into());
let rpc_state = RpcState::new_infura(RpcChain::MainNet, BlockTag::Latest.into()).unwrap();
let address =
contract_address!("00b081f7ba1efc6fe98770b09a827ae373ef2baa6116b3d2a0bf5154136573a9");

Expand All @@ -65,7 +66,7 @@ mod tests {

#[test]
fn test_get_nonce_at() {
let rpc_state = RpcState::new_infura(RpcChain::TestNet, BlockTag::Latest.into());
let rpc_state = RpcState::new_infura(RpcChain::TestNet, BlockTag::Latest.into()).unwrap();
// Contract deployed by xqft which will not be used again, so nonce changes will not break
// this test.
let address =
Expand All @@ -75,7 +76,7 @@ mod tests {

#[test]
fn test_get_storage_at() {
let rpc_state = RpcState::new_infura(RpcChain::MainNet, BlockTag::Latest.into());
let rpc_state = RpcState::new_infura(RpcChain::MainNet, BlockTag::Latest.into()).unwrap();
let address =
contract_address!("00b081f7ba1efc6fe98770b09a827ae373ef2baa6116b3d2a0bf5154136573a9");
let key = StorageKey(patricia_key!(0u128));
Expand All @@ -85,22 +86,22 @@ mod tests {

#[test]
fn test_get_transaction() {
let rpc_state = RpcState::new_infura(RpcChain::MainNet, BlockTag::Latest.into());
let rpc_state = RpcState::new_infura(RpcChain::MainNet, BlockTag::Latest.into()).unwrap();
let tx_hash = TransactionHash(stark_felt!(
"06da92cfbdceac5e5e94a1f40772d6c79d34f011815606742658559ec77b6955"
));

rpc_state.get_transaction(&tx_hash);
assert!(rpc_state.get_transaction(&tx_hash).is_ok());
}

#[test]
fn test_try_from_invoke() {
let rpc_state = RpcState::new_infura(RpcChain::MainNet, BlockTag::Latest.into());
let rpc_state = RpcState::new_infura(RpcChain::MainNet, BlockTag::Latest.into()).unwrap();
let tx_hash = TransactionHash(stark_felt!(
"06da92cfbdceac5e5e94a1f40772d6c79d34f011815606742658559ec77b6955"
));

let tx = rpc_state.get_transaction(&tx_hash);
let tx = rpc_state.get_transaction(&tx_hash).unwrap();
match tx {
SNTransaction::Invoke(tx) => {
InvokeFunction::from_invoke_transaction(tx, StarknetChainId::MainNet)
Expand All @@ -112,22 +113,22 @@ mod tests {

#[test]
fn test_get_block_info() {
let rpc_state = RpcState::new_infura(RpcChain::MainNet, BlockTag::Latest.into());
let rpc_state = RpcState::new_infura(RpcChain::MainNet, BlockTag::Latest.into()).unwrap();

rpc_state.get_block_info();
assert!(rpc_state.get_block_info().is_ok());
}

// Tested with the following query to the Feeder Gateway API:
// https://alpha4-2.starknet.io/feeder_gateway/get_transaction_trace?transactionHash=0x019feb888a2d53ffddb7a1750264640afab8e9c23119e648b5259f1b5e7d51bc
#[test]
fn test_get_transaction_trace() {
let rpc_state = RpcState::new_infura(RpcChain::TestNet2, BlockTag::Latest.into());
let rpc_state = RpcState::new_infura(RpcChain::TestNet2, BlockTag::Latest.into()).unwrap();

let tx_hash = TransactionHash(stark_felt!(
"19feb888a2d53ffddb7a1750264640afab8e9c23119e648b5259f1b5e7d51bc"
));

let tx_trace = rpc_state.get_transaction_trace(&tx_hash);
let tx_trace = rpc_state.get_transaction_trace(&tx_hash).unwrap();

assert_eq!(
tx_trace.signature,
Expand Down Expand Up @@ -297,11 +298,11 @@ mod tests {

#[test]
fn test_get_transaction_receipt() {
let rpc_state = RpcState::new_infura(RpcChain::MainNet, BlockTag::Latest.into());
let rpc_state = RpcState::new_infura(RpcChain::MainNet, BlockTag::Latest.into()).unwrap();
let tx_hash = TransactionHash(stark_felt!(
"06da92cfbdceac5e5e94a1f40772d6c79d34f011815606742658559ec77b6955"
));

rpc_state.get_transaction_receipt(&tx_hash);
assert!(rpc_state.get_transaction_receipt(&tx_hash).is_ok());
}
}
Loading