Skip to content

Commit 3df7f1e

Browse files
authored
refactor: set contract address in builder by default (#150)
1 parent d677d82 commit 3df7f1e

8 files changed

Lines changed: 138 additions & 4 deletions
Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
1+
from typing import Optional
2+
from crypto.enums.contract_addresses import ContractAddresses
13
from crypto.transactions.builder.base import AbstractTransactionBuilder
24
from crypto.transactions.types.unvote import Unvote
35

46
class UnvoteBuilder(AbstractTransactionBuilder):
7+
def __init__(self, data: Optional[dict] = None):
8+
super().__init__(data)
9+
10+
self.recipient_address(ContractAddresses.CONSENSUS.value)
11+
512
def get_transaction_instance(self, data: dict):
6-
return Unvote(data)
13+
return Unvote(data)
Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
1+
from typing import Optional
2+
from crypto.enums.contract_addresses import ContractAddresses
13
from crypto.transactions.builder.base import AbstractTransactionBuilder
24
from crypto.transactions.types.validator_registration import ValidatorRegistration
35

46
class ValidatorRegistrationBuilder(AbstractTransactionBuilder):
7+
def __init__(self, data: Optional[dict] = None):
8+
super().__init__(data)
9+
10+
self.recipient_address(ContractAddresses.CONSENSUS.value)
11+
512
def validator_public_key(self, validator_public_key: str):
613
self.transaction.data['validatorPublicKey'] = validator_public_key
714
self.transaction.refresh_payload_data()
815
return self
916

1017
def get_transaction_instance(self, data: dict):
11-
return ValidatorRegistration(data)
18+
return ValidatorRegistration(data)
Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
1+
from typing import Optional
2+
from crypto.enums.contract_addresses import ContractAddresses
13
from crypto.transactions.builder.base import AbstractTransactionBuilder
24
from crypto.transactions.types.validator_resignation import ValidatorResignation
35

46
class ValidatorResignationBuilder(AbstractTransactionBuilder):
7+
def __init__(self, data: Optional[dict] = None):
8+
super().__init__(data)
9+
10+
self.recipient_address(ContractAddresses.CONSENSUS.value)
11+
512
def get_transaction_instance(self, data: dict):
6-
return ValidatorResignation(data)
13+
return ValidatorResignation(data)
Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
1+
from typing import Optional
2+
from crypto.enums.contract_addresses import ContractAddresses
13
from crypto.transactions.builder.base import AbstractTransactionBuilder
24
from crypto.transactions.types.vote import Vote
35

46
class VoteBuilder(AbstractTransactionBuilder):
7+
def __init__(self, data: Optional[dict] = None):
8+
super().__init__(data)
9+
10+
self.recipient_address(ContractAddresses.CONSENSUS.value)
11+
512
def vote(self, vote: str):
613
self.transaction.data['vote'] = vote
714
self.transaction.refresh_payload_data()
815
return self
916

1017
def get_transaction_instance(self, data: dict) -> Vote:
11-
return Vote(data)
18+
return Vote(data)

tests/transactions/builder/test_unvote_builder.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,29 @@ def test_unvote_transaction(passphrase, load_transaction_fixture):
2626
assert builder.transaction.serialize().hex() == fixture['serialized']
2727
assert builder.transaction.data['id'] == fixture['data']['id']
2828
assert builder.verify()
29+
30+
def test_unvote_transaction_with_default_recipient_address(passphrase, load_transaction_fixture):
31+
fixture = load_transaction_fixture('unvote')
32+
33+
builder = (
34+
UnvoteBuilder()
35+
.gas_price(fixture['data']['gasPrice'])
36+
.nonce(fixture['data']['nonce'])
37+
.network(fixture['data']['network'])
38+
.gas_limit(fixture['data']['gasLimit'])
39+
.sign(passphrase)
40+
)
41+
42+
assert builder.transaction.data['gasPrice'] == fixture['data']['gasPrice']
43+
assert builder.transaction.data['nonce'] == fixture['data']['nonce']
44+
assert builder.transaction.data['network'] == fixture['data']['network']
45+
assert builder.transaction.data['gasLimit'] == fixture['data']['gasLimit']
46+
assert builder.transaction.data['recipientAddress'].lower() == fixture['data']['recipientAddress'].lower()
47+
assert builder.transaction.data['value'] == fixture['data']['value']
48+
assert builder.transaction.data['v'] == fixture['data']['v']
49+
assert builder.transaction.data['r'] == fixture['data']['r']
50+
assert builder.transaction.data['s'] == fixture['data']['s']
51+
52+
assert builder.transaction.serialize().hex() == fixture['serialized']
53+
assert builder.transaction.data['id'] == fixture['data']['id']
54+
assert builder.verify()

tests/transactions/builder/test_validator_registration_builder.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,30 @@ def test_validator_registration_transaction(passphrase, validator_public_key, lo
2828
assert builder.transaction.serialize().hex() == fixture['serialized']
2929
assert builder.transaction.data['id'] == fixture['data']['id']
3030
assert builder.verify()
31+
32+
def test_validator_registration_transaction_with_default_recipient_address(passphrase, load_transaction_fixture):
33+
fixture = load_transaction_fixture('validator-registration')
34+
35+
builder = (
36+
ValidatorRegistrationBuilder()
37+
.gas_price(fixture['data']['gasPrice'])
38+
.nonce(fixture['data']['nonce'])
39+
.network(fixture['data']['network'])
40+
.gas_limit(fixture['data']['gasLimit'])
41+
.validator_public_key('954f46d6097a1d314e900e66e11e0dad0a57cd03e04ec99f0dedd1c765dcb11e6d7fa02e22cf40f9ee23d9cc1c0624bd')
42+
.sign(passphrase)
43+
)
44+
45+
assert builder.transaction.data['gasPrice'] == fixture['data']['gasPrice']
46+
assert builder.transaction.data['nonce'] == fixture['data']['nonce']
47+
assert builder.transaction.data['network'] == fixture['data']['network']
48+
assert builder.transaction.data['gasLimit'] == fixture['data']['gasLimit']
49+
assert builder.transaction.data['recipientAddress'].lower() == fixture['data']['recipientAddress'].lower()
50+
assert builder.transaction.data['value'] == fixture['data']['value']
51+
assert builder.transaction.data['v'] == fixture['data']['v']
52+
assert builder.transaction.data['r'] == fixture['data']['r']
53+
assert builder.transaction.data['s'] == fixture['data']['s']
54+
55+
assert builder.transaction.serialize().hex() == fixture['serialized']
56+
assert builder.transaction.data['id'] == fixture['data']['id']
57+
assert builder.verify()

tests/transactions/builder/test_validator_resignation_builder.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,29 @@ def test_validator_resignation_transaction(passphrase, load_transaction_fixture)
2626
assert builder.transaction.serialize().hex() == fixture['serialized']
2727
assert builder.transaction.data['id'] == fixture['data']['id']
2828
assert builder.verify()
29+
30+
def test_validator_resignation_transaction_with_default_recipient_address(passphrase, load_transaction_fixture):
31+
fixture = load_transaction_fixture('validator-resignation')
32+
33+
builder = (
34+
ValidatorResignationBuilder()
35+
.gas_price(fixture['data']['gasPrice'])
36+
.nonce(fixture['data']['nonce'])
37+
.network(fixture['data']['network'])
38+
.gas_limit(fixture['data']['gasLimit'])
39+
.sign(passphrase)
40+
)
41+
42+
assert builder.transaction.data['gasPrice'] == fixture['data']['gasPrice']
43+
assert builder.transaction.data['nonce'] == fixture['data']['nonce']
44+
assert builder.transaction.data['network'] == fixture['data']['network']
45+
assert builder.transaction.data['gasLimit'] == fixture['data']['gasLimit']
46+
assert builder.transaction.data['recipientAddress'].lower() == fixture['data']['recipientAddress'].lower()
47+
assert builder.transaction.data['value'] == fixture['data']['value']
48+
assert builder.transaction.data['v'] == fixture['data']['v']
49+
assert builder.transaction.data['r'] == fixture['data']['r']
50+
assert builder.transaction.data['s'] == fixture['data']['s']
51+
52+
assert builder.transaction.serialize().hex() == fixture['serialized']
53+
assert builder.transaction.data['id'] == fixture['data']['id']
54+
assert builder.verify()

tests/transactions/builder/test_vote_builder.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,30 @@ def test_vote_transaction(passphrase, load_transaction_fixture):
2727
assert builder.transaction.serialize().hex() == fixture['serialized']
2828
assert builder.transaction.data['id'] == fixture['data']['id']
2929
assert builder.verify()
30+
31+
def test_vote_transaction_with_default_recipient_address(passphrase, load_transaction_fixture):
32+
fixture = load_transaction_fixture('vote')
33+
34+
builder = (
35+
VoteBuilder()
36+
.gas_price(fixture['data']['gasPrice'])
37+
.nonce(fixture['data']['nonce'])
38+
.network(fixture['data']['network'])
39+
.gas_limit(fixture['data']['gasLimit'])
40+
.vote('0xC3bBE9B1CeE1ff85Ad72b87414B0E9B7F2366763') # Example vote address
41+
.sign(passphrase)
42+
)
43+
44+
assert builder.transaction.data['gasPrice'] == fixture['data']['gasPrice']
45+
assert builder.transaction.data['nonce'] == fixture['data']['nonce']
46+
assert builder.transaction.data['network'] == fixture['data']['network']
47+
assert builder.transaction.data['gasLimit'] == fixture['data']['gasLimit']
48+
assert builder.transaction.data['recipientAddress'].lower() == fixture['data']['recipientAddress'].lower()
49+
assert builder.transaction.data['value'] == fixture['data']['value']
50+
assert builder.transaction.data['v'] == fixture['data']['v']
51+
assert builder.transaction.data['r'] == fixture['data']['r']
52+
assert builder.transaction.data['s'] == fixture['data']['s']
53+
54+
assert builder.transaction.serialize().hex() == fixture['serialized']
55+
assert builder.transaction.data['id'] == fixture['data']['id']
56+
assert builder.verify()

0 commit comments

Comments
 (0)