import unittest import unittest.mock as mock import json import xcat.db as db import xcat.tests.utils as utils class TestDB(unittest.TestCase): @mock.patch('xcat.db.plyvel') def setUp(self, mock_plyvel): self.db = db.DB() def test_init(self): self.assertIsInstance(self.db.db, mock.Mock) self.assertIsInstance(self.db.preimageDB, mock.Mock) def test_create_with_dict(self): test_id = 'test trade id' self.db.create(utils.test_trade_dict, test_id) self.db.db.put.assert_called_with( str.encode(test_id), str.encode(str(utils.test_trade))) def test_create_with_trade(self): test_id = 'test trade id' self.db.create(utils.test_trade, test_id) self.db.db.put.assert_called_with( str.encode(test_id), str.encode(json.dumps(utils.test_trade_dict, sort_keys=True, indent=4))) def test_create_with_error(self): with self.assertRaises(ValueError) as context: self.db.create('this is not valid input', 'trade_id') self.assertTrue( 'Expected dictionary or Trade object' in str(context.exception)) def test_createByFundtx_with_dict(self): self.db.createByFundtx(utils.test_trade_dict) self.db.db.put.assert_called_with( str.encode('5c5e91a89a08b2d6698f50c9fd9bb2fa22da6c74e226c3dd63d' '59511566a2fdb'), str.encode(str(utils.test_trade))) def test_createByFundtx_with_trade(self): self.db.createByFundtx(utils.test_trade) self.db.db.put.assert_called_with( str.encode('5c5e91a89a08b2d6698f50c9fd9bb2fa22da6c74e226c3dd63d' '59511566a2fdb'), str.encode(json.dumps(utils.test_trade_dict, sort_keys=True, indent=4))) def test_createByFundtx_with_error(self): with self.assertRaises(ValueError) as context: self.db.createByFundtx('this is not valid input') self.assertTrue( 'Expected dictionary or Trade object' in str(context.exception)) def test_get(self): self.db.db.get.return_value = str.encode(utils.test_trade.toJSON()) trade = self.db.get('test') self.assertEqual(trade, utils.test_trade) def test_save_secret(self): self.db.save_secret('my life', 'I like black liquorice') self.db.preimageDB.put.assert_called_with( str.encode('my life'), str.encode('I like black liquorice')) def test_get_secret(self): self.db.preimageDB.get.return_value = str.encode( 'I like black liquorice') secret = self.db.get_secret('my life') self.assertEqual(secret, 'I like black liquorice') def test_dump(self): pass def test_print_entries(self): pass