-
Notifications
You must be signed in to change notification settings - Fork 16
Expand file tree
/
Copy pathtest_transfer_builder.py
More file actions
76 lines (65 loc) · 3.37 KB
/
test_transfer_builder.py
File metadata and controls
76 lines (65 loc) · 3.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
from crypto.transactions.builder.transfer_builder import TransferBuilder
from crypto.utils.unit_converter import UnitConverter
def test_it_should_sign_it_with_a_passphrase(passphrase, load_transaction_fixture):
fixture = load_transaction_fixture('transactions/transfer')
builder = (
TransferBuilder
.new()
.gas_price(fixture['data']['gasPrice'])
.nonce(fixture['data']['nonce'])
.gas_limit(fixture['data']['gasLimit'])
.to(fixture['data']['to'])
.value(fixture['data']['value'])
.sign(passphrase)
)
assert builder.transaction.data['gasPrice'] == int(fixture['data']['gasPrice'])
assert builder.transaction.data['gasLimit'] == int(fixture['data']['gasLimit'])
assert builder.transaction.data['nonce'] == fixture['data']['nonce']
assert builder.transaction.data['to'] == fixture['data']['to']
assert builder.transaction.data['value'] == int(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['hash'] == fixture['data']['hash']
assert builder.verify()
def test_it_should_sign_with_a_legacy_second_signature(passphrase, second_passphrase, load_transaction_fixture):
fixture = load_transaction_fixture('transactions/transfer-legacy-second-signature')
builder = (
TransferBuilder
.new()
.gas_price(fixture['data']['gasPrice'])
.nonce(fixture['data']['nonce'])
.gas_limit(fixture['data']['gasLimit'])
.to(fixture['data']['to'])
.value(fixture['data']['value'])
.legacy_second_sign(passphrase, second_passphrase)
)
assert builder.transaction.data['gasPrice'] == int(fixture['data']['gasPrice'])
assert builder.transaction.data['gasLimit'] == int(fixture['data']['gasLimit'])
assert builder.transaction.data['nonce'] == fixture['data']['nonce']
assert builder.transaction.data['to'] == fixture['data']['to']
assert builder.transaction.data['value'] == int(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.data['legacySecondSignature'] == fixture['data']['legacySecondSignature']
assert builder.transaction.serialize().hex() == fixture['serialized']
assert builder.transaction.data['hash'] == fixture['data']['hash']
assert builder.verify()
def test_it_should_handle_unit_converter(passphrase, address):
builder = (
TransferBuilder
.new()
.gas_price(UnitConverter.parse_units(5, 'gwei'))
.nonce('1')
.gas_limit(UnitConverter.parse_units(0.1, 'gwei'))
.to(address)
.value(UnitConverter.parse_units(10, 'ark'))
.sign(passphrase)
)
assert builder.transaction.data['gasPrice'] == 5000000000
assert builder.transaction.data['gasLimit'] == 100000000
assert builder.transaction.data['nonce'] == '1'
assert builder.transaction.data['value'] == 10000000000000000000
assert builder.verify()