From c278972f26b3e850f8c97d658b7328da63ce25c6 Mon Sep 17 00:00:00 2001 From: Kay Kurokawa Date: Wed, 7 Dec 2016 09:48:37 -0500 Subject: [PATCH] adding unit tests for Wallet.py --- tests/unit/core/test_Wallet.py | 136 +++++++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 tests/unit/core/test_Wallet.py diff --git a/tests/unit/core/test_Wallet.py b/tests/unit/core/test_Wallet.py new file mode 100644 index 000000000..17a203246 --- /dev/null +++ b/tests/unit/core/test_Wallet.py @@ -0,0 +1,136 @@ +from twisted.trial import unittest + +from twisted.internet import threads, defer +from lbrynet.core.Wallet import Wallet + +test_metadata = { +'license': 'NASA', +'fee': {'USD': {'amount': 0.01, 'address': 'baBYSK7CqGSn5KrEmNmmQwAhBSFgo6v47z'}}, +'ver': '0.0.3', +'description': 'test', +'language': 'en', +'author': 'test', +'title': 'test', +'sources': { + 'lbry_sd_hash': '8655f713819344980a9a0d67b198344e2c462c90f813e86f0c63789ab0868031f25c54d0bb31af6658e997e2041806eb'}, +'nsfw': False, +'content_type': 'video/mp4', +'thumbnail': 'test' +} + + +class MocLbryumWallet(Wallet): + def __init__(self): + pass + def get_name_claims(self): + return threads.deferToThread(lambda: []) + + def _save_name_metadata(self, name, claim_outpoint, sd_hash): + return defer.succeed(True) + + +class WalletTest(unittest.TestCase): + + def _check_exception(self, d): + def check(err): + with self.assertRaises(Exception): + err.raiseException() + d.addCallbacks(lambda _: self.assertTrue(False), lambda err: check(err)) + + def test_failed_send_name_claim(self): + def not_enough_funds_send_name_claim(self, name, val, amount): + claim_out = {'success':False, 'reason':'Not enough funds'} + return claim_out + MocLbryumWallet._send_name_claim = not_enough_funds_send_name_claim + wallet = MocLbryumWallet() + d = wallet.claim_name('test', 1, test_metadata) + self._check_exception(d) + return d + + def test_successful_send_name_claim(self): + test_claim_out = { + "claimid": "f43dc06256a69988bdbea09a58c80493ba15dcfa", + "fee": "0.00012", + "nout": 0, + "success": True, + "txid": "6f8180002ef4d21f5b09ca7d9648a54d213c666daf8639dc283e2fd47450269e" + } + + def check_out(claim_out): + self.assertTrue('success' not in claim_out) + self.assertEqual(claim_out['claimid'], test_claim_out['claimid']) + self.assertEqual(claim_out['fee'], test_claim_out['fee']) + self.assertEqual(claim_out['nout'], test_claim_out['nout']) + self.assertEqual(claim_out['txid'], test_claim_out['txid']) + + def success_send_name_claim(self, name, val, amount): + return test_claim_out + + MocLbryumWallet._send_name_claim = success_send_name_claim + wallet = MocLbryumWallet() + d = wallet.claim_name('test', 1, test_metadata) + d.addCallback(lambda claim_out: check_out(claim_out)) + return d + + def test_failed_support(self): + def failed_support_claim(self, name, claim_id, amount): + claim_out = {'success':False, 'reason':'Not enough funds'} + return threads.deferToThread(lambda: claim_out) + MocLbryumWallet._support_claim = failed_support_claim + wallet = MocLbryumWallet() + d = wallet.support_claim('test', "f43dc06256a69988bdbea09a58c80493ba15dcfa", 1) + self._check_exception(d) + return d + + def test_succesful_support(self): + test_support_out = { + "fee": "0.000129", + "nout": 0, + "success": True, + "txid": "11030a76521e5f552ca87ad70765d0cc52e6ea4c0dc0063335e6cf2a9a85085f" + } + + def check_out(claim_out): + self.assertTrue('success' not in claim_out) + self.assertEqual(claim_out['fee'], test_support_out['fee']) + self.assertEqual(claim_out['nout'], test_support_out['nout']) + self.assertEqual(claim_out['txid'], test_support_out['txid']) + + def success_support_claim(self, name, val, amount): + return threads.deferToThread(lambda: test_support_out) + MocLbryumWallet._support_claim = success_support_claim + wallet = MocLbryumWallet() + d = wallet.support_claim('test', "f43dc06256a69988bdbea09a58c80493ba15dcfa", 1) + d.addCallback(lambda claim_out: check_out(claim_out)) + return d + + def test_failed_abandon(self): + def failed_abandon_claim(self, claim_outpoint): + claim_out = {'success':False, 'reason':'Not enough funds'} + return threads.deferToThread(lambda: claim_out) + MocLbryumWallet._abandon_claim = failed_abandon_claim + wallet = MocLbryumWallet() + d = wallet.abandon_claim("11030a76521e5f552ca87ad70765d0cc52e6ea4c0dc0063335e6cf2a9a85085f", 1) + self._check_exception(d) + return d + + def test_successful_abandon(self): + test_abandon_out = { + "fee": "0.000096", + "success": True, + "txid": "0578c161ad8d36a7580c557d7444f967ea7f988e194c20d0e3c42c3cabf110dd" + } + + def check_out(claim_out): + self.assertTrue('success' not in claim_out) + self.assertEqual(claim_out['fee'], test_abandon_out['fee']) + self.assertEqual(claim_out['txid'], test_abandon_out['txid']) + + def success_abandon_claim(self, claim_outpoint): + return threads.deferToThread(lambda: test_abandon_out) + + MocLbryumWallet._abandon_claim = success_abandon_claim + wallet = MocLbryumWallet() + d = wallet.abandon_claim("0578c161ad8d36a7580c557d7444f967ea7f988e194c20d0e3c42c3cabf110dd", 1) + d.addCallback(lambda claim_out: check_out(claim_out)) + return d