start test for bitcoinRPC

This commit is contained in:
James Prestwich 2017-09-15 15:19:33 -06:00
parent cf00fd0474
commit b255ecdda1
No known key found for this signature in database
GPG Key ID: 519E010A79028CCC
2 changed files with 68 additions and 5 deletions

View File

@ -4,7 +4,6 @@ import sys
import bitcoin
import bitcoin.rpc
from xcat.utils import x2s
# from bitcoin import SelectParams
from bitcoin.core import b2x, lx, x, COIN, CMutableTxOut
from bitcoin.core import CMutableTxIn, CMutableTransaction
from bitcoin.core.script import CScript, OP_DUP, OP_IF, OP_ELSE, OP_ENDIF
@ -14,8 +13,6 @@ from bitcoin.core.script import OP_CHECKLOCKTIMEVERIFY, OP_SHA256, OP_TRUE
from bitcoin.core.scripteval import VerifyScript, SCRIPT_VERIFY_P2SH
from bitcoin.wallet import CBitcoinAddress, P2SHBitcoinAddress
from bitcoin.wallet import P2PKHBitcoinAddress
# import xcat.utils as utils
import logging
if sys.version_info.major < 3:
@ -27,9 +24,13 @@ FEE = 0.001 * COIN
class bitcoinProxy():
def __init__(self, network='regtest', timeout=900):
if network is not 'testnet' and network is not 'mainnet':
network = 'regtest'
if network not in ['testnet', 'mainnet', 'regtest']:
raise ValueError('Allowed networks are regtest, testnet, mainnet.')
if not isinstance(timeout, int) or timeout < 1:
raise ValueError('Timeout should be a positive integer.')
logging.debug("NETWORK in proxy: {0}".format(network))
self.network = network
self.timeout = timeout

View File

@ -0,0 +1,62 @@
import unittest
import unittest.mock as mock
from xcat.bitcoinRPC import bitcoinProxy
import logging
@mock.patch('xcat.bitcoinRPC.bitcoin.rpc')
class TestBitcoinProxy(unittest.TestCase):
"""Test case for the bitcoinProxy class."""
def setUp(self):
logging.disable(logging.CRITICAL)
@mock.patch('xcat.bitcoinRPC.bitcoin.SelectParams')
def test_init_with_testnet(self, mock_SP, mock_rpc):
"""Test bitcoinProxy.__init__"""
proxy = bitcoinProxy(network='testnet')
mock_rpc.Proxy.assert_called_with(timeout=900)
mock_SP.assert_called_with('testnet')
self.assertIsInstance(proxy, bitcoinProxy)
@mock.patch('xcat.bitcoinRPC.bitcoin.SelectParams')
def test_init_with_no_network(self, mock_SP, mock_rpc):
"""Test bitcoinProxy.__init__"""
proxy = bitcoinProxy()
mock_rpc.Proxy.assert_called_with(timeout=900)
mock_SP.assert_called_with('regtest')
self.assertIsInstance(proxy, bitcoinProxy)
def test_init_with_invalid(self, mock_rpc):
"""Test bitcoinProxy.__init__"""
with self.assertRaises(ValueError) as context:
proxy = bitcoinProxy(network='invalid input')
self.assertIsNone(proxy)
self.assertTrue(
'Allowed networks are regtest, testnet, mainnet.'
in str(context.exception))
def test_init_with_invalid_timeout(self, mock_rpc):
"""Test bitcoinProxy.__init__"""
with self.assertRaises(ValueError) as context:
proxy = bitcoinProxy(timeout='invalid input')
self.assertIsNone(proxy)
self.assertTrue(
'Timeout should be a positive integer.'
in str(context.exception))
with self.assertRaises(ValueError) as context_two:
proxy = bitcoinProxy(timeout=-381)
self.assertIsNone(proxy)
self.assertTrue(
'Timeout should be a positive integer.'
in str(context_two.exception))