Skip to content

Commit f2a0da1

Browse files
Bhargavasomuhwwhww
authored andcommitted
Make tests for validate_proposer_signature parametrized
1 parent 122872d commit f2a0da1

File tree

1 file changed

+47
-32
lines changed

1 file changed

+47
-32
lines changed

tests/beacon/state_machines/test_validation.py

Lines changed: 47 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -9,25 +9,45 @@
99
)
1010

1111
from eth.beacon.types.blocks import BaseBeaconBlock
12+
from eth.beacon.types.proposal_signed_data import (
13+
ProposalSignedData,
14+
)
1215
from eth.beacon.types.states import BeaconState
1316

17+
from eth._utils import bls
18+
1419
from tests.beacon.helpers import mock_validator_record
1520
from tests.beacon.test_helpers import (
1621
get_sample_shard_committees_at_slots,
1722
)
1823

1924

25+
@pytest.mark.parametrize(
26+
'proposer_privkey, proposer_pubkey, is_valid_signature',
27+
(
28+
(0, bls.privtopub(0), True),
29+
(0, bls.privtopub(0) + 1, False),
30+
(0, 123, False),
31+
32+
(123, bls.privtopub(123), True),
33+
(123, bls.privtopub(123) + 1, False),
34+
(123, 123, False),
35+
)
36+
)
2037
def test_validate_proposer_signature(
21-
beacon_chain_shard_number,
22-
epoch_length,
38+
proposer_privkey,
39+
proposer_pubkey,
40+
is_valid_signature,
2341
sample_beacon_block_params,
2442
sample_beacon_state_params,
25-
sample_shard_committee_params):
26-
block = BaseBeaconBlock(**sample_beacon_block_params)
43+
sample_shard_committee_params,
44+
beacon_chain_shard_number,
45+
epoch_length):
46+
2747
state = BeaconState(**sample_beacon_state_params).copy(
2848
validator_registry=[
2949
mock_validator_record(
30-
pubkey=0,
50+
pubkey=proposer_pubkey,
3151
max_deposit=0,
3252
)
3353
for _ in range(10)
@@ -39,40 +59,35 @@ def test_validate_proposer_signature(
3959
),
4060
)
4161

42-
validate_proposer_signature(
43-
state,
44-
block,
45-
beacon_chain_shard_number,
46-
epoch_length,
47-
)
48-
62+
default_block = BaseBeaconBlock(**sample_beacon_block_params)
63+
empty_signature_block_root = BaseBeaconBlock.get_block_without_signature_root(default_block)
4964

50-
def test_validate_proposer_bad_signature(
65+
proposal_root = ProposalSignedData(
66+
state.slot,
5167
beacon_chain_shard_number,
52-
epoch_length,
53-
sample_beacon_block_params,
54-
sample_beacon_state_params,
55-
sample_shard_committee_params):
56-
block = BaseBeaconBlock(**sample_beacon_block_params)
57-
state = BeaconState(**sample_beacon_state_params).copy(
58-
validator_registry=[
59-
mock_validator_record(
60-
pubkey=123,
61-
max_deposit=0,
62-
)
63-
for _ in range(10)
64-
],
65-
shard_committees_at_slots=get_sample_shard_committees_at_slots(
66-
num_slot=128,
67-
num_shard_committee_per_slot=10,
68-
sample_shard_committee_params=sample_shard_committee_params,
68+
empty_signature_block_root,
69+
).root
70+
71+
proposed_block = BaseBeaconBlock(**sample_beacon_block_params).copy(
72+
signature=bls.sign(
73+
message=proposal_root,
74+
privkey=proposer_privkey,
75+
domain=2,
6976
),
7077
)
7178

72-
with pytest.raises(ValidationError):
79+
if is_valid_signature:
7380
validate_proposer_signature(
7481
state,
75-
block,
82+
proposed_block,
7683
beacon_chain_shard_number,
7784
epoch_length,
7885
)
86+
else:
87+
with pytest.raises(ValidationError):
88+
validate_proposer_signature(
89+
state,
90+
proposed_block,
91+
beacon_chain_shard_number,
92+
epoch_length,
93+
)

0 commit comments

Comments
 (0)