test: add test case for op tx env conversion (#18581)

This commit is contained in:
Matthias Seitz
2025-09-22 11:39:28 +02:00
committed by GitHub
parent 36107c60ab
commit 3ebfd7a25e
3 changed files with 53 additions and 25 deletions

1
Cargo.lock generated
View File

@@ -10073,6 +10073,7 @@ dependencies = [
"reth-primitives-traits",
"reth-storage-api",
"revm-context",
"serde_json",
"thiserror 2.0.16",
]

View File

@@ -45,6 +45,9 @@ thiserror.workspace = true
auto_impl.workspace = true
dyn-clone.workspace = true
[dev-dependencies]
serde_json.workspace = true
[features]
default = []
op = [

View File

@@ -1124,35 +1124,59 @@ mod transaction_response_tests {
}
#[cfg(feature = "op")]
#[test]
fn test_optimism_transaction_conversion() {
use op_alloy_consensus::OpTxEnvelope;
use op_alloy_network::Optimism;
use reth_optimism_primitives::OpTransactionSigned;
mod op {
use super::*;
use crate::transaction::TryIntoTxEnv;
use revm_context::{BlockEnv, CfgEnv};
let signed_tx = Signed::new_unchecked(
TxLegacy::default(),
Signature::new(U256::ONE, U256::ONE, false),
B256::ZERO,
);
let envelope = OpTxEnvelope::Legacy(signed_tx);
#[test]
fn test_optimism_transaction_conversion() {
use op_alloy_consensus::OpTxEnvelope;
use op_alloy_network::Optimism;
use reth_optimism_primitives::OpTransactionSigned;
let inner_tx = Transaction {
inner: Recovered::new_unchecked(envelope, Address::ZERO),
block_hash: None,
block_number: None,
transaction_index: None,
effective_gas_price: None,
};
let signed_tx = Signed::new_unchecked(
TxLegacy::default(),
Signature::new(U256::ONE, U256::ONE, false),
B256::ZERO,
);
let envelope = OpTxEnvelope::Legacy(signed_tx);
let tx_response = op_alloy_rpc_types::Transaction {
inner: inner_tx,
deposit_nonce: None,
deposit_receipt_version: None,
};
let inner_tx = Transaction {
inner: Recovered::new_unchecked(envelope, Address::ZERO),
block_hash: None,
block_number: None,
transaction_index: None,
effective_gas_price: None,
};
let result = <OpTransactionSigned as TryFromTransactionResponse<Optimism>>::from_transaction_response(tx_response);
let tx_response = op_alloy_rpc_types::Transaction {
inner: inner_tx,
deposit_nonce: None,
deposit_receipt_version: None,
};
assert!(result.is_ok());
let result = <OpTransactionSigned as TryFromTransactionResponse<Optimism>>::from_transaction_response(tx_response);
assert!(result.is_ok());
}
#[test]
fn test_op_into_tx_env() {
use op_alloy_rpc_types::OpTransactionRequest;
use op_revm::{transaction::OpTxTr, OpSpecId};
use revm_context::Transaction;
let s = r#"{"from":"0x0000000000000000000000000000000000000000","to":"0x6d362b9c3ab68c0b7c79e8a714f1d7f3af63655f","input":"0x1626ba7ec8ee0d506e864589b799a645ddb88b08f5d39e8049f9f702b3b61fa15e55fc73000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000550000002d6db27c52e3c11c1cf24072004ac75cba49b25bf45f513902e469755e1f3bf2ca8324ad16930b0a965c012a24bb1101f876ebebac047bd3b6bf610205a27171eaaeffe4b5e5589936f4e542d637b627311b0000000000000000000000","data":"0x1626ba7ec8ee0d506e864589b799a645ddb88b08f5d39e8049f9f702b3b61fa15e55fc73000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000550000002d6db27c52e3c11c1cf24072004ac75cba49b25bf45f513902e469755e1f3bf2ca8324ad16930b0a965c012a24bb1101f876ebebac047bd3b6bf610205a27171eaaeffe4b5e5589936f4e542d637b627311b0000000000000000000000","chainId":"0x7a69"}"#;
let req: OpTransactionRequest = serde_json::from_str(s).unwrap();
let cfg = CfgEnv::<OpSpecId>::default();
let block_env = BlockEnv::default();
let tx_env = req.try_into_tx_env(&cfg, &block_env).unwrap();
assert_eq!(tx_env.gas_limit(), block_env.gas_limit);
assert_eq!(tx_env.gas_price(), 0);
assert!(tx_env.enveloped_tx().unwrap().is_empty());
}
}
}