From d2331108f69a8f213808a2087dffc6012f9f9a12 Mon Sep 17 00:00:00 2001 From: Ayelet Zilber Date: Wed, 3 Apr 2024 17:30:08 +0300 Subject: [PATCH] refactor: replace tests json files with instances --- crates/gateway/src/gateway_test.rs | 105 ++++++++++++++---- .../json_files_for_testing/declare_v3.json | 94 ---------------- .../deploy_account_v3.json | 37 ------ .../src/json_files_for_testing/invoke_v3.json | 37 ------ 4 files changed, 86 insertions(+), 187 deletions(-) delete mode 100644 crates/gateway/src/json_files_for_testing/declare_v3.json delete mode 100644 crates/gateway/src/json_files_for_testing/deploy_account_v3.json delete mode 100644 crates/gateway/src/json_files_for_testing/invoke_v3.json diff --git a/crates/gateway/src/gateway_test.rs b/crates/gateway/src/gateway_test.rs index 2e374c1e..00de82bb 100644 --- a/crates/gateway/src/gateway_test.rs +++ b/crates/gateway/src/gateway_test.rs @@ -1,26 +1,93 @@ use crate::gateway::add_transaction; +use axum::Json; use axum::{body::HttpBody, response::IntoResponse}; -use rstest::rstest; -use starknet_api::external_transaction::ExternalTransaction; -use std::fs::File; -use std::io::BufReader; - -// TODO(Ayelet): Replace the use of the JSON files with generated instances, then serialize these -// into JSON for testing. -#[rstest] -#[case("./src/json_files_for_testing/declare_v3.json", "DECLARE")] -#[case( - "./src/json_files_for_testing/deploy_account_v3.json", - "DEPLOY_ACCOUNT" -)] -#[case("./src/json_files_for_testing/invoke_v3.json", "INVOKE")] +use rstest::fixture; +use starknet_api::external_transaction::DataAvailabilityMode::L1; +use starknet_api::external_transaction::{ + ExternalDeclareTransaction, ExternalDeclareTransactionV3, ExternalDeployAccountTransaction, + ExternalDeployAccountTransactionV3, ExternalInvokeTransaction, ExternalInvokeTransactionV3, + ExternalTransaction, +}; + +// TODO(Ayelet): Change to non-default values. +#[fixture] +fn create_external_declare_transaction_v3() -> ExternalTransaction { + let declare_transaction = ExternalDeclareTransactionV3 { + contract_class: Default::default(), + resource_bounds: Default::default(), + tip: Default::default(), + signature: Default::default(), + nonce: Default::default(), + compiled_class_hash: Default::default(), + sender_address: Default::default(), + nonce_data_availability_mode: L1, + fee_data_availability_mode: L1, + paymaster_data: Default::default(), + account_deployment_data: Default::default(), + version: Default::default(), + r#type: Default::default(), + }; + + ExternalTransaction::Declare(ExternalDeclareTransaction::V3(declare_transaction)) +} + +// TODO(Ayelet): Change to non-default values. +#[fixture] +fn create_external_deploy_account_transaction_v3() -> ExternalTransaction { + let deploy_account_transaction = ExternalDeployAccountTransactionV3 { + resource_bounds: Default::default(), + tip: Default::default(), + contract_address_salt: Default::default(), + class_hash: Default::default(), + constructor_calldata: Default::default(), + nonce: Default::default(), + signature: Default::default(), + nonce_data_availability_mode: L1, + fee_data_availability_mode: L1, + paymaster_data: Default::default(), + version: Default::default(), + r#type: Default::default(), + }; + + ExternalTransaction::DeployAccount(ExternalDeployAccountTransaction::V3( + deploy_account_transaction, + )) +} + +// TODO(Ayelet): Change to non-default values. +#[fixture] +fn create_external_invoke_transaction_v3() -> ExternalTransaction { + let invoke_transaction = ExternalInvokeTransactionV3 { + resource_bounds: Default::default(), + tip: Default::default(), + calldata: Default::default(), + sender_address: Default::default(), + nonce: Default::default(), + signature: Default::default(), + nonce_data_availability_mode: L1, + fee_data_availability_mode: L1, + paymaster_data: Default::default(), + account_deployment_data: Default::default(), + version: Default::default(), + r#type: Default::default(), + }; + + ExternalTransaction::Invoke(ExternalInvokeTransaction::V3(invoke_transaction)) +} + +#[rstest::rstest] +#[case("DECLARE", create_external_declare_transaction_v3())] +#[case("DEPLOY_ACCOUNT", create_external_deploy_account_transaction_v3())] +#[case("INVOKE", create_external_invoke_transaction_v3())] #[tokio::test] -async fn test_add_transaction(#[case] json_file_path: &str, #[case] expected_response: &str) { - let file = File::open(json_file_path).unwrap(); - let reader = BufReader::new(file); - let transaction: ExternalTransaction = serde_json::from_reader(reader).unwrap(); - let response = add_transaction(transaction.into()).await.into_response(); +async fn test_add_transaction( + #[case] expected_response: &str, + #[case] transaction_instance: ExternalTransaction, +) { + let transaction_json: Json = Json(transaction_instance); + let response = add_transaction(transaction_json).await.into_response(); let response_bytes = response.into_body().collect().await.unwrap().to_bytes(); + assert_eq!( &String::from_utf8(response_bytes.to_vec()).unwrap(), expected_response diff --git a/crates/gateway/src/json_files_for_testing/declare_v3.json b/crates/gateway/src/json_files_for_testing/declare_v3.json deleted file mode 100644 index 7fbdea94..00000000 --- a/crates/gateway/src/json_files_for_testing/declare_v3.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "compiled_class_hash": "0x610e7b31000d4c7ced1196680fe0082f005e244356eb24567ee0c03d384c1ca", - "contract_class": { - "contract_class_version": "0.1.0", - "sierra_program": "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", - "entry_points_by_type": { - "EXTERNAL": [ - { - "selector": "0x22ff5f21f0b81b113e63f7db6da94fedef11b2119b4088b89664fb9a3cb658", - "function_idx": 0 - }, - { - "selector": "0x3c118a68e16e12e97ed25cb4901c12f4d3162818669cc44c391d8049924c14", - "function_idx": 3 - }, - { - "selector": "0x5562b3e932b4d139366854d5a2e578382e6a3b6572ac9943d55e7efbe43d00", - "function_idx": 9 - }, - { - "selector": "0x5df99ae77df976b4f0e5cf28c7dcfe09bd6e81aab787b19ac0c08e03d928cf", - "function_idx": 1 - }, - { - "selector": "0xb17d8a2731ba7ca1816631e6be14f0fc1b8390422d649fa27f0fbb0c91eea8", - "function_idx": 10 - }, - { - "selector": "0xe7510edcf6e9f1b70f7bd1f488767b50f0363422f3c563160ab77adf62467b", - "function_idx": 12 - }, - { - "selector": "0x169f135eddda5ab51886052d777a57f2ea9c162d713691b5e04a6d4ed71d47f", - "function_idx": 11 - }, - { - "selector": "0x27a4a7332e590dd789019a6d125ff2aacd358e453090978cbf81f0d85e4c045", - "function_idx": 2 - }, - { - "selector": "0x27c3334165536f239cfd400ed956eabff55fc60de4fb56728b6a4f6b87db01c", - "function_idx": 7 - }, - { - "selector": "0x2913ee03e5e3308c41e308bd391ea4faac9b9cb5062c76a6b3ab4f65397e106", - "function_idx": 4 - }, - { - "selector": "0x2d7cf5d5a324a320f9f37804b1615a533fde487400b41af80f13f7ac5581325", - "function_idx": 5 - }, - { - "selector": "0x31aafc75f498fdfa7528880ad27246b4c15af4954f96228c9a132b328de1c92", - "function_idx": 6 - }, - { - "selector": "0x3604cea1cdb094a73a31144f14a3e5861613c008e1e879939ebc4827d10cd50", - "function_idx": 8 - } - ], - "L1_HANDLER": [], - "CONSTRUCTOR": [ - { - "selector": "0x28ffe4ff0f226a9107253e17a904099aa4f63a02a5621de0576e5aa71bc5194", - "function_idx": 13 - } - ] - }, - "abi": "[{\"type\": \"constructor\", \"name\": \"constructor\", \"inputs\": []}, {\"type\": \"function\", \"name\": \"test\", \"inputs\": [{\"name\": \"arg\", \"type\": \"core::felt252\"}, {\"name\": \"arg1\", \"type\": \"core::felt252\"}, {\"name\": \"arg2\", \"type\": \"core::felt252\"}], \"outputs\": [{\"type\": \"core::felt252\"}], \"state_mutability\": \"external\"}, {\"type\": \"function\", \"name\": \"test_storage_read\", \"inputs\": [{\"name\": \"address\", \"type\": \"core::felt252\"}], \"outputs\": [{\"type\": \"core::felt252\"}], \"state_mutability\": \"external\"}, {\"type\": \"function\", \"name\": \"test_storage_write\", \"inputs\": [{\"name\": \"address\", \"type\": \"core::felt252\"}, {\"name\": \"value\", \"type\": \"core::felt252\"}], \"outputs\": [], \"state_mutability\": \"external\"}, {\"type\": \"function\", \"name\": \"test_get_execution_info\", \"inputs\": [{\"name\": \"block_number\", \"type\": \"core::felt252\"}, {\"name\": \"block_timestamp\", \"type\": \"core::felt252\"}, {\"name\": \"sequencer_address\", \"type\": \"core::felt252\"}, {\"name\": \"version\", \"type\": \"core::felt252\"}, {\"name\": \"account_address\", \"type\": \"core::felt252\"}, {\"name\": \"max_fee\", \"type\": \"core::felt252\"}, {\"name\": \"chain_id\", \"type\": \"core::felt252\"}, {\"name\": \"nonce\", \"type\": \"core::felt252\"}, {\"name\": \"caller_address\", \"type\": \"core::felt252\"}, {\"name\": \"contract_address\", \"type\": \"core::felt252\"}, {\"name\": \"entry_point_selector\", \"type\": \"core::felt252\"}], \"outputs\": [], \"state_mutability\": \"external\"}, {\"type\": \"function\", \"name\": \"test_emit_event\", \"inputs\": [{\"name\": \"keys\", \"type\": \"core::array::Array::\"}, {\"name\": \"data\", \"type\": \"core::array::Array::\"}], \"outputs\": [], \"state_mutability\": \"external\"}, {\"type\": \"function\", \"name\": \"test_send_message_to_l1\", \"inputs\": [{\"name\": \"to_address\", \"type\": \"core::felt252\"}, {\"name\": \"payload\", \"type\": \"core::array::Array::\"}], \"outputs\": [], \"state_mutability\": \"external\"}, {\"type\": \"function\", \"name\": \"test_emit_simple_event\", \"inputs\": [{\"name\": \"argument\", \"type\": \"core::felt252\"}, {\"name\": \"my_array\", \"type\": \"core::array::Array::\"}, {\"name\": \"another_argument\", \"type\": \"core::felt252\"}], \"outputs\": [], \"state_mutability\": \"external\"}, {\"type\": \"function\", \"name\": \"test_call_contract\", \"inputs\": [{\"name\": \"contract_address\", \"type\": \"core::starknet::contract_address::ContractAddress\"}, {\"name\": \"entry_point_selector\", \"type\": \"core::felt252\"}, {\"name\": \"calldata\", \"type\": \"core::array::Array::\"}], \"outputs\": [], \"state_mutability\": \"external\"}, {\"type\": \"function\", \"name\": \"test_library_call\", \"inputs\": [{\"name\": \"class_hash\", \"type\": \"core::starknet::class_hash::ClassHash\"}, {\"name\": \"entry_point_selector\", \"type\": \"core::felt252\"}, {\"name\": \"calldata\", \"type\": \"core::array::Array::\"}], \"outputs\": [], \"state_mutability\": \"external\"}, {\"type\": \"function\", \"name\": \"assert_eq\", \"inputs\": [{\"name\": \"x\", \"type\": \"core::felt252\"}, {\"name\": \"y\", \"type\": \"core::felt252\"}], \"outputs\": [{\"type\": \"core::felt252\"}], \"state_mutability\": \"external\"}, {\"type\": \"function\", \"name\": \"test_segment_arena\", \"inputs\": [], \"outputs\": [{\"type\": \"core::felt252\"}], \"state_mutability\": \"external\"}, {\"type\": \"enum\", \"name\": \"core::bool\", \"variants\": [{\"name\": \"False\", \"type\": \"()\"}, {\"name\": \"True\", \"type\": \"()\"}]}, {\"type\": \"function\", \"name\": \"test_deploy\", \"inputs\": [{\"name\": \"class_hash\", \"type\": \"core::starknet::class_hash::ClassHash\"}, {\"name\": \"contract_address_salt\", \"type\": \"core::felt252\"}, {\"name\": \"calldata\", \"type\": \"core::array::Array::\"}, {\"name\": \"deploy_from_zero\", \"type\": \"core::bool\"}], \"outputs\": [], \"state_mutability\": \"external\"}, {\"type\": \"function\", \"name\": \"test_replace_class\", \"inputs\": [{\"name\": \"class_hash\", \"type\": \"core::starknet::class_hash::ClassHash\"}], \"outputs\": [], \"state_mutability\": \"external\"}, {\"type\": \"event\", \"name\": \"test_contract::test_contract_cairo1::TestContract::simple_event\", \"kind\": \"struct\", \"members\": [{\"name\": \"argument\", \"type\": \"core::felt252\", \"kind\": \"data\"}, {\"name\": \"my_array\", \"type\": \"core::array::Array::\", \"kind\": \"data\"}]}, {\"type\": \"event\", \"name\": \"test_contract::test_contract_cairo1::TestContract::Event\", \"kind\": \"enum\", \"variants\": [{\"name\": \"simple_event\", \"type\": \"test_contract::test_contract_cairo1::TestContract::simple_event\", \"kind\": \"nested\"}]}]" - }, - "nonce": "0x0", - "resource_bounds": { - "L1_GAS": { - "max_amount": "0x5", - "max_price_per_unit": "0x6" - }, - "L2_GAS": { - "max_amount": "0x0", - "max_price_per_unit": "0x0" - } - }, - "sender_address": "0x1b34d819720bd84c89bdfb476bc2c4d0de9a41b766efabd20fa292280e4c6d9", - "signature": [ - "0x1132577", - "0x17df53c" - ], - "type": "DECLARE", - "version": "0x3", - "tip": "0x0", - "account_deployment_data": [], - "fee_data_availability_mode": 0, - "nonce_data_availability_mode": 0, - "paymaster_data": [] -} diff --git a/crates/gateway/src/json_files_for_testing/deploy_account_v3.json b/crates/gateway/src/json_files_for_testing/deploy_account_v3.json deleted file mode 100644 index ced06cad..00000000 --- a/crates/gateway/src/json_files_for_testing/deploy_account_v3.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "class_hash": "0x1fcd2dcd811e049eaa730b87038a68f39220a04986b43fe287d690da0df01b8", - "constructor_calldata": [ - "0x0", - "0x1", - "0x2", - "0x3", - "0x4", - "0x5", - "0x6", - "0x7", - "0x8", - "0x9" - ], - "contract_address_salt": "0x2", - "nonce": "0x0", - "resource_bounds": { - "L1_GAS": { - "max_amount": "0x5", - "max_price_per_unit": "0x6" - }, - "L2_GAS": { - "max_amount": "0x0", - "max_price_per_unit": "0x0" - } - }, - "signature": [ - "0x1132577", - "0x17df53c" - ], - "type": "DEPLOY_ACCOUNT", - "version": "0x3", - "tip": "0x0", - "nonce_data_availability_mode": 0, - "fee_data_availability_mode": 0, - "paymaster_data": [] -} diff --git a/crates/gateway/src/json_files_for_testing/invoke_v3.json b/crates/gateway/src/json_files_for_testing/invoke_v3.json deleted file mode 100644 index ad126901..00000000 --- a/crates/gateway/src/json_files_for_testing/invoke_v3.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "calldata": [ - "0x0", - "0x1", - "0x2", - "0x3", - "0x4", - "0x5", - "0x6", - "0x7", - "0x8", - "0x9" - ], - "nonce": "0x0", - "resource_bounds": { - "L1_GAS": { - "max_amount": "0x5", - "max_price_per_unit": "0x6" - }, - "L2_GAS": { - "max_amount": "0x0", - "max_price_per_unit": "0x0" - } - }, - "sender_address": "0x1b34d819720bd84c89bdfb476bc2c4d0de9a41b766efabd20fa292280e4c6d9", - "signature": [ - "0x1132577", - "0x17df53c" - ], - "type": "INVOKE_FUNCTION", - "version": "0x3", - "tip": "0x0", - "nonce_data_availability_mode": 1, - "fee_data_availability_mode": 1, - "paymaster_data": [], - "account_deployment_data": [] -}