@@ -203,6 +203,57 @@ async def test_create_standard_wallet_newseed_passphrase(self):
203203 wallet = Daemon ._load_wallet (wallet_path , password = None , config = self .config )
204204 self .assertEqual ("bc1qgvx24uzdv4mapfmtlu8azty5fxdcw9ghxu4pr4" , wallet .get_receiving_addresses ()[0 ])
205205
206+ async def test_create_standard_wallet_haveseed_electrum_oldseed (self ):
207+ w = self .wizard_for (name = 'test_standard_wallet' , wallet_type = 'standard' )
208+ v = w ._current
209+ d = v .wizard_data
210+ self .assertEqual ('keystore_type' , v .view )
211+
212+ d .update ({'keystore_type' : 'haveseed' })
213+ v = w .resolve_next (v .view , d )
214+ self .assertEqual ('have_seed' , v .view )
215+
216+ d .update ({
217+ 'seed' : 'powerful random nobody notice nothing important anyway look away hidden message over' ,
218+ 'seed_type' : 'old' , 'seed_extend' : False , 'seed_variant' : 'electrum' })
219+ v = w .resolve_next (v .view , d )
220+ self .assertEqual ('wallet_password' , v .view )
221+
222+ d .update ({'password' : None , 'encrypt' : False })
223+ self .assertTrue (w .is_last_view (v .view , d ))
224+ v = w .resolve_next (v .view , d )
225+
226+ wallet_path = os .path .join (w ._daemon .config .get_datadir_wallet_path (), d ['wallet_name' ])
227+ w .create_storage (wallet_path , d )
228+
229+ self .assertTrue (os .path .exists (wallet_path ))
230+ wallet = Daemon ._load_wallet (wallet_path , password = None , config = self .config )
231+ self .assertEqual ("1FJEEB8ihPMbzs2SkLmr37dHyRFzakqUmo" , wallet .get_receiving_addresses ()[0 ])
232+
233+ async def test_create_standard_wallet_haveseed_electrum_oldseed_passphrase (self ):
234+ w = self .wizard_for (name = 'test_standard_wallet' , wallet_type = 'standard' )
235+ v = w ._current
236+ d = v .wizard_data
237+ self .assertEqual ('keystore_type' , v .view )
238+
239+ d .update ({'keystore_type' : 'haveseed' })
240+ v = w .resolve_next (v .view , d )
241+ self .assertEqual ('have_seed' , v .view )
242+
243+ d .update ({
244+ 'seed' : 'powerful random nobody notice nothing important anyway look away hidden message over' ,
245+ 'seed_type' : 'old' , 'seed_extend' : True , 'seed_variant' : 'electrum' })
246+ v = w .resolve_next (v .view , d )
247+ # FIXME this diverges from the actual GUIs :(
248+ # the GUIs do validation using wizard.validate_seed() and don't go to 'have_ext' for next view.
249+ # the validation should be moved to the base impl!
250+ self .assertEqual ('have_ext' , v .view )
251+
252+ d .update ({'seed_extra_words' : UNICODE_HORROR })
253+ with self .assertRaises (Exception ) as ctx :
254+ v = w .resolve_next (v .view , d )
255+ self .assertTrue ("cannot have passphrase" in ctx .exception .args [0 ])
256+
206257 async def test_create_standard_wallet_haveseed_electrum (self ):
207258 w = self .wizard_for (name = 'test_standard_wallet' , wallet_type = 'standard' )
208259 v = w ._current
@@ -286,6 +337,39 @@ async def test_create_standard_wallet_haveseed_bip39(self):
286337 wallet = Daemon ._load_wallet (wallet_path , password = None , config = self .config )
287338 self .assertEqual ("bc1qrjr8qn4669jgr3s34f2pyj9awhz02eyvk5eh8g" , wallet .get_receiving_addresses ()[0 ])
288339
340+ async def test_create_standard_wallet_haveseed_bip39_passphrase (self ):
341+ w = self .wizard_for (name = 'test_standard_wallet' , wallet_type = 'standard' )
342+ v = w ._current
343+ d = v .wizard_data
344+ self .assertEqual ('keystore_type' , v .view )
345+
346+ d .update ({'keystore_type' : 'haveseed' })
347+ v = w .resolve_next (v .view , d )
348+ self .assertEqual ('have_seed' , v .view )
349+
350+ d .update ({'seed' : '9dk' , 'seed_type' : 'bip39' , 'seed_extend' : True , 'seed_variant' : 'bip39' })
351+ v = w .resolve_next (v .view , d )
352+ self .assertEqual ('have_ext' , v .view )
353+
354+ d .update ({'seed_extra_words' : UNICODE_HORROR })
355+ v = w .resolve_next (v .view , d )
356+ self .assertEqual ('script_and_derivation' , v .view )
357+
358+ d .update ({'script_type' : 'p2wpkh' , 'derivation_path' : 'm' })
359+ v = w .resolve_next (v .view , d )
360+ self .assertEqual ('wallet_password' , v .view )
361+
362+ d .update ({'password' : None , 'encrypt' : False })
363+ self .assertTrue (w .is_last_view (v .view , d ))
364+ v = w .resolve_next (v .view , d )
365+
366+ wallet_path = os .path .join (w ._daemon .config .get_datadir_wallet_path (), d ['wallet_name' ])
367+ w .create_storage (wallet_path , d )
368+
369+ self .assertTrue (os .path .exists (wallet_path ))
370+ wallet = Daemon ._load_wallet (wallet_path , password = None , config = self .config )
371+ self .assertEqual ("bc1qjexrunguxz8rlfuul8h4apafyh3sq5yp9kg98j" , wallet .get_receiving_addresses ()[0 ])
372+
289373 async def test_2fa_haveseed (self ):
290374 self .assertTrue (self .config .get ('enable_plugin_trustedcoin' ))
291375 w = self .wizard_for (name = 'test_2fa_wallet' , wallet_type = '2fa' )
0 commit comments