commit 584002a1643e3366ff8ea36258f54746e3906b95
parent f33934059b084bc80ad1f2e39a0997114104a604
Author: chris-belcher <chris-belcher@users.noreply.github.com>
Date: Fri, 30 Mar 2018 22:53:49 +0100
handled conflicted transactions, and wrote tests
Diffstat:
1 file changed, 27 insertions(+), 0 deletions(-)
diff --git a/electrumpersonalserver/transactionmonitor.py b/electrumpersonalserver/transactionmonitor.py
@@ -106,6 +106,8 @@ class TransactionMonitor(object):
continue
if tx["category"] not in ("receive", "send"):
continue
+ if tx["confirmations"] == -1:
+ continue #conflicted
if tx["txid"] in obtained_txids:
continue
self.debug("adding obtained tx=" + str(tx["txid"]))
@@ -319,6 +321,8 @@ class TransactionMonitor(object):
continue
if tx["category"] not in ("receive", "send"):
continue
+ if tx["confirmations"] == -1:
+ continue #conflicted
if tx["txid"] in obtained_txids:
continue
obtained_txids.add(tx["txid"])
@@ -712,6 +716,29 @@ def test():
assert rpc.get_imported_addresses()[0] == test_spk_to_address(
test_spk9_imported)
+ ###conflicted transaction
+ test_spk10 = "deadbeefdeadbeefcccc"
+ test_paying_in_tx10 = {
+ "txid": "placeholder-test-txid10",
+ "vin": [{"txid": "placeholder-unknown-input-txid", "vout": 0}],
+ "vout": [{"value": 1, "scriptPubKey": {"hex": test_spk10}}],
+ "address": test_spk_to_address(test_spk10),
+ "category": "receive",
+ "confirmations": -1,
+ "hex": "placeholder-test-txhex10"
+ }
+ rpc = TestJsonRpc([test_paying_in_tx10], [], {})
+ txmonitor10 = TransactionMonitor(rpc, deterministic_wallets, debugf, logf)
+ assert txmonitor10.build_address_history([test_spk10])
+ assert len(txmonitor10.address_history) == 1
+ assert len(txmonitor10.get_electrum_history(hashes.script_to_scripthash(
+ test_spk10))) == 0 #shouldnt show up after build history
+ rpc.add_transaction(test_paying_in_tx10)
+ assert len(list(txmonitor10.check_for_updated_txes())) == 0
+ assert len(txmonitor10.get_electrum_history(hashes.script_to_scripthash(
+ test_spk10))) == 0 #shouldnt show up after tx is added
+
+
#other possible stuff to test:
#finding confirmed and unconfirmed tx, in that order, then both confirm
#finding unconfirmed and confirmed tx, in that order, then both confirm