test_engine_mariadb_server.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. # SPDX-License-Identifier: AGPL-3.0-or-later
  2. # pylint: disable=missing-module-docstring
  3. from unittest.mock import MagicMock, Mock
  4. from searx.engines import load_engines, mariadb_server
  5. from tests import SearxTestCase
  6. class MariadbServerTests(SearxTestCase): # pylint: disable=missing-class-docstring
  7. def setUp(self):
  8. load_engines(
  9. [
  10. {
  11. 'name': 'mariadb server',
  12. 'engine': 'mariadb_server',
  13. 'shortcut': 'mdb',
  14. 'timeout': 9.0,
  15. 'disabled': True,
  16. }
  17. ]
  18. )
  19. def tearDown(self):
  20. load_engines([])
  21. def test_init_no_query_str_raises(self):
  22. self.assertRaises(ValueError, lambda: mariadb_server.init({}))
  23. def test_init_non_select_raises(self):
  24. self.assertRaises(ValueError, lambda: mariadb_server.init({'query_str': 'foobar'}))
  25. def test_search_returns_results(self):
  26. test_string = 'FOOBAR'
  27. cursor_mock = MagicMock()
  28. with cursor_mock as setup: # pylint: disable=not-context-manager
  29. setup.__iter__ = Mock(return_value=iter([{test_string, 1}]))
  30. setup.description = [[test_string]]
  31. conn_mock = Mock()
  32. conn_mock.cursor.return_value = cursor_mock
  33. mariadb_server._connection = conn_mock # pylint: disable=protected-access
  34. results = mariadb_server.search(test_string, {'pageno': 1})
  35. self.assertEqual(1, len(results))
  36. self.assertIn(test_string, results[0])
  37. self.assertEqual(mariadb_server.result_template, results[0]['template'])