Add a negative test for full exit has partial withdrawal
This commit is contained in:
parent
0c5ad81145
commit
83857264c2
|
@ -787,6 +787,41 @@ def test_partial_withdrawal_activation_epoch_less_than_shard_committee_period(
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@with_electra_and_later
|
||||||
|
@spec_state_test
|
||||||
|
def test_full_exit_request_has_partial_withdrawal(spec, state):
|
||||||
|
rng = random.Random(1361)
|
||||||
|
# move state forward SHARD_COMMITTEE_PERIOD epochs to allow for exit
|
||||||
|
state.slot += spec.config.SHARD_COMMITTEE_PERIOD * spec.SLOTS_PER_EPOCH
|
||||||
|
|
||||||
|
current_epoch = spec.get_current_epoch(state)
|
||||||
|
validator_index = rng.choice(spec.get_active_validator_indices(state, current_epoch))
|
||||||
|
validator_pubkey = state.validators[validator_index].pubkey
|
||||||
|
address = b"\x22" * 20
|
||||||
|
set_eth1_withdrawal_credential_with_balance(
|
||||||
|
spec, state, validator_index, address=address
|
||||||
|
)
|
||||||
|
withdrawal_request = spec.WithdrawalRequest(
|
||||||
|
source_address=address,
|
||||||
|
validator_pubkey=validator_pubkey,
|
||||||
|
amount=spec.FULL_EXIT_REQUEST_AMOUNT,
|
||||||
|
)
|
||||||
|
|
||||||
|
# Validator can only be exited if there's no pending partial withdrawals in state
|
||||||
|
state.balances[validator_index] = spec.MAX_EFFECTIVE_BALANCE_ELECTRA
|
||||||
|
state.pending_partial_withdrawals.append(
|
||||||
|
spec.PendingPartialWithdrawal(
|
||||||
|
index=validator_index,
|
||||||
|
amount=1,
|
||||||
|
withdrawable_epoch=spec.compute_activation_exit_epoch(current_epoch),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
yield from run_withdrawal_request_processing(
|
||||||
|
spec, state, withdrawal_request, success=False
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Run processing
|
# Run processing
|
||||||
#
|
#
|
||||||
|
|
Loading…
Reference in New Issue