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@88e9fb8f.

Generate fixtures for these test cases for Osaka with:

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

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
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
531
532
533
534
535
536
537
538
539
540
541
@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,
) -> None:
    """
    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