Skip to content

test_invalid_tx_invalid_authorization_tuple_missing_element()

Documentation for tests/prague/eip7702_set_code_tx/test_invalid_tx.py::test_invalid_tx_invalid_authorization_tuple_missing_element@44293f1e.

Generate fixtures for these test cases for Prague with:

fill -v tests/prague/eip7702_set_code_tx/test_invalid_tx.py::test_invalid_tx_invalid_authorization_tuple_missing_element --fork Prague

Test sending a transaction where the authorization tuple field of the type-4 transaction is serialized to miss one element.

Source code in tests/prague/eip7702_set_code_tx/test_invalid_tx.py
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
@pytest.mark.parametrize(
    "missing_index",
    [
        pytest.param(0, id="missing_chain_id"),
        pytest.param(1, id="missing_address"),
        pytest.param(2, id="missing_nonce"),
        pytest.param(3, id="missing_signature_y_parity"),
        pytest.param(4, id="missing_signature_r"),
        pytest.param(5, id="missing_signature_s"),
    ],
)
@pytest.mark.parametrize(
    "delegate_address",
    [
        pytest.param(Spec.RESET_DELEGATION_ADDRESS, id="reset_delegation_address"),
        pytest.param(Address(1), id="non_zero_address"),
    ],
)
def test_invalid_tx_invalid_authorization_tuple_missing_element(
    transaction_test: TransactionTestFiller,
    pre: Alloc,
    delegate_address: Address,
    missing_index: int,
):
    """
    Test sending a transaction where the authorization tuple field of the type-4 transaction
    is serialized to miss one element.
    """
    auth_signer = pre.fund_eoa()

    class MissingElementAuthorizationTuple(AuthorizationTuple):
        missing_element_index: int

        def get_rlp_fields(self) -> List[str]:
            """Remove the field that is specified by the missing element index."""
            rlp_fields = super().get_rlp_fields()[:]
            rlp_fields.pop(self.missing_element_index)
            return rlp_fields

    tx = Transaction(
        gas_limit=100_000,
        to=0,
        value=0,
        authorization_list=[
            MissingElementAuthorizationTuple(
                address=delegate_address,
                nonce=0,
                signer=auth_signer,
                missing_element_index=missing_index,
            ),
        ],
        error=TransactionException.TYPE_4_INVALID_AUTHORIZATION_FORMAT,
        sender=pre.fund_eoa(),
    )

    transaction_test(
        pre=pre,
        tx=tx,
    )

Parametrized Test Cases

The interactive table below is also available as a standalone page.

Test ID (Abbreviated) delegate_address missing_index
...fork_Prague-transaction_test-reset_delegation_address-missing_chain_id 0x000000000000000000000000000000 0000000000 0
...fork_Prague-transaction_test-reset_delegation_address-missing_address 0x000000000000000000000000000000 0000000000 1
...fork_Prague-transaction_test-reset_delegation_address-missing_nonce 0x000000000000000000000000000000 0000000000 2
...fork_Prague-transaction_test-reset_delegation_address-missing_signature_y_parity 0x000000000000000000000000000000 0000000000 3
...fork_Prague-transaction_test-reset_delegation_address-missing_signature_r 0x000000000000000000000000000000 0000000000 4
...fork_Prague-transaction_test-reset_delegation_address-missing_signature_s 0x000000000000000000000000000000 0000000000 5
...fork_Prague-transaction_test-non_zero_address-missing_chain_id 0x000000000000000000000000000000 0000000001 0
...fork_Prague-transaction_test-non_zero_address-missing_address 0x000000000000000000000000000000 0000000001 1
...fork_Prague-transaction_test-non_zero_address-missing_nonce 0x000000000000000000000000000000 0000000001 2
...fork_Prague-transaction_test-non_zero_address-missing_signature_y_parity 0x000000000000000000000000000000 0000000001 3
...fork_Prague-transaction_test-non_zero_address-missing_signature_r 0x000000000000000000000000000000 0000000001 4
...fork_Prague-transaction_test-non_zero_address-missing_signature_s 0x000000000000000000000000000000 0000000001 5
...fork_Osaka-transaction_test-reset_delegation_address-missing_chain_id 0x000000000000000000000000000000 0000000000 0
...fork_Osaka-transaction_test-reset_delegation_address-missing_address 0x000000000000000000000000000000 0000000000 1
...fork_Osaka-transaction_test-reset_delegation_address-missing_nonce 0x000000000000000000000000000000 0000000000 2
...fork_Osaka-transaction_test-reset_delegation_address-missing_signature_y_parity 0x000000000000000000000000000000 0000000000 3
...fork_Osaka-transaction_test-reset_delegation_address-missing_signature_r 0x000000000000000000000000000000 0000000000 4
...fork_Osaka-transaction_test-reset_delegation_address-missing_signature_s 0x000000000000000000000000000000 0000000000 5
...fork_Osaka-transaction_test-non_zero_address-missing_chain_id 0x000000000000000000000000000000 0000000001 0
...fork_Osaka-transaction_test-non_zero_address-missing_address 0x000000000000000000000000000000 0000000001 1
...fork_Osaka-transaction_test-non_zero_address-missing_nonce 0x000000000000000000000000000000 0000000001 2
...fork_Osaka-transaction_test-non_zero_address-missing_signature_y_parity 0x000000000000000000000000000000 0000000001 3
...fork_Osaka-transaction_test-non_zero_address-missing_signature_r 0x000000000000000000000000000000 0000000001 4
...fork_Osaka-transaction_test-non_zero_address-missing_signature_s 0x000000000000000000000000000000 0000000001 5