Skip to content

Commit da02003

Browse files
committed
wip
1 parent 8145b26 commit da02003

File tree

1 file changed

+20
-44
lines changed

1 file changed

+20
-44
lines changed

crates/rpc/rpc-server/tests/controller_deployment.rs

Lines changed: 20 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ use katana_rpc_server::middleware::cartridge::ControllerDeploymentLayer;
2727
use katana_rpc_server::starknet::{PendingBlockProvider, StarknetApi, StarknetApiConfig};
2828
use katana_rpc_types::*;
2929
use katana_tasks::TaskManager;
30-
use serde_json::json;
30+
use serde_json::{json, Value};
3131
use starknet::signers::SigningKey;
3232
use tokio::net::TcpListener;
3333
use tower::Layer;
@@ -68,10 +68,7 @@ async fn estimate_fee_forwards_when_no_controllers() {
6868
let setup = setup_test(HashMap::new(), inner_responses).await;
6969

7070
let tx = make_invoke_tx_json(DEPLOYER_ADDRESS);
71-
let params = json!([[tx], [], "latest"]);
72-
let raw = make_rpc_request_str("starknet_estimateFee", &params);
73-
74-
let request: Request<'_> = serde_json::from_str(&raw).unwrap();
71+
let request = make_rpc_request("starknet_estimateFee", &json!([[tx], [], "latest"]));
7572
let response = setup.service.call(request).await;
7673

7774
// The inner service should have been called exactly once.
@@ -102,9 +99,9 @@ async fn estimate_fee_prepends_deploy_tx_for_controller() {
10299
m
103100
};
104101

102+
// The inner service will receive 2 txs (1 deploy + 1 original) thus return 2 estimates.
105103
let inner_responses = {
106104
let mut m = HashMap::new();
107-
// The inner service will receive 2 txs (1 deploy + 1 original).
108105
m.insert(
109106
"starknet_estimateFee".to_string(),
110107
json!([
@@ -133,11 +130,8 @@ async fn estimate_fee_prepends_deploy_tx_for_controller() {
133130

134131
let setup = setup_test(cartridge_responses, inner_responses).await;
135132

136-
let tx = make_invoke_tx_json(CONTROLLER_ADDRESS);
137-
let params = json!([[tx], [], "latest"]);
138-
let raw = make_rpc_request_str("starknet_estimateFee", &params);
139-
140-
let request: Request<'_> = serde_json::from_str(&raw).unwrap();
133+
let txs = [make_invoke_tx_json(CONTROLLER_ADDRESS)];
134+
let request = make_rpc_request("starknet_estimateFee", &json!([txs, [], "latest"]));
141135
let response = setup.service.call(request).await;
142136

143137
// Inner service should receive 2 txs: deploy tx + original tx.
@@ -192,11 +186,8 @@ async fn estimate_fee_forwards_for_non_controller() {
192186

193187
let setup = setup_test(HashMap::new(), inner_responses).await;
194188

195-
let tx = make_invoke_tx_json(NON_CONTROLLER_ADDRESS);
196-
let params = json!([[tx], [], "latest"]);
197-
let raw = make_rpc_request_str("starknet_estimateFee", &params);
198-
199-
let request: Request<'_> = serde_json::from_str(&raw).unwrap();
189+
let txs = [make_invoke_tx_json(NON_CONTROLLER_ADDRESS)];
190+
let request = make_rpc_request("starknet_estimateFee", &json!([txs, [], "latest"]));
200191
let response = setup.service.call(request).await;
201192

202193
// Inner service receives the request unchanged (1 tx).
@@ -245,13 +236,10 @@ async fn estimate_fee_deduplicates_same_controller() {
245236

246237
let setup = setup_test(cartridge_responses, inner_responses).await;
247238

248-
let tx1 = make_invoke_tx_json(CONTROLLER_ADDRESS);
249-
let tx2 = make_invoke_tx_json(CONTROLLER_ADDRESS);
250-
let tx3 = make_invoke_tx_json(CONTROLLER_ADDRESS);
251-
let params = json!([[tx1, tx2, tx3], [], "latest"]);
252-
let raw = make_rpc_request_str("starknet_estimateFee", &params);
239+
let tx = make_invoke_tx_json(CONTROLLER_ADDRESS);
240+
let txs = [tx, tx.clone(), tx.clone()];
253241

254-
let request: Request<'_> = serde_json::from_str(&raw).unwrap();
242+
let request = make_rpc_request("starknet_estimateFee", &json!([txs, [], "latest"]));
255243
let response = setup.service.call(request).await;
256244

257245
// Inner service should receive 4 txs: 1 deploy + 3 original.
@@ -294,9 +282,7 @@ async fn execute_outside_skips_deploy_when_already_deployed() {
294282
let setup = setup_test(HashMap::new(), HashMap::new()).await;
295283

296284
let params = make_execute_outside_params(DEPLOYER_ADDRESS);
297-
let raw = make_rpc_request_str("cartridge_addExecuteFromOutside", &params);
298-
299-
let request: Request<'_> = serde_json::from_str(&raw).unwrap();
285+
let request = make_rpc_request("cartridge_addExecuteFromOutside", &params);
300286
let _response = setup.service.call(request).await;
301287

302288
// Pool should be empty — no deploy tx was added.
@@ -333,9 +319,7 @@ async fn execute_outside_deploys_controller() {
333319
let setup = setup_test(cartridge_responses, HashMap::new()).await;
334320

335321
let params = make_execute_outside_params(CONTROLLER_ADDRESS);
336-
let raw = make_rpc_request_str("cartridge_addExecuteFromOutside", &params);
337-
338-
let request: Request<'_> = serde_json::from_str(&raw).unwrap();
322+
let request = make_rpc_request("cartridge_addExecuteFromOutside", &params);
339323
let _response = setup.service.call(request).await;
340324

341325
// A deploy transaction should have been added to the pool.
@@ -361,9 +345,7 @@ async fn execute_outside_skips_deploy_for_non_controller() {
361345
let setup = setup_test(HashMap::new(), HashMap::new()).await;
362346

363347
let params = make_execute_outside_params(NON_CONTROLLER_ADDRESS);
364-
let raw = make_rpc_request_str("cartridge_addExecuteFromOutside", &params);
365-
366-
let request: Request<'_> = serde_json::from_str(&raw).unwrap();
348+
let request = make_rpc_request("cartridge_addExecuteFromOutside", &params);
367349
let _response = setup.service.call(request).await;
368350

369351
// Pool should be empty — no deploy tx was added.
@@ -395,9 +377,7 @@ async fn execute_outside_tx_method_variant() {
395377
let setup = setup_test(cartridge_responses, HashMap::new()).await;
396378

397379
let params = make_execute_outside_params(CONTROLLER_ADDRESS);
398-
let raw = make_rpc_request_str("cartridge_addExecuteOutsideTransaction", &params);
399-
400-
let request: Request<'_> = serde_json::from_str(&raw).unwrap();
380+
let request = make_rpc_request("cartridge_addExecuteOutsideTransaction", &params);
401381
let _response = setup.service.call(request).await;
402382

403383
// A deploy transaction should have been added to the pool.
@@ -425,9 +405,7 @@ async fn execute_outside_tx_method_variant() {
425405
async fn passthrough_other_methods() {
426406
let setup = setup_test(HashMap::new(), HashMap::new()).await;
427407

428-
let raw = make_rpc_request_str("starknet_getBlockNumber", &json!([]));
429-
430-
let request: Request<'_> = serde_json::from_str(&raw).unwrap();
408+
let request = make_rpc_request("starknet_getBlockNumber", &json!([]));
431409
let _response = setup.service.call(request).await;
432410

433411
let calls = setup.mock_rpc.recorded_calls();
@@ -451,9 +429,7 @@ async fn passthrough_malformed_estimate_fee() {
451429
let setup = setup_test(HashMap::new(), HashMap::new()).await;
452430

453431
// Malformed params — not a valid array of transactions.
454-
let raw = make_rpc_request_str("starknet_estimateFee", &json!(["not_valid"]));
455-
456-
let request: Request<'_> = serde_json::from_str(&raw).unwrap();
432+
let request = make_rpc_request("starknet_estimateFee", &json!(["not_valid"]));
457433
let _response = setup.service.call(request).await;
458434

459435
// The inner service should have received the request (fallthrough).
@@ -724,14 +700,14 @@ fn make_invoke_tx_json(sender_address: &str) -> serde_json::Value {
724700
}
725701

726702
/// Creates a JSON-RPC 2.0 request string and constructs the corresponding `Request<'_>`.
727-
fn make_rpc_request_str(method: &str, params: &serde_json::Value) -> String {
728-
json!({
703+
fn make_rpc_request<'a>(method: &str, params: &serde_json::Value) -> Request<'a> {
704+
serde_json::from_value(json!({
729705
"jsonrpc": "2.0",
730706
"id": 1,
731707
"method": method,
732708
"params": params
733-
})
734-
.to_string()
709+
}))
710+
.unwrap()
735711
}
736712

737713
/// A complete test setup context.

0 commit comments

Comments
 (0)