@@ -105,5 +105,113 @@ def test_create_multi_transfer_transaction_with_single_egld_transfer(capsys: Any
105105 assert data == "MultiESDTNFTTransfer@8049d639e5a6980d1cd2392abcce41029cda74a1563523a202f09641cc2618f8@01@45474c442d303030303030@@0de0b6b3a7640000"
106106
107107
108+ def test_relayed_v3_without_relayer_wallet (capsys : Any ):
109+ return_code = main ([
110+ "tx" , "new" ,
111+ "--pem" , str (testdata_path / "alice.pem" ),
112+ "--receiver" , "erd1spyavw0956vq68xj8y4tenjpq2wd5a9p2c6j8gsz7ztyrnpxrruqzu66jx" ,
113+ "--nonce" , "7" ,
114+ "--gas-limit" , "1300000" ,
115+ "--value" , "1000000000000000000" ,
116+ "--chain" , "T" ,
117+ "--relayer" , "erd1cqqxak4wun7508e0yj9ng843r6hv4mzd0hhpjpsejkpn9wa9yq8sj7u2u5"
118+ ])
119+ assert return_code == 0
120+ tx = _read_stdout (capsys )
121+ tx_json = json .loads (tx )["emittedTransaction" ]
122+ assert tx_json ["sender" ] == "erd1qyu5wthldzr8wx5c9ucg8kjagg0jfs53s8nr3zpz3hypefsdd8ssycr6th"
123+ assert tx_json ["receiver" ] == "erd1spyavw0956vq68xj8y4tenjpq2wd5a9p2c6j8gsz7ztyrnpxrruqzu66jx"
124+ assert tx_json ["relayer" ] == "erd1cqqxak4wun7508e0yj9ng843r6hv4mzd0hhpjpsejkpn9wa9yq8sj7u2u5"
125+ assert tx_json ["signature" ]
126+ assert not tx_json ["relayerSignature" ]
127+
128+
129+ def test_relayed_v3_incorrect_relayer ():
130+ return_code = main ([
131+ "tx" , "new" ,
132+ "--pem" , str (testdata_path / "alice.pem" ),
133+ "--receiver" , "erd1spyavw0956vq68xj8y4tenjpq2wd5a9p2c6j8gsz7ztyrnpxrruqzu66jx" ,
134+ "--nonce" , "7" ,
135+ "--gas-limit" , "1300000" ,
136+ "--value" , "1000000000000000000" ,
137+ "--chain" , "T" ,
138+ "--relayer" , "erd1cqqxak4wun7508e0yj9ng843r6hv4mzd0hhpjpsejkpn9wa9yq8sj7u2u5" ,
139+ "--relayer-pem" , str (testdata_path / "alice.pem" )
140+ ])
141+ assert return_code
142+
143+
144+ def test_create_relayed_v3_transaction (capsys : Any ):
145+ # create relayed v3 tx and save signature and relayer signature
146+ # create the same tx, save to file
147+ # sign from file with relayer wallet and make sure signatures match
148+ return_code = main ([
149+ "tx" , "new" ,
150+ "--pem" , str (testdata_path / "alice.pem" ),
151+ "--receiver" , "erd1spyavw0956vq68xj8y4tenjpq2wd5a9p2c6j8gsz7ztyrnpxrruqzu66jx" ,
152+ "--nonce" , "7" ,
153+ "--gas-limit" , "1300000" ,
154+ "--value" , "1000000000000000000" ,
155+ "--chain" , "T" ,
156+ "--relayer" , "erd1cqqxak4wun7508e0yj9ng843r6hv4mzd0hhpjpsejkpn9wa9yq8sj7u2u5" ,
157+ "--relayer-pem" , str (testdata_path / "testUser.pem" )
158+ ])
159+ assert return_code == 0
160+
161+ tx = _read_stdout (capsys )
162+ tx_json = json .loads (tx )["emittedTransaction" ]
163+ assert tx_json ["sender" ] == "erd1qyu5wthldzr8wx5c9ucg8kjagg0jfs53s8nr3zpz3hypefsdd8ssycr6th"
164+ assert tx_json ["receiver" ] == "erd1spyavw0956vq68xj8y4tenjpq2wd5a9p2c6j8gsz7ztyrnpxrruqzu66jx"
165+ assert tx_json ["relayer" ] == "erd1cqqxak4wun7508e0yj9ng843r6hv4mzd0hhpjpsejkpn9wa9yq8sj7u2u5"
166+ assert tx_json ["signature" ]
167+ assert tx_json ["relayerSignature" ]
168+
169+ initial_sender_signature = tx_json ["signature" ]
170+ initial_relayer_signature = tx_json ["relayerSignature" ]
171+
172+ # Clear the captured content
173+ capsys .readouterr ()
174+
175+ # save tx to file then load and sign tx by relayer
176+ return_code = main ([
177+ "tx" , "new" ,
178+ "--pem" , str (testdata_path / "alice.pem" ),
179+ "--receiver" , "erd1spyavw0956vq68xj8y4tenjpq2wd5a9p2c6j8gsz7ztyrnpxrruqzu66jx" ,
180+ "--nonce" , "7" ,
181+ "--gas-limit" , "1300000" ,
182+ "--value" , "1000000000000000000" ,
183+ "--chain" , "T" ,
184+ "--relayer" , "erd1cqqxak4wun7508e0yj9ng843r6hv4mzd0hhpjpsejkpn9wa9yq8sj7u2u5" ,
185+ "--outfile" , str (testdata_out / "relayed.json" )
186+ ])
187+ assert return_code == 0
188+
189+ # Clear the captured content
190+ capsys .readouterr ()
191+
192+ return_code = main ([
193+ "tx" , "relay" ,
194+ "--relayer-pem" , str (testdata_path / "testUser.pem" ),
195+ "--infile" , str (testdata_out / "relayed.json" )
196+ ])
197+ assert return_code == 0
198+
199+ tx = _read_stdout (capsys )
200+ tx_json = json .loads (tx )["emittedTransaction" ]
201+ assert tx_json ["signature" ] == initial_sender_signature
202+ assert tx_json ["relayerSignature" ] == initial_relayer_signature
203+
204+ # Clear the captured content
205+ capsys .readouterr ()
206+
207+
208+ def test_check_relayer_wallet_is_provided ():
209+ return_code = main ([
210+ "tx" , "relay" ,
211+ "--infile" , str (testdata_out / "relayed.json" )
212+ ])
213+ assert return_code
214+
215+
108216def _read_stdout (capsys : Any ) -> str :
109217 return capsys .readouterr ().out .strip ()
0 commit comments