tests: walletdb: add failing test case for persistence with jsonpatch
add reproducer for https://github.com/spesmilo/electrum/issues/8842
This commit is contained in:
@@ -17,7 +17,11 @@ from electrum.util import TxMinedInfo, InvalidPassword
|
|||||||
from electrum.bitcoin import COIN
|
from electrum.bitcoin import COIN
|
||||||
from electrum.wallet_db import WalletDB, JsonDB
|
from electrum.wallet_db import WalletDB, JsonDB
|
||||||
from electrum.simple_config import SimpleConfig
|
from electrum.simple_config import SimpleConfig
|
||||||
|
from electrum import util
|
||||||
from electrum.daemon import Daemon
|
from electrum.daemon import Daemon
|
||||||
|
from electrum.invoices import PR_UNPAID, PR_PAID, PR_UNCONFIRMED
|
||||||
|
from electrum.transaction import tx_from_any
|
||||||
|
from electrum.address_synchronizer import TX_HEIGHT_UNCONFIRMED
|
||||||
|
|
||||||
from . import ElectrumTestCase
|
from . import ElectrumTestCase
|
||||||
|
|
||||||
@@ -112,6 +116,32 @@ class TestWalletStorage(WalletTestCase):
|
|||||||
self.assertTrue('030dac677b9484e23db6f9255eddf433f4f12c02f9b35e0100f2f103ffbccf540f' in wallet.keystore.keypairs)
|
self.assertTrue('030dac677b9484e23db6f9255eddf433f4f12c02f9b35e0100f2f103ffbccf540f' in wallet.keystore.keypairs)
|
||||||
self.assertTrue('02f11d5f222a728fd08226cb5a1e85a74d58fc257bd3764bf1234346f91defed72' in wallet.keystore.keypairs)
|
self.assertTrue('02f11d5f222a728fd08226cb5a1e85a74d58fc257bd3764bf1234346f91defed72' in wallet.keystore.keypairs)
|
||||||
|
|
||||||
|
async def test_storage_prevouts_by_scripthash_persistence(self):
|
||||||
|
text = 'cycle rocket west magnet parrot shuffle foot correct salt library feed song'
|
||||||
|
d = restore_wallet_from_text(text, path=self.wallet_path, gap_limit=2, config=self.config)
|
||||||
|
wallet1 = d['wallet'] # type: Standard_Wallet
|
||||||
|
# create payreq
|
||||||
|
addr = wallet1.get_unused_address()
|
||||||
|
self.assertEqual("1NNkttn1YvVGdqBW4PR6zvc3Zx3H5owKRf", addr)
|
||||||
|
pr_key = wallet1.create_request(amount_sat=10000, message="msg", address=addr, exp_delay=86400)
|
||||||
|
pr = wallet1.get_request(pr_key)
|
||||||
|
self.assertIsNotNone(pr)
|
||||||
|
self.assertEqual(PR_UNPAID, wallet1.get_invoice_status(pr))
|
||||||
|
await wallet1.stop()
|
||||||
|
|
||||||
|
# open the wallet anew again, and get paid onchain
|
||||||
|
del wallet1
|
||||||
|
wallet1 = Daemon._load_wallet(self.wallet_path, password=None, config=self.config)
|
||||||
|
tx = tx_from_any("02000000000101a97a9ae7fb1a9220fdd170a974987ac24631dcff89b60fa4907c78c3639994db0000000000fdffffff0210270000000000001976a914ea7804a2c266063572cc009a63dc25dcc0e9d9b588ac20491e0000000000160014b8e4fdc91593b67de2bf214694ef47e38dc2ee8e02473044022005326882904906cfa9c1de75333ace1019596f2ab25d21118220d037dfc0e48b02207d0b3f075cfe5e1e0247ff3cdd7155dc05e7459daf1bfa0ea02e9112b9151ec90121026cc6a74c2b0e38661d341ffae48fe7dde5196ca4afe95d28b496673fa4cf646700000000")
|
||||||
|
wallet1.adb.receive_tx_callback(tx, TX_HEIGHT_UNCONFIRMED)
|
||||||
|
self.assertEqual(PR_UNCONFIRMED, wallet1.get_invoice_status(pr))
|
||||||
|
await wallet1.stop()
|
||||||
|
|
||||||
|
# open the wallet anew again, and verify payreq is still paid
|
||||||
|
del wallet1
|
||||||
|
wallet1 = Daemon._load_wallet(self.wallet_path, password=None, config=self.config)
|
||||||
|
self.assertEqual(PR_UNCONFIRMED, wallet1.get_invoice_status(pr))
|
||||||
|
|
||||||
|
|
||||||
class FakeExchange(ExchangeBase):
|
class FakeExchange(ExchangeBase):
|
||||||
def __init__(self, rate):
|
def __init__(self, rate):
|
||||||
|
|||||||
Reference in New Issue
Block a user