Skip to content

test_delegation_clearing_tx_to()

Documentation for tests/prague/eip7702_set_code_tx/test_set_code_txs.py::test_delegation_clearing_tx_to@e9958ed2.

Generate fixtures for these test cases for Osaka with:

fill -v tests/prague/eip7702_set_code_tx/test_set_code_txs.py::test_delegation_clearing_tx_to --fork Osaka

Tests directly calling the account which delegation is being cleared.

  • pre_set_delegation_code: The code to set on the account before clearing delegation, or None if the account should not have any code set.
  • self_sponsored: Whether the delegation clearing transaction is self-sponsored.
Source code in tests/prague/eip7702_set_code_tx/test_set_code_txs.py
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
@pytest.mark.parametrize(
    "self_sponsored",
    [
        pytest.param(False, id="not_self_sponsored"),
        pytest.param(True, id="self_sponsored"),
    ],
)
@pytest.mark.parametrize(
    "pre_set_delegation_code",
    [
        pytest.param(Op.RETURN(0, 1), id="delegated_account"),
        pytest.param(None, id="undelegated_account"),
    ],
)
def test_delegation_clearing_tx_to(
    state_test: StateTestFiller,
    pre: Alloc,
    pre_set_delegation_code: Bytecode | None,
    self_sponsored: bool,
) -> None:
    """
    Tests directly calling the account which delegation is being cleared.

    - pre_set_delegation_code: The code to set on the account before clearing
                               delegation, or None if the account should not
                               have any code set.
    - self_sponsored: Whether the delegation clearing transaction is
                      self-sponsored.
    """  # noqa: D417
    pre_set_delegation_address: Address | None = None
    if pre_set_delegation_code is not None:
        pre_set_delegation_address = pre.deploy_contract(pre_set_delegation_code)

    if self_sponsored:
        auth_signer = pre.fund_eoa(delegation=pre_set_delegation_address)
    else:
        auth_signer = pre.fund_eoa(0, delegation=pre_set_delegation_address)

    sender = pre.fund_eoa() if not self_sponsored else auth_signer

    tx = Transaction(
        gas_limit=200_000,
        to=auth_signer,
        value=0,
        authorization_list=[
            AuthorizationTuple(
                address=Spec.RESET_DELEGATION_ADDRESS,  # Reset
                nonce=auth_signer.nonce + (1 if self_sponsored else 0),
                signer=auth_signer,
            ),
        ],
        sender=sender,
    )

    state_test(
        env=Environment(),
        pre=pre,
        tx=tx,
        post={
            auth_signer: Account(
                nonce=auth_signer.nonce + 1,
                code=b"",
                storage={},
            ),
        },
    )

Parametrized Test Cases

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

Test ID (Abbreviated) pre_set_delegation_code self_sponsored
...fork_Prague-state_test-delegated_account-not_self_sponsored False
...fork_Prague-state_test-delegated_account-self_sponsored True
...fork_Prague-state_test-undelegated_account-not_self_sponsored None False
...fork_Prague-state_test-undelegated_account-self_sponsored None True
...fork_Prague-blockchain_test_from_state_test-delegated_account-not_self_sponsored False
...fork_Prague-blockchain_test_from_state_test-delegated_account-self_sponsored True
...fork_Prague-blockchain_test_from_state_test-undelegated_account-not_self_sponsored None False
...fork_Prague-blockchain_test_from_state_test-undelegated_account-self_sponsored None True
...fork_Osaka-state_test-delegated_account-not_self_sponsored False
...fork_Osaka-state_test-delegated_account-self_sponsored True
...fork_Osaka-state_test-undelegated_account-not_self_sponsored None False
...fork_Osaka-state_test-undelegated_account-self_sponsored None True
...fork_Osaka-blockchain_test_from_state_test-delegated_account-not_self_sponsored False
...fork_Osaka-blockchain_test_from_state_test-delegated_account-self_sponsored True
...fork_Osaka-blockchain_test_from_state_test-undelegated_account-not_self_sponsored None False
...fork_Osaka-blockchain_test_from_state_test-undelegated_account-self_sponsored None True