From 2f53c5ff36f134b57acb4fcdfe25f68858268f76 Mon Sep 17 00:00:00 2001 From: Adam Gibson Date: Thu, 17 Sep 2020 15:47:08 +0100 Subject: [PATCH] add create_wallet tests --- jmclient/test/test_wallet.py | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/jmclient/test/test_wallet.py b/jmclient/test/test_wallet.py index a2f4596..4b0c87a 100644 --- a/jmclient/test/test_wallet.py +++ b/jmclient/test/test_wallet.py @@ -12,11 +12,14 @@ from jmclient import load_test_config, jm_single, \ SegwitLegacyWallet,BIP32Wallet, BIP49Wallet, LegacyWallet,\ VolatileStorage, get_network, cryptoengine, WalletError,\ SegwitWallet, WalletService, SegwitLegacyWalletFidelityBonds,\ - BTC_P2PKH, BTC_P2SH_P2WPKH,\ + BTC_P2PKH, BTC_P2SH_P2WPKH, create_wallet, open_test_wallet_maybe, \ FidelityBondMixin, FidelityBondWatchonlyWallet, wallet_gettimelockaddress from test_blockchaininterface import sync_test_wallet testdir = os.path.dirname(os.path.realpath(__file__)) + +test_create_wallet_filename = "testwallet_for_create_wallet_test" + log = get_log() @@ -815,10 +818,38 @@ def test_watchonly_wallet(setup_wallet): assert script == watchonly_script assert burn_pubkey == watchonly_burn_pubkey +@pytest.mark.parametrize('password, wallet_cls', [ + ["hunter2", SegwitLegacyWallet], + ["hunter2", SegwitWallet], +]) +def test_create_wallet(setup_wallet, password, wallet_cls): + wallet_name = test_create_wallet_filename + password = password.encode("utf-8") + # test mainnet (we are not transacting) + btc.select_chain_params("bitcoin") + wallet = create_wallet(wallet_name, password, 4, wallet_cls) + mnemonic = wallet.get_mnemonic_words()[0] + firstkey = wallet.get_key_from_addr(wallet.get_addr(0,0,0)) + print("Created mnemonic, firstkey: ", mnemonic, firstkey) + wallet.close() + # ensure that the wallet file created is openable with the password, + # and has the parameters that were claimed on creation: + new_wallet = open_test_wallet_maybe(wallet_name, "", 4, + password=password, ask_for_password=False) + assert new_wallet.get_mnemonic_words()[0] == mnemonic + assert new_wallet.get_key_from_addr( + new_wallet.get_addr(0,0,0)) == firstkey + os.remove(wallet_name) + btc.select_chain_params("bitcoin/regtest") + @pytest.fixture(scope='module') -def setup_wallet(): +def setup_wallet(request): load_test_config() btc.select_chain_params("bitcoin/regtest") #see note in cryptoengine.py: cryptoengine.BTC_P2WPKH.VBYTE = 100 jm_single().bc_interface.tick_forward_chain_interval = 2 + def teardown(): + if os.path.exists(test_create_wallet_filename): + os.remove(test_create_wallet_filename) + request.addfinalizer(teardown)