1+ from crypto .constants import TRANSACTION_FEES
2+ from crypto .identity .public_key import PublicKey
3+ from crypto .transactions .builder .multi_signature_registration import MultiSignatureRegistration
14from crypto .transactions .deserializer import Deserializer
5+ from crypto .transactions .serializer import Serializer
26
37
48def test_multi_signature_registration_deserializer (transaction_type_4 ):
@@ -21,3 +25,76 @@ def test_multi_signature_registration_deserializer(transaction_type_4):
2125 assert actual .signatures == transaction_type_4 ['signatures' ]
2226
2327 actual .verify_multisig_schnorr ()
28+
29+
30+ def test_multi_signature_registration_deserializer_from_serialized (transaction_type_4 ):
31+ result = Serializer (transaction_type_4 ).serialize (False , True , False )
32+
33+ deserializer = Deserializer (result )
34+ actual = deserializer .deserialize ()
35+
36+ assert actual .version == transaction_type_4 ['version' ]
37+ assert actual .network == transaction_type_4 ['network' ]
38+ assert actual .typeGroup == transaction_type_4 ['typeGroup' ]
39+ assert actual .type == transaction_type_4 ['type' ]
40+ assert actual .nonce == transaction_type_4 ['nonce' ]
41+ assert actual .senderPublicKey == transaction_type_4 ['senderPublicKey' ]
42+ assert actual .fee == transaction_type_4 ['fee' ]
43+ assert actual .amount == transaction_type_4 ['amount' ]
44+ assert actual .signature == transaction_type_4 ['signature' ]
45+ assert actual .id == transaction_type_4 ['id' ]
46+
47+ assert actual .asset ['multiSignature' ]['min' ] == transaction_type_4 ['asset' ]['multiSignature' ]['min' ]
48+ assert actual .asset ['multiSignature' ]['publicKeys' ] == transaction_type_4 ['asset' ]['multiSignature' ]['publicKeys' ]
49+ assert actual .signatures == transaction_type_4 ['signatures' ]
50+
51+ actual .verify_multisig_schnorr ()
52+
53+ def test_with_methods (passphrase ):
54+ transaction = MultiSignatureRegistration ()
55+
56+ passphrase_2 = f'{ passphrase } 2'
57+ passphrase_3 = f'{ passphrase } 3'
58+
59+ sender_public_key = PublicKey .from_passphrase (passphrase )
60+ participant_2 = PublicKey .from_passphrase (passphrase_2 )
61+ participant_3 = PublicKey .from_passphrase (passphrase_3 )
62+
63+ transaction .set_sender_public_key (sender_public_key )
64+ transaction .set_nonce (15 )
65+ transaction .set_min (2 )
66+ transaction .add_participant (sender_public_key )
67+ transaction .add_participant (participant_2 )
68+ transaction .add_participant (participant_3 )
69+
70+ transaction .multi_sign (passphrase , 0 )
71+ transaction .multi_sign (passphrase_2 , 1 )
72+ transaction .multi_sign (passphrase_3 , 2 )
73+
74+ transaction .sign (passphrase )
75+
76+ result = Serializer (transaction .to_dict ()).serialize (False , True , False )
77+
78+ deserializer = Deserializer (result )
79+ actual = deserializer .deserialize ()
80+
81+ assert actual .version == 1
82+ assert actual .network == 30
83+ assert actual .typeGroup == 1
84+ assert actual .type == 4
85+ assert actual .nonce == 15
86+ assert actual .senderPublicKey == sender_public_key
87+ assert actual .fee == TRANSACTION_FEES [4 ]
88+ assert actual .amount == 0
89+ assert actual .signature == transaction .transaction .signature
90+ assert actual .id == transaction .transaction .id
91+
92+ assert actual .asset ['multiSignature' ]['min' ] == 2
93+ assert actual .asset ['multiSignature' ]['publicKeys' ][0 ] == sender_public_key
94+ assert actual .asset ['multiSignature' ]['publicKeys' ][1 ] == participant_2
95+ assert actual .asset ['multiSignature' ]['publicKeys' ][2 ] == participant_3
96+
97+ assert actual .signatures == transaction .transaction .signatures
98+ assert len (actual .signatures ) == 3
99+
100+ actual .verify_multisig_schnorr ()
0 commit comments