Repository: 0xSpaceShard/starknet-devnet (language: python)

Issue:
Test/rpc/constructor calldata
## Usage related changes

<!-- How the changes from this PR affect users. -->

no change for user

## Development related changes

<!-- How these changes affect the developers of this project - e.g. changes in testing or CI/CD. -->

closes #198 

changed `test/deploy_rpc.json`
- added constructor calldata
- changed ABI to match ABI output from `test/contracts/cairo/contract.cairo`
- changed `entry_points_by_type` to match compilation output from `test/contracts/cairo/contract.cairo`

changed `starknet_devnet/blueprints/rpc/call.py`
- added handling invalid input for calldata (before executing starknet `call`)



### generating `test/deploy_rpc.json`
`abi` is generated from
```
nile compile test/contracts/cairo/contract.cairo
```

`program` is generated from
```
from starkware.starknet.compiler.compile import compile_starknet_files
from starkware.starknet.services.api.gateway.transaction_utils import compress_program, decompress_program

contract_class = compile_starknet_files(['test/contracts/cairo/contract.cairo'])
program = compress_program(contract_class.program.Schema().dump(contract_class.program))
```

## Checklist:

- [x] No linter errors
- [x] Performed a self-review of the code
- [x] Rebased to the last commit of the target branch (or merged it into my branch)
- [x] Documented the changes
- [x] Linked the issues which this PR resolves
- [x] Updated the tests
- [x] All tests are passing

Test RPC `add_deploy_transaction` with `constructor_calldata != []`
Contract currently used in RPC deploy transaction test currently does not accept any constructor_calldata, which means we are not testing if we are correctly parsing passed calldata. This should be improved by either changing contract used in these tests or adding a separate tests using different contract with nonempty constructor parameters. 


Discussion / hints:

i'm planning to handle this issue

however, i think that its better to wait until [this pull request](https://github.com/Shard-Labs/starknet-devnet/pull/220) is merged

what do you guys think?

@cptartur 
@internnos yeah, probably would be good to wait first! 
@cptartur, @drknzz is this it ok for @internnos to handle this, I mean it's not covered in the PR?
Yeah, it's not covered in the PR, so I'd say go ahead.
cool,

thank you!

Fix patch:
diff --git a/starknet_devnet/blueprints/rpc/call.py b/starknet_devnet/blueprints/rpc/call.py
index 5d1f343ef..887491506 100644
--- a/starknet_devnet/blueprints/rpc/call.py
+++ b/starknet_devnet/blueprints/rpc/call.py
@@ -27,6 +27,13 @@ async def call(request: FunctionCall, block_id: BlockId) -> List[Felt]:
     ):
         raise RpcError(code=20, message="Contract not found")
 
+    # exception handling using [rpc_felt(int(calldata_value, 1)) for calldata_value in request["calldata"]]
+    # does not work properly, so we use the following workaround
+    for calldata_value in request["calldata"]:
+        try:
+            rpc_felt(int(calldata_value, 16))
+        except (ValueError, TypeError) as error:
+            raise RpcError(code=22, message="Invalid calldata") from error
     try:
         result = await state.starknet_wrapper.call(
             transaction=make_invoke_function(request)
@@ -36,6 +43,8 @@ async def call(request: FunctionCall, block_id: BlockId) -> List[Felt]:
     except StarknetDevnetException as ex:
         raise RpcError(code=-1, message=ex.message) from ex
     except StarkException as ex:
+        if ex.code.name == "TRANSACTION_FAILED" and ex.code.value == 39:
+            raise RpcError(code=22, message="Invalid calldata") from ex
         if f"Entry point {request['entry_point_selector']} not found" in ex.message:
             raise RpcError(code=21, message="Invalid message selector") from ex
         if "While handling calldata" in ex.message:
diff --git a/starknet_devnet/constants.py b/starknet_devnet/constants.py
index 1fd4e325b..b5b3e470d 100644
--- a/starknet_devnet/constants.py
+++ b/starknet_devnet/constants.py
@@ -17,5 +17,5 @@
 DEFAULT_PORT = 5050
 
 DEFAULT_ACCOUNTS = 10
-DEFAULT_INITIAL_BALANCE = 10**21
-DEFAULT_GAS_PRICE = 10**11
+DEFAULT_INITIAL_BALANCE = 10 ** 21
+DEFAULT_GAS_PRICE = 10 ** 11


Test patch:
diff --git a/test/deploy_rpc.json b/test/deploy_rpc.json
index 1958a8d13..c82270cb8 100644
--- a/test/deploy_rpc.json
+++ b/test/deploy_rpc.json
@@ -1,47 +1,119 @@
 {
-    "constructor_calldata": [],
-    "contract_definition": {
-        "program": "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",
-        "abi": [
-            {
-                "inputs": [
-                    {
-                        "name": "amount",
-                        "type": "felt"
-                    }
-                ],
-                "name": "increase_balance",
-                "outputs": [],
-                "type": "function"
+    "constructor_calldata":[
+      "69"
+    ],
+    "contract_definition":{
+      "program":"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",
+      "abi":[
+        {
+          "members":[
+            {
+              "name":"x",
+              "offset":0,
+              "type":"felt"
             },
             {
-                "inputs": [],
-                "name": "get_balance",
-                "outputs": [
-                    {
-                        "name": "res",
-                        "type": "felt"
-                    }
-                ],
-                "stateMutability": "view",
-                "type": "function"
+              "name":"y",
+              "offset":1,
+              "type":"felt"
             }
-        ],
-        "entry_points_by_type": {
-            "CONSTRUCTOR": [],
-            "EXTERNAL": [
-                {
-                    "offset": "0x3a",
-                    "selector": "0x362398bec32bc0ebb411203221a35a0301193a96f317ebe5e40be9f60d15320"
-                },
-                {
-                    "offset": "0x5b",
-                    "selector": "0x39e11d48192e4333233c7eb19d10ad67c362bb28580c604d67884c85da39695"
-                }
-            ],
-            "L1_HANDLER": []
+          ],
+          "name":"Point",
+          "size":2,
+          "type":"struct"
+        },
+        {
+          "inputs":[
+            {
+              "name":"initial_balance",
+              "type":"felt"
+            }
+          ],
+          "name":"constructor",
+          "outputs":[
+            
+          ],
+          "type":"constructor"
+        },
+        {
+          "inputs":[
+            {
+              "name":"amount1",
+              "type":"felt"
+            },
+            {
+              "name":"amount2",
+              "type":"felt"
+            }
+          ],
+          "name":"increase_balance",
+          "outputs":[
+            
+          ],
+          "type":"function"
+        },
+        {
+          "inputs":[
+            
+          ],
+          "name":"get_balance",
+          "outputs":[
+            {
+              "name":"res",
+              "type":"felt"
+            }
+          ],
+          "stateMutability":"view",
+          "type":"function"
+        },
+        {
+          "inputs":[
+            {
+              "name":"points_len",
+              "type":"felt"
+            },
+            {
+              "name":"points",
+              "type":"Point*"
+            }
+          ],
+          "name":"sum_point_array",
+          "outputs":[
+            {
+              "name":"res",
+              "type":"Point"
+            }
+          ],
+          "stateMutability":"view",
+          "type":"function"
         }
+      ],
+      "entry_points_by_type":{
+        "CONSTRUCTOR":[
+          {
+            "offset":"0x35",
+            "selector":"0x28ffe4ff0f226a9107253e17a904099aa4f63a02a5621de0576e5aa71bc5194"
+          }
+        ],
+        "EXTERNAL":[
+          {
+            "offset":"0x54",
+            "selector":"0x362398bec32bc0ebb411203221a35a0301193a96f317ebe5e40be9f60d15320"
+          },
+          {
+            "offset":"0x76",
+            "selector":"0x39e11d48192e4333233c7eb19d10ad67c362bb28580c604d67884c85da39695"
+          },
+          {
+            "offset":"0xa1",
+            "selector":"0x3cd0a5d52a5573221431e4a61c6bdffd7f157bd278be73f332f0b10f12d895b"
+          }
+        ],
+        "L1_HANDLER":[
+          
+        ]
+      }
     },
-    "contract_address_salt": "0x2",
-    "type": "DEPLOY"
-}
+    "contract_address_salt":"0x2",
+    "type":"DEPLOY"
+}
\ No newline at end of file
diff --git a/test/invoke_rpc.json b/test/invoke_rpc.json
index 5eca1298c..ca71890ab 100644
--- a/test/invoke_rpc.json
+++ b/test/invoke_rpc.json
@@ -1,9 +1,12 @@
 {
-    "entry_point_selector": "0x362398bec32bc0ebb411203221a35a0301193a96f317ebe5e40be9f60d15320",
-    "calldata": [
-        "10"
-    ],
-    "signature": [],
-    "contract_address": "0x022675a4cfedcb8e029e31e71d282ee40b058134424d7560dbc5c3cdbd087d3d",
-    "type": "INVOKE_FUNCTION"
-}
+  "entry_point_selector":"0x362398bec32bc0ebb411203221a35a0301193a96f317ebe5e40be9f60d15320",
+  "calldata":[
+    "10",
+    "11"
+  ],
+  "signature":[
+    
+  ],
+  "contract_address":"0x0491c87978cb8d8a82c2a96dddd1888eb5ef8aa7209d5da86d2b703c3572032a",
+  "type":"INVOKE_FUNCTION"
+}
\ No newline at end of file
diff --git a/test/rpc/conftest.py b/test/rpc/conftest.py
index 5cd249b82..a4f9d036e 100644
--- a/test/rpc/conftest.py
+++ b/test/rpc/conftest.py
@@ -65,7 +65,6 @@ def fixture_invoke_info() -> dict:
     Make an invoke transaction on devnet and return invoke info dict
     """
     invoke_tx = json.loads(INVOKE_CONTENT)
-    invoke_tx["calldata"] = ["0"]
     invoke_info = add_transaction(invoke_tx)
     return {**invoke_info, **invoke_tx}
 
diff --git a/test/rpc/test_rpc_call.py b/test/rpc/test_rpc_call.py
index a79f2db4a..14a47c725 100644
--- a/test/rpc/test_rpc_call.py
+++ b/test/rpc/test_rpc_call.py
@@ -28,7 +28,7 @@ def test_call(deploy_info):
     )
     result = resp["result"]
 
-    assert result["result"] == ["0x00"]
+    assert result["result"] == ["0x045"]
 
 
 @pytest.mark.usefixtures("run_devnet_in_background", "deploy_info")
@@ -74,7 +74,11 @@ def test_call_raises_on_incorrect_selector(deploy_info):
 
 
 @pytest.mark.usefixtures("run_devnet_in_background")
-def test_call_raises_on_invalid_calldata(deploy_info):
+@pytest.mark.parametrize(
+    "calldata",
+    [[123], [9189418294819], ["0x123"], ["1231", "wtf", "123"], ["deadbeef"]],
+)
+def test_call_raises_on_invalid_calldata(deploy_info, calldata):
     """
     Call contract with incorrect calldata
     """
@@ -86,13 +90,13 @@ def test_call_raises_on_invalid_calldata(deploy_info):
             "request": {
                 "contract_address": pad_zero(contract_address),
                 "entry_point_selector": hex(get_selector_from_name("get_balance")),
-                "calldata": ["a", "b", "123"],
+                "calldata": calldata,
             },
             "block_id": "latest",
         },
     )
 
-    assert ex["error"] == {"code": 22, "message": "Invalid call data"}
+    assert ex["error"] == {"code": 22, "message": "Invalid calldata"}
 
 
 @pytest.mark.usefixtures("run_devnet_in_background")
diff --git a/test/rpc/test_rpc_class.py b/test/rpc/test_rpc_class.py
index fea5baba5..44fc056c8 100644
--- a/test/rpc/test_rpc_class.py
+++ b/test/rpc/test_rpc_class.py
@@ -7,6 +7,30 @@
 from starknet_devnet.blueprints.rpc.utils import BlockId
 from .rpc_utils import rpc_call, pad_zero
 
+EXPECTED_CONTRACT_CLASS = {
+    "CONSTRUCTOR": [
+        {
+            "offset": "0x35",
+            "selector": "0x028ffe4ff0f226a9107253e17a904099aa4f63a02a5621de0576e5aa71bc5194",
+        }
+    ],
+    "EXTERNAL": [
+        {
+            "offset": "0x54",
+            "selector": "0x0362398bec32bc0ebb411203221a35a0301193a96f317ebe5e40be9f60d15320",
+        },
+        {
+            "offset": "0x76",
+            "selector": "0x039e11d48192e4333233c7eb19d10ad67c362bb28580c604d67884c85da39695",
+        },
+        {
+            "offset": "0xa1",
+            "selector": "0x03cd0a5d52a5573221431e4a61c6bdffd7f157bd278be73f332f0b10f12d895b",
+        },
+    ],
+    "L1_HANDLER": [],
+}
+
 
 @pytest.mark.usefixtures("run_devnet_in_background")
 def test_get_class(class_hash):
@@ -16,20 +40,7 @@ def test_get_class(class_hash):
     resp = rpc_call("starknet_getClass", params={"class_hash": class_hash})
     contract_class = resp["result"]
 
-    assert contract_class["entry_points_by_type"] == {
-        "CONSTRUCTOR": [],
-        "EXTERNAL": [
-            {
-                "offset": "0x3a",
-                "selector": "0x0362398bec32bc0ebb411203221a35a0301193a96f317ebe5e40be9f60d15320",
-            },
-            {
-                "offset": "0x5b",
-                "selector": "0x039e11d48192e4333233c7eb19d10ad67c362bb28580c604d67884c85da39695",
-            },
-        ],
-        "L1_HANDLER": [],
-    }
+    assert contract_class["entry_points_by_type"] == EXPECTED_CONTRACT_CLASS
     assert isinstance(contract_class["program"], str)
     decompress_program({"contract_class": contract_class}, False)
 
@@ -65,19 +76,6 @@ def test_get_class_at(deploy_info):
     )
     contract_class = resp["result"]
 
-    assert contract_class["entry_points_by_type"] == {
-        "CONSTRUCTOR": [],
-        "EXTERNAL": [
-            {
-                "offset": "0x3a",
-                "selector": "0x0362398bec32bc0ebb411203221a35a0301193a96f317ebe5e40be9f60d15320",
-            },
-            {
-                "offset": "0x5b",
-                "selector": "0x039e11d48192e4333233c7eb19d10ad67c362bb28580c604d67884c85da39695",
-            },
-        ],
-        "L1_HANDLER": [],
-    }
+    assert contract_class["entry_points_by_type"] == EXPECTED_CONTRACT_CLASS
     assert isinstance(contract_class["program"], str)
     decompress_program({"contract_class": contract_class}, False)
diff --git a/test/rpc/test_rpc_storage.py b/test/rpc/test_rpc_storage.py
index 941a17340..979212117 100644
--- a/test/rpc/test_rpc_storage.py
+++ b/test/rpc/test_rpc_storage.py
@@ -27,7 +27,7 @@ def test_get_storage_at(deploy_info):
     )
     storage = resp["result"]
 
-    assert storage == "0x00"
+    assert storage == "0x045"
 
 
 @pytest.mark.usefixtures("run_devnet_in_background", "deploy_info")
diff --git a/test/rpc/test_rpc_transactions.py b/test/rpc/test_rpc_transactions.py
index 8e6cdca75..47c9ef1c3 100644
--- a/test/rpc/test_rpc_transactions.py
+++ b/test/rpc/test_rpc_transactions.py
@@ -57,7 +57,7 @@ def test_get_transaction_by_hash_deploy(deploy_info):
         "type": rpc_txn_type(block_tx["type"]),
         "contract_address": pad_zero(contract_address),
         "contract_address_salt": pad_zero(block_tx["contract_address_salt"]),
-        "constructor_calldata": [],
+        "constructor_calldata": ["0x045"],
     }
 
 
@@ -377,7 +377,7 @@ def test_add_deploy_transaction_on_incorrect_contract(deploy_content):
     """
     contract_definition = deploy_content["contract_definition"]
     salt = deploy_content["contract_address_salt"]
-    calldata = [rpc_felt(data) for data in deploy_content["constructor_calldata"]]
+    calldata = [rpc_felt(int(data)) for data in deploy_content["constructor_calldata"]]
     pad_zero_external_entry_points(contract_class=contract_definition)
 
     rpc_contract = RpcContractClass(
@@ -404,7 +404,7 @@ def test_add_deploy_transaction(deploy_content):
     """
     contract_definition = deploy_content["contract_definition"]
     salt = deploy_content["contract_address_salt"]
-    calldata = [rpc_felt(data) for data in deploy_content["constructor_calldata"]]
+    calldata = [rpc_felt(int(data)) for data in deploy_content["constructor_calldata"]]
     pad_zero_external_entry_points(contract_class=contract_definition)
 
     rpc_contract = RpcContractClass(
diff --git a/test/test_account.py b/test/test_account.py
index 79967e20c..176f31414 100644
--- a/test/test_account.py
+++ b/test/test_account.py
@@ -223,7 +223,7 @@ def test_insufficient_balance():
     args = [10, 20]
     calls = [(to_address, "increase_balance", args)]
     invoke_tx_hash = execute(
-        calls, account_address, private_key, max_fee=10**21
+        calls, account_address, private_key, max_fee=10 ** 21
     )  # big enough
 
     assert_tx_status(invoke_tx_hash, "REJECTED")
diff --git a/test/test_fee_token.py b/test/test_fee_token.py
index 986cf2072..769c31acd 100644
--- a/test/test_fee_token.py
+++ b/test/test_fee_token.py
@@ -175,7 +175,7 @@ def test_increase_balance():
     args = [10, 20]
     calls = [(to_address, "increase_balance", args)]
     invoke_tx_hash = execute(
-        calls, account_address, private_key, max_fee=10**21
+        calls, account_address, private_key, max_fee=10 ** 21
     )  # big enough
 
     assert_tx_status(invoke_tx_hash, "REJECTED")
@@ -194,7 +194,7 @@ def test_increase_balance():
     assert_equal(balance_after_mint, initial_account_balance + mint_amount)
 
     invoke_tx_hash = execute(
-        calls, account_address, private_key, max_fee=10**21
+        calls, account_address, private_key, max_fee=10 ** 21
     )  # big enough
     assert_tx_status(invoke_tx_hash, "ACCEPTED_ON_L2")