Skip to content

test_to_address_size()

Documentation for tests/frontier/validation/test_transaction_rlp.py::test_to_address_size@ffe48572.

Generate fixtures for these test cases for Bogota with:

fill -v tests/frontier/validation/test_transaction_rlp.py::test_to_address_size --fork Bogota

Encode the to field with a truncated 19-byte address or a 21-byte address made of a zero byte prefixing a valid address.

Source code in tests/frontier/validation/test_transaction_rlp.py
@pytest.mark.ported_from(
    [
        f"{LEGACY_TX_TESTS}/ttWrongRLP/RLPAddressWrongSizeCopier.json",
        f"{LEGACY_TX_TESTS}/ttAddress/AddressLessThan20Filler.json",
        f"{LEGACY_TX_TESTS}/ttAddress/AddressMoreThan20PrefixedBy0Filler.json",
        f"{LEGACY_TX_TESTS}/ttWrongRLP/RLPAddressWithFirstZerosCopier.json",
        f"{LEGACY_TX_TESTS}/ttAddress/AddressMoreThan20Filler.json",
        f"{LEGACY_TX_TESTS}/ttWrongRLP/TRANSCT_to_Prefixed0000Copier.json",
        f"{LEGACY_TX_TESTS}/ttWrongRLP/TRANSCT_to_TooLargeCopier.json",
        f"{LEGACY_TX_TESTS}/ttWrongRLP/TRANSCT_to_TooShortCopier.json",
    ],
)
@pytest.mark.exception_test
@pytest.mark.parametrize(
    "size, error",
    [
        (19, TransactionException.ADDRESS_TOO_SHORT),
        (21, TransactionException.ADDRESS_TOO_LONG),
    ],
)
def test_to_address_size(
    transaction_test: TransactionTestFiller,
    pre: Alloc,
    fork: Fork,
    size: int,
    error: TransactionException,
) -> None:
    """
    Encode the to field with a truncated 19-byte address or a 21-byte
    address made of a zero byte prefixing a valid address.
    """
    fields = signed_tx_fields(pre, fork)
    if size < 20:
        fields["to"] = fields["to"][:size]
    else:
        fields["to"] = fields["to"].rjust(size, b"\x00")
    rlp = encode_tx(fields)
    transaction_test(pre=pre, tx=invalid_tx(pre, rlp, error))

Parametrized Test Cases

This test generates 2 parametrized test cases across 17 forks.