| 
									
										
										
										
											2014-01-31 07:08:24 +01:00
										 |  |  | # -*- coding: utf-8 -*- | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-05 20:24:31 +01:00
										 |  |  | import json | 
					
						
							| 
									
										
										
										
											2020-08-06 17:42:46 +02:00
										 |  |  | from urllib.parse import ParseResult | 
					
						
							| 
									
										
										
										
											2015-10-03 17:26:07 +02:00
										 |  |  | from mock import Mock | 
					
						
							| 
									
										
										
										
											2022-01-17 08:06:31 +01:00
										 |  |  | from searx.results import Timing | 
					
						
							| 
									
										
										
										
											2021-09-02 16:01:34 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-05 13:08:54 +02:00
										 |  |  | import searx.search.processors | 
					
						
							| 
									
										
										
										
											2021-09-02 16:01:34 +02:00
										 |  |  | from searx.search import Search | 
					
						
							| 
									
										
										
										
											2022-05-07 15:11:05 +02:00
										 |  |  | from searx.preferences import Preferences | 
					
						
							| 
									
										
										
										
											2021-09-02 16:01:34 +02:00
										 |  |  | from tests import SearxTestCase | 
					
						
							| 
									
										
										
										
											2014-01-31 07:08:24 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class ViewsTestCase(SearxTestCase): | 
					
						
							|  |  |  |     def setUp(self): | 
					
						
							| 
									
										
										
										
											2021-04-08 18:44:29 +02:00
										 |  |  |         # skip init function (no external HTTP request) | 
					
						
							| 
									
										
										
										
											2021-05-05 13:08:54 +02:00
										 |  |  |         def dummy(*args, **kwargs): | 
					
						
							|  |  |  |             pass | 
					
						
							| 
									
										
										
										
											2021-12-27 09:26:22 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-05 13:08:54 +02:00
										 |  |  |         self.setattr4test(searx.search.processors, 'initialize_processor', dummy) | 
					
						
							| 
									
										
										
										
											2021-04-08 18:44:29 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         from searx import webapp  # pylint disable=import-outside-toplevel | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-01-31 07:08:24 +01:00
										 |  |  |         webapp.app.config['TESTING'] = True  # to get better error messages | 
					
						
							|  |  |  |         self.app = webapp.app.test_client() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-03 15:02:44 +02:00
										 |  |  |         # remove sha for the static file | 
					
						
							|  |  |  |         # so the tests don't have to care about the changing URLs | 
					
						
							|  |  |  |         for k in webapp.static_files: | 
					
						
							|  |  |  |             webapp.static_files[k] = None | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-01-31 07:08:24 +01:00
										 |  |  |         # set some defaults | 
					
						
							| 
									
										
										
										
											2019-08-03 13:23:36 +02:00
										 |  |  |         test_results = [ | 
					
						
							| 
									
										
										
										
											2014-01-31 07:08:24 +01:00
										 |  |  |             { | 
					
						
							|  |  |  |                 'content': 'first test content', | 
					
						
							|  |  |  |                 'title': 'First Test', | 
					
						
							|  |  |  |                 'url': 'http://first.test.xyz', | 
					
						
							|  |  |  |                 'engines': ['youtube', 'startpage'], | 
					
						
							|  |  |  |                 'engine': 'startpage', | 
					
						
							| 
									
										
										
										
											2021-12-27 09:26:22 +01:00
										 |  |  |                 'parsed_url': ParseResult( | 
					
						
							|  |  |  |                     scheme='http', netloc='first.test.xyz', path='/', params='', query='', fragment='' | 
					
						
							| 
									
										
										
										
											2022-02-21 22:18:48 +01:00
										 |  |  |                 ), | 
					
						
							|  |  |  |                 'template': 'default.html', | 
					
						
							| 
									
										
										
										
											2021-12-27 09:26:22 +01:00
										 |  |  |             }, | 
					
						
							|  |  |  |             { | 
					
						
							| 
									
										
										
										
											2014-01-31 07:08:24 +01:00
										 |  |  |                 'content': 'second test content', | 
					
						
							|  |  |  |                 'title': 'Second Test', | 
					
						
							|  |  |  |                 'url': 'http://second.test.xyz', | 
					
						
							|  |  |  |                 'engines': ['youtube', 'startpage'], | 
					
						
							|  |  |  |                 'engine': 'youtube', | 
					
						
							| 
									
										
										
										
											2021-12-27 09:26:22 +01:00
										 |  |  |                 'parsed_url': ParseResult( | 
					
						
							|  |  |  |                     scheme='http', netloc='second.test.xyz', path='/', params='', query='', fragment='' | 
					
						
							| 
									
										
										
										
											2022-02-21 22:18:48 +01:00
										 |  |  |                 ), | 
					
						
							|  |  |  |                 'template': 'default.html', | 
					
						
							| 
									
										
										
										
											2014-01-31 07:08:24 +01:00
										 |  |  |             }, | 
					
						
							|  |  |  |         ] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-17 08:06:31 +01:00
										 |  |  |         timings = [ | 
					
						
							|  |  |  |             Timing(engine='startpage', total=0.8, load=0.7), | 
					
						
							|  |  |  |             Timing(engine='youtube', total=0.9, load=0.6), | 
					
						
							|  |  |  |         ] | 
					
						
							| 
									
										
										
										
											2019-07-17 10:38:45 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-11 21:23:28 +01:00
										 |  |  |         def search_mock(search_self, *args): | 
					
						
							| 
									
										
										
										
											2021-12-27 09:26:22 +01:00
										 |  |  |             search_self.result_container = Mock( | 
					
						
							|  |  |  |                 get_ordered_results=lambda: test_results, | 
					
						
							|  |  |  |                 answers=dict(), | 
					
						
							|  |  |  |                 corrections=set(), | 
					
						
							|  |  |  |                 suggestions=set(), | 
					
						
							|  |  |  |                 infoboxes=[], | 
					
						
							|  |  |  |                 unresponsive_engines=set(), | 
					
						
							|  |  |  |                 results=test_results, | 
					
						
							|  |  |  |                 results_number=lambda: 3, | 
					
						
							|  |  |  |                 results_length=lambda: len(test_results), | 
					
						
							|  |  |  |                 get_timings=lambda: timings, | 
					
						
							|  |  |  |                 redirect_url=None, | 
					
						
							|  |  |  |                 engine_data={}, | 
					
						
							|  |  |  |             ) | 
					
						
							| 
									
										
										
										
											2015-03-11 21:23:28 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-03 13:23:36 +02:00
										 |  |  |         self.setattr4test(Search, 'search', search_mock) | 
					
						
							| 
									
										
										
										
											2015-03-11 21:23:28 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-07 15:11:05 +02:00
										 |  |  |         original_preferences_get_value = Preferences.get_value | 
					
						
							| 
									
										
										
										
											2016-04-08 16:38:05 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-07 15:11:05 +02:00
										 |  |  |         def preferences_get_value(preferences_self, user_setting_name: str): | 
					
						
							|  |  |  |             if user_setting_name == 'theme': | 
					
						
							|  |  |  |                 return 'simple' | 
					
						
							|  |  |  |             return original_preferences_get_value(preferences_self, user_setting_name) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         self.setattr4test(Preferences, 'get_value', preferences_get_value) | 
					
						
							| 
									
										
										
										
											2016-04-08 16:38:05 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-01-31 07:08:24 +01:00
										 |  |  |         self.maxDiff = None  # to see full diffs | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_index_empty(self): | 
					
						
							|  |  |  |         result = self.app.post('/') | 
					
						
							|  |  |  |         self.assertEqual(result.status_code, 200) | 
					
						
							| 
									
										
										
										
											2021-12-27 09:26:22 +01:00
										 |  |  |         self.assertIn( | 
					
						
							| 
									
										
										
										
											2021-12-29 16:31:05 +01:00
										 |  |  |             b'<div class="title"><h1>SearXNG</h1></div>', | 
					
						
							| 
									
										
										
										
											2021-12-27 09:26:22 +01:00
										 |  |  |             result.data, | 
					
						
							|  |  |  |         ) | 
					
						
							| 
									
										
										
										
											2014-01-31 07:08:24 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-06 12:11:52 +01:00
										 |  |  |     def test_index_html_post(self): | 
					
						
							| 
									
										
										
										
											2014-01-31 07:08:24 +01:00
										 |  |  |         result = self.app.post('/', data={'q': 'test'}) | 
					
						
							| 
									
										
										
										
											2019-07-30 06:25:05 +02:00
										 |  |  |         self.assertEqual(result.status_code, 308) | 
					
						
							| 
									
										
										
										
											2022-04-01 10:27:41 +02:00
										 |  |  |         self.assertEqual(result.location, '/search') | 
					
						
							| 
									
										
										
										
											2020-11-06 12:11:52 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_index_html_get(self): | 
					
						
							|  |  |  |         result = self.app.post('/?q=test') | 
					
						
							|  |  |  |         self.assertEqual(result.status_code, 308) | 
					
						
							| 
									
										
										
										
											2022-04-01 10:27:41 +02:00
										 |  |  |         self.assertEqual(result.location, '/search?q=test') | 
					
						
							| 
									
										
										
										
											2020-11-06 12:11:52 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_search_empty_html(self): | 
					
						
							|  |  |  |         result = self.app.post('/search', data={'q': ''}) | 
					
						
							|  |  |  |         self.assertEqual(result.status_code, 200) | 
					
						
							| 
									
										
										
										
											2021-12-29 16:31:05 +01:00
										 |  |  |         self.assertIn(b'<div class="title"><h1>SearXNG</h1></div>', result.data) | 
					
						
							| 
									
										
										
										
											2020-11-06 12:11:52 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_search_empty_json(self): | 
					
						
							|  |  |  |         result = self.app.post('/search', data={'q': '', 'format': 'json'}) | 
					
						
							|  |  |  |         self.assertEqual(result.status_code, 400) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_search_empty_csv(self): | 
					
						
							|  |  |  |         result = self.app.post('/search', data={'q': '', 'format': 'csv'}) | 
					
						
							|  |  |  |         self.assertEqual(result.status_code, 400) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_search_empty_rss(self): | 
					
						
							|  |  |  |         result = self.app.post('/search', data={'q': '', 'format': 'rss'}) | 
					
						
							|  |  |  |         self.assertEqual(result.status_code, 400) | 
					
						
							| 
									
										
										
										
											2019-07-30 06:25:05 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_search_html(self): | 
					
						
							|  |  |  |         result = self.app.post('/search', data={'q': 'test'}) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-01-31 07:08:24 +01:00
										 |  |  |         self.assertIn( | 
					
						
							| 
									
										
										
										
											2021-12-29 16:31:05 +01:00
										 |  |  |             b'<span class="url_o1"><span class="url_i1">http://second.test.xyz</span></span>', | 
					
						
							| 
									
										
										
										
											2021-12-27 09:26:22 +01:00
										 |  |  |             result.data, | 
					
						
							| 
									
										
										
										
											2014-01-31 07:08:24 +01:00
										 |  |  |         ) | 
					
						
							|  |  |  |         self.assertIn( | 
					
						
							| 
									
										
										
										
											2021-12-29 16:31:05 +01:00
										 |  |  |             b'<p class="content">\n    second <span class="highlight">test</span> ', | 
					
						
							|  |  |  |             result.data, | 
					
						
							| 
									
										
										
										
											2014-01-31 07:08:24 +01:00
										 |  |  |         ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-11 21:23:28 +01:00
										 |  |  |     def test_index_json(self): | 
					
						
							| 
									
										
										
										
											2014-01-31 07:08:24 +01:00
										 |  |  |         result = self.app.post('/', data={'q': 'test', 'format': 'json'}) | 
					
						
							| 
									
										
										
										
											2019-07-30 06:25:05 +02:00
										 |  |  |         self.assertEqual(result.status_code, 308) | 
					
						
							| 
									
										
										
										
											2014-01-31 07:08:24 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-30 06:25:05 +02:00
										 |  |  |     def test_search_json(self): | 
					
						
							|  |  |  |         result = self.app.post('/search', data={'q': 'test', 'format': 'json'}) | 
					
						
							| 
									
										
										
										
											2020-08-06 17:42:46 +02:00
										 |  |  |         result_dict = json.loads(result.data.decode()) | 
					
						
							| 
									
										
										
										
											2014-01-31 07:08:24 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |         self.assertEqual('test', result_dict['query']) | 
					
						
							| 
									
										
										
										
											2019-08-03 13:23:36 +02:00
										 |  |  |         self.assertEqual(len(result_dict['results']), 2) | 
					
						
							| 
									
										
										
										
											2016-11-30 18:43:03 +01:00
										 |  |  |         self.assertEqual(result_dict['results'][0]['content'], 'first test content') | 
					
						
							|  |  |  |         self.assertEqual(result_dict['results'][0]['url'], 'http://first.test.xyz') | 
					
						
							| 
									
										
										
										
											2014-01-31 07:08:24 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-11 21:23:28 +01:00
										 |  |  |     def test_index_csv(self): | 
					
						
							| 
									
										
										
										
											2014-01-31 07:08:24 +01:00
										 |  |  |         result = self.app.post('/', data={'q': 'test', 'format': 'csv'}) | 
					
						
							| 
									
										
										
										
											2019-07-30 06:25:05 +02:00
										 |  |  |         self.assertEqual(result.status_code, 308) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_search_csv(self): | 
					
						
							|  |  |  |         result = self.app.post('/search', data={'q': 'test', 'format': 'csv'}) | 
					
						
							| 
									
										
										
										
											2014-01-31 07:08:24 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |         self.assertEqual( | 
					
						
							| 
									
										
										
										
											2020-03-13 01:05:02 +01:00
										 |  |  |             b'title,url,content,host,engine,score,type\r\n' | 
					
						
							|  |  |  |             b'First Test,http://first.test.xyz,first test content,first.test.xyz,startpage,,result\r\n'  # noqa | 
					
						
							|  |  |  |             b'Second Test,http://second.test.xyz,second test content,second.test.xyz,youtube,,result\r\n',  # noqa | 
					
						
							| 
									
										
										
										
											2021-12-27 09:26:22 +01:00
										 |  |  |             result.data, | 
					
						
							| 
									
										
										
										
											2014-01-31 07:08:24 +01:00
										 |  |  |         ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-11 21:23:28 +01:00
										 |  |  |     def test_index_rss(self): | 
					
						
							| 
									
										
										
										
											2014-01-31 07:08:24 +01:00
										 |  |  |         result = self.app.post('/', data={'q': 'test', 'format': 'rss'}) | 
					
						
							| 
									
										
										
										
											2019-07-30 06:25:05 +02:00
										 |  |  |         self.assertEqual(result.status_code, 308) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-15 10:26:15 +01:00
										 |  |  |     def test_search_rss(self): | 
					
						
							| 
									
										
										
										
											2019-07-30 06:25:05 +02:00
										 |  |  |         result = self.app.post('/search', data={'q': 'test', 'format': 'rss'}) | 
					
						
							| 
									
										
										
										
											2014-01-31 07:08:24 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-27 09:26:22 +01:00
										 |  |  |         self.assertIn(b'<description>Search results for "test" - searx</description>', result.data) | 
					
						
							| 
									
										
										
										
											2014-01-31 07:08:24 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-27 09:26:22 +01:00
										 |  |  |         self.assertIn(b'<opensearch:totalResults>3</opensearch:totalResults>', result.data) | 
					
						
							| 
									
										
										
										
											2014-01-31 07:08:24 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-27 09:26:22 +01:00
										 |  |  |         self.assertIn(b'<title>First Test</title>', result.data) | 
					
						
							| 
									
										
										
										
											2014-01-31 07:08:24 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-27 09:26:22 +01:00
										 |  |  |         self.assertIn(b'<link>http://first.test.xyz</link>', result.data) | 
					
						
							| 
									
										
										
										
											2014-01-31 07:08:24 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-27 09:26:22 +01:00
										 |  |  |         self.assertIn(b'<description>first test content</description>', result.data) | 
					
						
							| 
									
										
										
										
											2014-01-31 07:08:24 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-12 10:18:08 +01:00
										 |  |  |     def test_redirect_about(self): | 
					
						
							|  |  |  |         result = self.app.get('/about') | 
					
						
							|  |  |  |         self.assertEqual(result.status_code, 302) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_info_page(self): | 
					
						
							|  |  |  |         result = self.app.get('/info/en/search-syntax') | 
					
						
							| 
									
										
										
										
											2014-01-31 07:08:24 +01:00
										 |  |  |         self.assertEqual(result.status_code, 200) | 
					
						
							| 
									
										
										
										
											2022-03-12 10:18:08 +01:00
										 |  |  |         self.assertIn(b'<h1>Search syntax</h1>', result.data) | 
					
						
							| 
									
										
										
										
											2014-01-31 07:08:24 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-02 17:00:37 +02:00
										 |  |  |     def test_health(self): | 
					
						
							|  |  |  |         result = self.app.get('/healthz') | 
					
						
							|  |  |  |         self.assertEqual(result.status_code, 200) | 
					
						
							|  |  |  |         self.assertIn(b'OK', result.data) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-01-31 07:08:24 +01:00
										 |  |  |     def test_preferences(self): | 
					
						
							|  |  |  |         result = self.app.get('/preferences') | 
					
						
							|  |  |  |         self.assertEqual(result.status_code, 200) | 
					
						
							| 
									
										
										
										
											2021-12-29 16:31:05 +01:00
										 |  |  |         self.assertIn(b'<form id="search_form" method="post" action="/preferences"', result.data) | 
					
						
							|  |  |  |         self.assertIn( | 
					
						
							|  |  |  |             b'<input type="checkbox" id="checkbox_general" name="category_general" checked="checked"/>', result.data | 
					
						
							|  |  |  |         ) | 
					
						
							| 
									
										
										
										
											2023-06-02 15:30:02 +02:00
										 |  |  |         self.assertIn(b'<legend id="pref_ui_locale">Interface language</legend>', result.data) | 
					
						
							| 
									
										
										
										
											2014-01-31 07:08:24 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-02-03 09:02:21 +01:00
										 |  |  |     def test_browser_locale(self): | 
					
						
							|  |  |  |         result = self.app.get('/preferences', headers={'Accept-Language': 'zh-tw;q=0.8'}) | 
					
						
							|  |  |  |         self.assertEqual(result.status_code, 200) | 
					
						
							|  |  |  |         self.assertIn( | 
					
						
							| 
									
										
										
										
											2021-10-06 10:26:40 +02:00
										 |  |  |             b'<option value="zh-Hant-TW" selected="selected">', | 
					
						
							| 
									
										
										
										
											2021-02-03 09:02:21 +01:00
										 |  |  |             result.data, | 
					
						
							| 
									
										
										
										
											2021-12-27 09:26:22 +01:00
										 |  |  |             'Interface locale ignored browser preference.', | 
					
						
							| 
									
										
										
										
											2021-02-03 09:02:21 +01:00
										 |  |  |         ) | 
					
						
							|  |  |  |         self.assertIn( | 
					
						
							| 
									
										
										
										
											2021-10-06 10:26:40 +02:00
										 |  |  |             b'<option value="zh-Hant-TW" selected="selected">', | 
					
						
							| 
									
										
										
										
											2021-02-03 09:02:21 +01:00
										 |  |  |             result.data, | 
					
						
							| 
									
										
										
										
											2021-12-27 09:26:22 +01:00
										 |  |  |             'Search language ignored browser preference.', | 
					
						
							| 
									
										
										
										
											2021-02-03 09:02:21 +01:00
										 |  |  |         ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-17 08:18:30 +02:00
										 |  |  |     def test_brower_empty_locale(self): | 
					
						
							|  |  |  |         result = self.app.get('/preferences', headers={'Accept-Language': ''}) | 
					
						
							|  |  |  |         self.assertEqual(result.status_code, 200) | 
					
						
							|  |  |  |         self.assertIn( | 
					
						
							| 
									
										
										
										
											2021-12-27 09:26:22 +01:00
										 |  |  |             b'<option value="en" selected="selected">', result.data, 'Interface locale ignored browser preference.' | 
					
						
							| 
									
										
										
										
											2021-08-17 08:18:30 +02:00
										 |  |  |         ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_locale_occitan(self): | 
					
						
							|  |  |  |         result = self.app.get('/preferences?locale=oc') | 
					
						
							|  |  |  |         self.assertEqual(result.status_code, 200) | 
					
						
							|  |  |  |         self.assertIn( | 
					
						
							| 
									
										
										
										
											2021-12-27 09:26:22 +01:00
										 |  |  |             b'<option value="oc" selected="selected">', result.data, 'Interface locale ignored browser preference.' | 
					
						
							| 
									
										
										
										
											2021-08-17 08:18:30 +02:00
										 |  |  |         ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-01-31 07:08:24 +01:00
										 |  |  |     def test_stats(self): | 
					
						
							|  |  |  |         result = self.app.get('/stats') | 
					
						
							|  |  |  |         self.assertEqual(result.status_code, 200) | 
					
						
							| 
									
										
										
										
											2020-12-01 10:18:57 +01:00
										 |  |  |         self.assertIn(b'<h1>Engine stats</h1>', result.data) | 
					
						
							| 
									
										
										
										
											2014-01-31 07:08:24 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_robots_txt(self): | 
					
						
							|  |  |  |         result = self.app.get('/robots.txt') | 
					
						
							|  |  |  |         self.assertEqual(result.status_code, 200) | 
					
						
							| 
									
										
										
										
											2016-11-30 18:43:03 +01:00
										 |  |  |         self.assertIn(b'Allow: /', result.data) | 
					
						
							| 
									
										
										
										
											2014-01-31 07:08:24 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_opensearch_xml(self): | 
					
						
							|  |  |  |         result = self.app.get('/opensearch.xml') | 
					
						
							|  |  |  |         self.assertEqual(result.status_code, 200) | 
					
						
							| 
									
										
										
										
											2022-08-11 18:37:12 +02:00
										 |  |  |         self.assertIn( | 
					
						
							|  |  |  |             b'<Description>SearXNG is a metasearch engine that respects your privacy.</Description>', result.data | 
					
						
							|  |  |  |         ) | 
					
						
							| 
									
										
										
										
											2014-01-31 07:08:24 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_favicon(self): | 
					
						
							|  |  |  |         result = self.app.get('/favicon.ico') | 
					
						
							|  |  |  |         self.assertEqual(result.status_code, 200) | 
					
						
							| 
									
										
										
										
											2019-05-18 12:58:05 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_config(self): | 
					
						
							|  |  |  |         result = self.app.get('/config') | 
					
						
							|  |  |  |         self.assertEqual(result.status_code, 200) | 
					
						
							|  |  |  |         json_result = result.get_json() | 
					
						
							|  |  |  |         self.assertTrue(json_result) |