45 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			45 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								# SPDX-License-Identifier: AGPL-3.0-or-later
							 | 
						||
| 
								 | 
							
								# pylint: disable=missing-module-docstring
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								from unittest.mock import MagicMock, Mock
							 | 
						||
| 
								 | 
							
								from searx.engines import load_engines, mariadb_server
							 | 
						||
| 
								 | 
							
								from tests import SearxTestCase
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class MariadbServerTests(SearxTestCase):  # pylint: disable=missing-class-docstring
							 | 
						||
| 
								 | 
							
								    def setUp(self):
							 | 
						||
| 
								 | 
							
								        load_engines(
							 | 
						||
| 
								 | 
							
								            [
							 | 
						||
| 
								 | 
							
								                {
							 | 
						||
| 
								 | 
							
								                    'name': 'mariadb server',
							 | 
						||
| 
								 | 
							
								                    'engine': 'mariadb_server',
							 | 
						||
| 
								 | 
							
								                    'shortcut': 'mdb',
							 | 
						||
| 
								 | 
							
								                    'timeout': 9.0,
							 | 
						||
| 
								 | 
							
								                    'disabled': True,
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								            ]
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def tearDown(self):
							 | 
						||
| 
								 | 
							
								        load_engines([])
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def test_init_no_query_str_raises(self):
							 | 
						||
| 
								 | 
							
								        self.assertRaises(ValueError, lambda: mariadb_server.init({}))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def test_init_non_select_raises(self):
							 | 
						||
| 
								 | 
							
								        self.assertRaises(ValueError, lambda: mariadb_server.init({'query_str': 'foobar'}))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def test_search_returns_results(self):
							 | 
						||
| 
								 | 
							
								        test_string = 'FOOBAR'
							 | 
						||
| 
								 | 
							
								        cursor_mock = MagicMock()
							 | 
						||
| 
								 | 
							
								        with cursor_mock as setup:  # pylint: disable=not-context-manager
							 | 
						||
| 
								 | 
							
								            setup.__iter__ = Mock(return_value=iter([{test_string, 1}]))
							 | 
						||
| 
								 | 
							
								            setup.description = [[test_string]]
							 | 
						||
| 
								 | 
							
								        conn_mock = Mock()
							 | 
						||
| 
								 | 
							
								        conn_mock.cursor.return_value = cursor_mock
							 | 
						||
| 
								 | 
							
								        mariadb_server._connection = conn_mock  # pylint: disable=protected-access
							 | 
						||
| 
								 | 
							
								        results = mariadb_server.search(test_string, {'pageno': 1})
							 | 
						||
| 
								 | 
							
								        self.assertEqual(1, len(results))
							 | 
						||
| 
								 | 
							
								        self.assertIn(test_string, results[0])
							 | 
						||
| 
								 | 
							
								        self.assertEqual(mariadb_server.result_template, results[0]['template'])
							 |