diff --git a/crypto/transactions/builder/unvote_builder.py b/crypto/transactions/builder/unvote_builder.py index ddb9e248..b89dee9e 100644 --- a/crypto/transactions/builder/unvote_builder.py +++ b/crypto/transactions/builder/unvote_builder.py @@ -1,6 +1,13 @@ +from typing import Optional +from crypto.enums.contract_addresses import ContractAddresses from crypto.transactions.builder.base import AbstractTransactionBuilder from crypto.transactions.types.unvote import Unvote class UnvoteBuilder(AbstractTransactionBuilder): + def __init__(self, data: Optional[dict] = None): + super().__init__(data) + + self.recipient_address(ContractAddresses.CONSENSUS.value) + def get_transaction_instance(self, data: dict): - return Unvote(data) \ No newline at end of file + return Unvote(data) diff --git a/crypto/transactions/builder/validator_registration_builder.py b/crypto/transactions/builder/validator_registration_builder.py index 15df44bc..8d7df3aa 100644 --- a/crypto/transactions/builder/validator_registration_builder.py +++ b/crypto/transactions/builder/validator_registration_builder.py @@ -1,11 +1,18 @@ +from typing import Optional +from crypto.enums.contract_addresses import ContractAddresses from crypto.transactions.builder.base import AbstractTransactionBuilder from crypto.transactions.types.validator_registration import ValidatorRegistration class ValidatorRegistrationBuilder(AbstractTransactionBuilder): + def __init__(self, data: Optional[dict] = None): + super().__init__(data) + + self.recipient_address(ContractAddresses.CONSENSUS.value) + def validator_public_key(self, validator_public_key: str): self.transaction.data['validatorPublicKey'] = validator_public_key self.transaction.refresh_payload_data() return self def get_transaction_instance(self, data: dict): - return ValidatorRegistration(data) \ No newline at end of file + return ValidatorRegistration(data) diff --git a/crypto/transactions/builder/validator_resignation_builder.py b/crypto/transactions/builder/validator_resignation_builder.py index 294cd771..77b3908d 100644 --- a/crypto/transactions/builder/validator_resignation_builder.py +++ b/crypto/transactions/builder/validator_resignation_builder.py @@ -1,6 +1,13 @@ +from typing import Optional +from crypto.enums.contract_addresses import ContractAddresses from crypto.transactions.builder.base import AbstractTransactionBuilder from crypto.transactions.types.validator_resignation import ValidatorResignation class ValidatorResignationBuilder(AbstractTransactionBuilder): + def __init__(self, data: Optional[dict] = None): + super().__init__(data) + + self.recipient_address(ContractAddresses.CONSENSUS.value) + def get_transaction_instance(self, data: dict): - return ValidatorResignation(data) \ No newline at end of file + return ValidatorResignation(data) diff --git a/crypto/transactions/builder/vote_builder.py b/crypto/transactions/builder/vote_builder.py index 7b4dfb03..565dd88b 100644 --- a/crypto/transactions/builder/vote_builder.py +++ b/crypto/transactions/builder/vote_builder.py @@ -1,11 +1,18 @@ +from typing import Optional +from crypto.enums.contract_addresses import ContractAddresses from crypto.transactions.builder.base import AbstractTransactionBuilder from crypto.transactions.types.vote import Vote class VoteBuilder(AbstractTransactionBuilder): + def __init__(self, data: Optional[dict] = None): + super().__init__(data) + + self.recipient_address(ContractAddresses.CONSENSUS.value) + def vote(self, vote: str): self.transaction.data['vote'] = vote self.transaction.refresh_payload_data() return self def get_transaction_instance(self, data: dict) -> Vote: - return Vote(data) \ No newline at end of file + return Vote(data) diff --git a/tests/transactions/builder/test_unvote_builder.py b/tests/transactions/builder/test_unvote_builder.py index 48896d73..56bd3929 100644 --- a/tests/transactions/builder/test_unvote_builder.py +++ b/tests/transactions/builder/test_unvote_builder.py @@ -26,3 +26,29 @@ def test_unvote_transaction(passphrase, load_transaction_fixture): assert builder.transaction.serialize().hex() == fixture['serialized'] assert builder.transaction.data['id'] == fixture['data']['id'] assert builder.verify() + +def test_unvote_transaction_with_default_recipient_address(passphrase, load_transaction_fixture): + fixture = load_transaction_fixture('unvote') + + builder = ( + UnvoteBuilder() + .gas_price(fixture['data']['gasPrice']) + .nonce(fixture['data']['nonce']) + .network(fixture['data']['network']) + .gas_limit(fixture['data']['gasLimit']) + .sign(passphrase) + ) + + assert builder.transaction.data['gasPrice'] == fixture['data']['gasPrice'] + assert builder.transaction.data['nonce'] == fixture['data']['nonce'] + assert builder.transaction.data['network'] == fixture['data']['network'] + assert builder.transaction.data['gasLimit'] == fixture['data']['gasLimit'] + assert builder.transaction.data['recipientAddress'].lower() == fixture['data']['recipientAddress'].lower() + assert builder.transaction.data['value'] == fixture['data']['value'] + assert builder.transaction.data['v'] == fixture['data']['v'] + assert builder.transaction.data['r'] == fixture['data']['r'] + assert builder.transaction.data['s'] == fixture['data']['s'] + + assert builder.transaction.serialize().hex() == fixture['serialized'] + assert builder.transaction.data['id'] == fixture['data']['id'] + assert builder.verify() diff --git a/tests/transactions/builder/test_validator_registration_builder.py b/tests/transactions/builder/test_validator_registration_builder.py index 284cd43a..6dec2be2 100644 --- a/tests/transactions/builder/test_validator_registration_builder.py +++ b/tests/transactions/builder/test_validator_registration_builder.py @@ -27,3 +27,30 @@ def test_validator_registration_transaction(passphrase, load_transaction_fixture assert builder.transaction.serialize().hex() == fixture['serialized'] assert builder.transaction.data['id'] == fixture['data']['id'] assert builder.verify() + +def test_validator_registration_transaction_with_default_recipient_address(passphrase, load_transaction_fixture): + fixture = load_transaction_fixture('validator-registration') + + builder = ( + ValidatorRegistrationBuilder() + .gas_price(fixture['data']['gasPrice']) + .nonce(fixture['data']['nonce']) + .network(fixture['data']['network']) + .gas_limit(fixture['data']['gasLimit']) + .validator_public_key('954f46d6097a1d314e900e66e11e0dad0a57cd03e04ec99f0dedd1c765dcb11e6d7fa02e22cf40f9ee23d9cc1c0624bd') + .sign(passphrase) + ) + + assert builder.transaction.data['gasPrice'] == fixture['data']['gasPrice'] + assert builder.transaction.data['nonce'] == fixture['data']['nonce'] + assert builder.transaction.data['network'] == fixture['data']['network'] + assert builder.transaction.data['gasLimit'] == fixture['data']['gasLimit'] + assert builder.transaction.data['recipientAddress'].lower() == fixture['data']['recipientAddress'].lower() + assert builder.transaction.data['value'] == fixture['data']['value'] + assert builder.transaction.data['v'] == fixture['data']['v'] + assert builder.transaction.data['r'] == fixture['data']['r'] + assert builder.transaction.data['s'] == fixture['data']['s'] + + assert builder.transaction.serialize().hex() == fixture['serialized'] + assert builder.transaction.data['id'] == fixture['data']['id'] + assert builder.verify() diff --git a/tests/transactions/builder/test_validator_resignation_builder.py b/tests/transactions/builder/test_validator_resignation_builder.py index d51340a2..9a2c359d 100644 --- a/tests/transactions/builder/test_validator_resignation_builder.py +++ b/tests/transactions/builder/test_validator_resignation_builder.py @@ -26,3 +26,29 @@ def test_validator_resignation_transaction(passphrase, load_transaction_fixture) assert builder.transaction.serialize().hex() == fixture['serialized'] assert builder.transaction.data['id'] == fixture['data']['id'] assert builder.verify() + +def test_validator_resignation_transaction_with_default_recipient_address(passphrase, load_transaction_fixture): + fixture = load_transaction_fixture('validator-resignation') + + builder = ( + ValidatorResignationBuilder() + .gas_price(fixture['data']['gasPrice']) + .nonce(fixture['data']['nonce']) + .network(fixture['data']['network']) + .gas_limit(fixture['data']['gasLimit']) + .sign(passphrase) + ) + + assert builder.transaction.data['gasPrice'] == fixture['data']['gasPrice'] + assert builder.transaction.data['nonce'] == fixture['data']['nonce'] + assert builder.transaction.data['network'] == fixture['data']['network'] + assert builder.transaction.data['gasLimit'] == fixture['data']['gasLimit'] + assert builder.transaction.data['recipientAddress'].lower() == fixture['data']['recipientAddress'].lower() + assert builder.transaction.data['value'] == fixture['data']['value'] + assert builder.transaction.data['v'] == fixture['data']['v'] + assert builder.transaction.data['r'] == fixture['data']['r'] + assert builder.transaction.data['s'] == fixture['data']['s'] + + assert builder.transaction.serialize().hex() == fixture['serialized'] + assert builder.transaction.data['id'] == fixture['data']['id'] + assert builder.verify() diff --git a/tests/transactions/builder/test_vote_builder.py b/tests/transactions/builder/test_vote_builder.py index a94161f3..afa815e8 100644 --- a/tests/transactions/builder/test_vote_builder.py +++ b/tests/transactions/builder/test_vote_builder.py @@ -27,3 +27,30 @@ def test_vote_transaction(passphrase, load_transaction_fixture): assert builder.transaction.serialize().hex() == fixture['serialized'] assert builder.transaction.data['id'] == fixture['data']['id'] assert builder.verify() + +def test_vote_transaction_with_default_recipient_address(passphrase, load_transaction_fixture): + fixture = load_transaction_fixture('vote') + + builder = ( + VoteBuilder() + .gas_price(fixture['data']['gasPrice']) + .nonce(fixture['data']['nonce']) + .network(fixture['data']['network']) + .gas_limit(fixture['data']['gasLimit']) + .vote('0xC3bBE9B1CeE1ff85Ad72b87414B0E9B7F2366763') # Example vote address + .sign(passphrase) + ) + + assert builder.transaction.data['gasPrice'] == fixture['data']['gasPrice'] + assert builder.transaction.data['nonce'] == fixture['data']['nonce'] + assert builder.transaction.data['network'] == fixture['data']['network'] + assert builder.transaction.data['gasLimit'] == fixture['data']['gasLimit'] + assert builder.transaction.data['recipientAddress'].lower() == fixture['data']['recipientAddress'].lower() + assert builder.transaction.data['value'] == fixture['data']['value'] + assert builder.transaction.data['v'] == fixture['data']['v'] + assert builder.transaction.data['r'] == fixture['data']['r'] + assert builder.transaction.data['s'] == fixture['data']['s'] + + assert builder.transaction.serialize().hex() == fixture['serialized'] + assert builder.transaction.data['id'] == fixture['data']['id'] + assert builder.verify()