Skip to content

test_invalid_tx_invalid_authorization_tuple_extra_element()

Documentation for tests/prague/eip7702_set_code_tx/test_invalid_tx.py::test_invalid_tx_invalid_authorization_tuple_extra_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_extra_element --fork Prague

Test sending a transaction where the authorization tuple field of the type-4 transaction is serialized to contain an extra element.

Source code in tests/prague/eip7702_set_code_tx/test_invalid_tx.py
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
@pytest.mark.parametrize("extra_element_value", [0, 1])
@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_extra_element(
    transaction_test: TransactionTestFiller,
    pre: Alloc,
    delegate_address: Address,
    extra_element_value: int,
):
    """
    Test sending a transaction where the authorization tuple field of the type-4 transaction
    is serialized to contain an extra element.
    """
    auth_signer = pre.fund_eoa()

    class ExtraElementAuthorizationTuple(AuthorizationTuple):
        extra_element: HexNumber  # type: ignore

        def get_rlp_fields(self) -> List[str]:
            """Append the extra field to the list of fields to be encoded in RLP."""
            rlp_fields = super().get_rlp_fields()[:]
            rlp_fields.append("extra_element")
            return rlp_fields

    tx = Transaction(
        gas_limit=100_000,
        to=0,
        value=0,
        authorization_list=[
            ExtraElementAuthorizationTuple(
                address=delegate_address,
                nonce=0,
                signer=auth_signer,
                extra_element=extra_element_value,
            ),
        ],
        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 extra_element_value
...fork_Prague-transaction_test-reset_delegation_address-extra_element_value_0 0x000000000000000000000000000000 0000000000 0
...fork_Prague-transaction_test-reset_delegation_address-extra_element_value_1 0x000000000000000000000000000000 0000000000 1
...fork_Prague-transaction_test-non_zero_address-extra_element_value_0 0x000000000000000000000000000000 0000000001 0
...fork_Prague-transaction_test-non_zero_address-extra_element_value_1 0x000000000000000000000000000000 0000000001 1
...fork_Osaka-transaction_test-reset_delegation_address-extra_element_value_0 0x000000000000000000000000000000 0000000000 0
...fork_Osaka-transaction_test-reset_delegation_address-extra_element_value_1 0x000000000000000000000000000000 0000000000 1
...fork_Osaka-transaction_test-non_zero_address-extra_element_value_0 0x000000000000000000000000000000 0000000001 0
...fork_Osaka-transaction_test-non_zero_address-extra_element_value_1 0x000000000000000000000000000000 0000000001 1