From 33b78551a37ba083045e1603d28e4bc78198b89d Mon Sep 17 00:00:00 2001 From: Roman Zeyde Date: Tue, 25 Aug 2015 13:37:12 +0300 Subject: [PATCH] test_transaction: add Transaction.sweep() test case --- lib/tests/test_transaction.py | 51 +++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/lib/tests/test_transaction.py b/lib/tests/test_transaction.py index f892eef1..49a2bbd2 100644 --- a/lib/tests/test_transaction.py +++ b/lib/tests/test_transaction.py @@ -112,3 +112,54 @@ class TestTransaction(unittest.TestCase): tx.sign(keypairs={x_pubkey: privkey}) self.assertEquals(tx.serialize(), signed_blob) + + def test_sweep(self): + privkeys = ['5HuH1SHoSVrgtPEwew9JzVAHGoKyp47x564mBCTgVmUT2Me1Q18'] + unspent = [ + { + "height": 371447, + "tx_hash": "8e4d173db094786cc128b0c12eebc2200c0d8bfc3ad04ba39f487222d18bae3c", + "tx_pos": 0, + "value": 599995800 + } + ] + to_address = '1JtBahwvii2pRkBmb4QMfcJQux1rk3Jkbq' + network = NetworkMock(unspent) + tx = transaction.Transaction.sweep(privkeys, network, to_address, fee=5000) + result = transaction.deserialize(tx.serialize()) + expected = { + 'inputs': [{ + 'address': '1t28kmZypcPQrunmJk212dcPGPxbBtB6Y', + 'is_coinbase': False, + 'num_sig': 1, + 'prevout_hash': '8e4d173db094786cc128b0c12eebc2200c0d8bfc3ad04ba39f487222d18bae3c', + 'prevout_n': 0, + 'pubkeys': ['047b9f9014f8d0d6f24dcaf5681b6ab185bd821e0fcce29d84e0452845baf1b2dbe332a7cd4dbdab786adda6d71b2188298c756b265c63de2794f7317b71a7ac02'], + 'scriptSig': '48304502203f1ff200490d18bcb802c7cf7ba4264727b089f1db6746a62997285b5ac77969022100e495591ea5111bb23a782984736f32942570fda781b7ed085fc8c88a9756aaac0141047b9f9014f8d0d6f24dcaf5681b6ab185bd821e0fcce29d84e0452845baf1b2dbe332a7cd4dbdab786adda6d71b2188298c756b265c63de2794f7317b71a7ac02', + 'sequence': 4294967295, + 'signatures': ['304502203f1ff200490d18bcb802c7cf7ba4264727b089f1db6746a62997285b5ac77969022100e495591ea5111bb23a782984736f32942570fda781b7ed085fc8c88a9756aaac'], + 'x_pubkeys': ['047b9f9014f8d0d6f24dcaf5681b6ab185bd821e0fcce29d84e0452845baf1b2dbe332a7cd4dbdab786adda6d71b2188298c756b265c63de2794f7317b71a7ac02']}], + 'lockTime': 0, + 'outputs': [{'address': '1JtBahwvii2pRkBmb4QMfcJQux1rk3Jkbq', + 'prevout_n': 0, + 'scriptPubKey': '76a914c4282f6060b811ee695ebb2068b8788213451d6a88ac', + 'type': 'address', + 'value': 599990800}], + 'version': 1} + self.assertEquals(result, expected) + + network = NetworkMock([]) + tx = transaction.Transaction.sweep(privkeys, network, to_address, fee=5000) + self.assertEquals(tx, None) + + privkeys = [] + tx = transaction.Transaction.sweep(privkeys, network, to_address, fee=5000) + self.assertEquals(tx, None) + +class NetworkMock(object): + + def __init__(self, unspent): + self.unspent = unspent + + def synchronous_get(self, arg): + return [self.unspent]