cmdtest.py autosign_automount: add hooks for multi-user support
This commit is contained in:
parent
7b6717d85a
commit
28cecaec08
2 changed files with 79 additions and 61 deletions
|
|
@ -86,52 +86,19 @@ class CmdTestAutosignAutomount(CmdTestAutosignThreaded, CmdTestRegtest):
|
|||
|
||||
self.opts.append('--alice')
|
||||
|
||||
def _alice_txcreate(self, chg_addr, opts=[], exit_val=0, expect_str=None, data_arg=None, need_rbf=False):
|
||||
|
||||
if need_rbf and not self.proto.cap('rbf'):
|
||||
return 'skip'
|
||||
|
||||
def do_return():
|
||||
if expect_str:
|
||||
t.expect(expect_str)
|
||||
t.read()
|
||||
self.remove_device_online()
|
||||
return t
|
||||
|
||||
self.insert_device_online()
|
||||
|
||||
sid = self._user_sid('alice')
|
||||
t = self.spawn(
|
||||
'mmgen-txcreate',
|
||||
opts
|
||||
+ ['--alice', '--autosign']
|
||||
+ ([data_arg] if data_arg else [])
|
||||
+ [f'{self.burn_addr},1.23456', f'{sid}:{chg_addr}'],
|
||||
exit_val = exit_val or None)
|
||||
|
||||
if exit_val:
|
||||
return do_return()
|
||||
|
||||
t = self.txcreate_ui_common(
|
||||
t,
|
||||
inputs = '1',
|
||||
interactive_fee = '32s',
|
||||
file_desc = 'Unsigned automount transaction')
|
||||
|
||||
return do_return()
|
||||
|
||||
def alice_txcreate1(self):
|
||||
return self._alice_txcreate(
|
||||
return self._user_txcreate(
|
||||
'alice',
|
||||
chg_addr = 'C:5',
|
||||
data_arg = 'data:'+gr_uc[:24])
|
||||
|
||||
def alice_txcreate2(self):
|
||||
return self._alice_txcreate(chg_addr='L:5')
|
||||
return self._user_txcreate('alice', chg_addr='L:5')
|
||||
|
||||
alice_txcreate3 = alice_txcreate2
|
||||
|
||||
def alice_txcreate4(self):
|
||||
return self._alice_txcreate(chg_addr='L:4', need_rbf=True)
|
||||
return self._user_txcreate('alice', chg_addr='L:4', need_rbf=True)
|
||||
|
||||
def _alice_txsend_abort(self, err=False, send_resp='y', expect=None, shred_expect=[]):
|
||||
self.insert_device_online()
|
||||
|
|
@ -167,25 +134,25 @@ class CmdTestAutosignAutomount(CmdTestAutosignThreaded, CmdTestRegtest):
|
|||
alice_txsend_abort5 = alice_txsend_abort2
|
||||
|
||||
def alice_txcreate_bad_have_unsigned(self):
|
||||
return self._alice_txcreate(chg_addr='C:5', exit_val=2, expect_str='already present')
|
||||
return self._user_txcreate('alice', chg_addr='C:5', exit_val=2, expect_str='already present')
|
||||
|
||||
def alice_txcreate_bad_have_unsent(self):
|
||||
return self._alice_txcreate(chg_addr='C:5', exit_val=2, expect_str='unsent transaction')
|
||||
return self._user_txcreate('alice', chg_addr='C:5', exit_val=2, expect_str='unsent transaction')
|
||||
|
||||
def alice_run_autosign_setup(self):
|
||||
return self.run_setup(mn_type='default', use_dfl_wallet=True, passwd=rt_pw)
|
||||
|
||||
def alice_txsend1(self):
|
||||
return self._alice_txsend('This one’s worth a comment', no_wait=True)
|
||||
return self._user_txsend('alice', 'This one’s worth a comment', no_wait=True)
|
||||
|
||||
def alice_txsend2(self):
|
||||
return self._alice_txsend(need_rbf=True)
|
||||
return self._user_txsend('alice', need_rbf=True)
|
||||
|
||||
def alice_txsend3(self):
|
||||
return self._alice_txsend(need_rbf=True)
|
||||
return self._user_txsend('alice', need_rbf=True)
|
||||
|
||||
def alice_txsend5(self):
|
||||
return self._alice_txsend(need_rbf=True)
|
||||
return self._user_txsend('alice', need_rbf=True)
|
||||
|
||||
def _alice_txstatus(self, expect, exit_val=None, need_rbf=False):
|
||||
|
||||
|
|
@ -218,24 +185,6 @@ class CmdTestAutosignAutomount(CmdTestAutosignThreaded, CmdTestRegtest):
|
|||
def alice_txstatus5(self):
|
||||
return self._alice_txstatus('in mempool', need_rbf=True)
|
||||
|
||||
def _alice_txsend(self, comment=None, no_wait=False, need_rbf=False):
|
||||
|
||||
if need_rbf and not self.proto.cap('rbf'):
|
||||
return 'skip'
|
||||
|
||||
if not no_wait:
|
||||
self._wait_signed('transaction')
|
||||
|
||||
self.insert_device_online()
|
||||
t = self.spawn('mmgen-txsend', ['--alice', '--quiet', '--autosign'])
|
||||
t.view_tx('t')
|
||||
t.do_comment(comment)
|
||||
self._do_confirm_send(t, quiet=True)
|
||||
t.written_to_file('Sent automount transaction')
|
||||
t.read()
|
||||
self.remove_device_online()
|
||||
return t
|
||||
|
||||
def alice_txsend_bad_no_unsent(self):
|
||||
self.insert_device_online()
|
||||
t = self.spawn('mmgen-txsend', ['--quiet', '--autosign'], exit_val=2)
|
||||
|
|
|
|||
|
|
@ -441,6 +441,75 @@ class CmdTestAutosignThreaded(CmdTestAutosignBase):
|
|||
no_insert_check = False
|
||||
threaded = True
|
||||
|
||||
def _user_txcreate(
|
||||
self,
|
||||
user,
|
||||
progname = 'txcreate',
|
||||
input_handler = None,
|
||||
chg_addr = None,
|
||||
opts = [],
|
||||
output_args = [],
|
||||
exit_val = 0,
|
||||
expect_str = None,
|
||||
data_arg = None,
|
||||
need_rbf = False):
|
||||
|
||||
if output_args:
|
||||
assert not chg_addr
|
||||
|
||||
if chg_addr:
|
||||
assert not output_args
|
||||
|
||||
if need_rbf and not self.proto.cap('rbf'):
|
||||
return 'skip'
|
||||
|
||||
def do_return():
|
||||
if expect_str:
|
||||
t.expect(expect_str)
|
||||
t.read()
|
||||
self.remove_device_online()
|
||||
return t
|
||||
|
||||
self.insert_device_online()
|
||||
|
||||
sid = self._user_sid(user)
|
||||
t = self.spawn(
|
||||
f'mmgen-{progname}',
|
||||
opts
|
||||
+ [f'--{user}', '--autosign']
|
||||
+ ([data_arg] if data_arg else [])
|
||||
+ (output_args or [f'{self.burn_addr},1.23456', f'{sid}:{chg_addr}']),
|
||||
exit_val = exit_val or None)
|
||||
|
||||
if exit_val:
|
||||
return do_return()
|
||||
|
||||
t = (input_handler or self.txcreate_ui_common)(
|
||||
t,
|
||||
inputs = '1',
|
||||
interactive_fee = '32s',
|
||||
file_desc = 'Unsigned automount transaction')
|
||||
|
||||
return do_return()
|
||||
|
||||
def _user_txsend(self, user, comment=None, no_wait=False, need_rbf=False):
|
||||
|
||||
if need_rbf and not self.proto.cap('rbf'):
|
||||
return 'skip'
|
||||
|
||||
if not no_wait:
|
||||
self._wait_signed('transaction')
|
||||
|
||||
self.insert_device_online()
|
||||
t = self.spawn('mmgen-txsend', [f'--{user}', '--quiet', '--autosign'])
|
||||
t.view_tx('t')
|
||||
t.do_comment(comment)
|
||||
self._do_confirm_send(t, quiet=True)
|
||||
t.written_to_file('Sent automount transaction')
|
||||
t.read()
|
||||
self.remove_device_online()
|
||||
return t
|
||||
|
||||
def _wait_loop_start(self, add_opts=[]):
|
||||
t = self.spawn(
|
||||
'mmgen-autosign',
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue