def test_define(self): wb = wordbook.WordBook() self.mock_dictbase.return_value.define = get_mock_coro(['mock result']) ret = yield from wb.define('mock query') self.assertEqual(ret, ['mock result']) self.mock_dictbase.return_value.define.assert_called_once_with( '*', 'mock query')
def test_get_strategies(self): wb = wordbook.WordBook() self.mock_dictbase.return_value.show_strat = get_mock_coro(['st mock']) ret = yield from wb.get_strategies() self.mock_dictbase.return_value.show_strat.assert_called_once_with() self.assertIsInstance(ret[0], wordbook.WordBookStrategy) self.assertEqual(ret[0].strategy, 'st mock') self.assertEqual(ret[0].get_strategy(), ['st', 'mock'])
def test_get_databases(self): wb = wordbook.WordBook() self.mock_dictbase.return_value.show_db = get_mock_coro( ['db "mock db"']) ret = yield from wb.get_databases() self.mock_dictbase.return_value.show_db.assert_called_once_with() self.assertIsInstance(ret[0], wordbook.WordBookDatabase) self.assertEqual(ret[0].database, 'db "mock db"') self.assertEqual(ret[0].get_database(), ['db', '"mock db"'])
def test_connect_host(self): self.mock_dictbase.return_value.connect = get_mock_coro(None) self.mock_dictbase.return_value.client = get_mock_coro(None) wb = wordbook.WordBook('1.2.3.4', 5) yield from wb.connect() self.mock_dictbase.assert_called_once_with() self.mock_dictbase.return_value.connect.assert_called_once_with( '1.2.3.4', 5) self.mock_dictbase.return_value.client.assert_called_once_with( 'wordbook')
def test_mix_match(self): wb_base = wordbook.WordBook() wb_db = wordbook.WordBookDatabase('mock-db', wb_base) wb_st = wordbook.WordBookStrategy('mock-st', wb_db) self.mock_dictbase.return_value.match = get_mock_coro(['mock result']) ret = yield from wb_st.match('mock query') self.assertEqual(ret, ['mock result']) self.mock_dictbase.return_value.match.assert_called_once_with( 'mock-db', 'mock-st', 'mock query')
def test_connect_default(self): self.mock_dictbase.return_value.connect = get_mock_coro(None) self.mock_dictbase.return_value.client = get_mock_coro(None) wb = wordbook.WordBook() yield from wb.connect() self.mock_dictbase.assert_called_once_with() self.mock_dictbase.return_value.connect.assert_called_once_with( None, None) self.mock_dictbase.return_value.client.assert_called_once_with( 'wordbook') self.assertEqual(wb.get_database(), ['*', '<all>']) self.assertEqual(wb.get_strategy(), ['.', '<default>'])
async def main(): args = parse_args() if args.debug: logging.basicConfig(level=logging.DEBUG) wb = wordbook.WordBook(host=args.host, port=args.port, database=args.database, strategy=args.strategy) await wb.connect() if args.list_databases: dbs = await wb.get_databases() for db in dbs: print("{:30} {}".format(*db.get_database())) elif args.list_strategies: sgs = await wb.get_strategies() for sg in sgs: print("{:30} {}".format(*sg.get_strategy())) elif args.match is not None: matches = await wb.match(args.match) if matches: for match in matches: print("{:30} {}".format(*match.split(' ', 1))) else: print('No match found') elif args.define is not None: defines = await wb.define(args.define) if defines: for define in defines: print_line(define) print() else: print('No definition found')