| 
									
										
										
										
											2020-09-22 16:55:59 +02:00
										 |  |  | # -*- coding: utf-8 -*- | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from searx.preferences import Preferences | 
					
						
							|  |  |  | from searx.engines import engines | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import searx.search | 
					
						
							| 
									
										
										
										
											2020-11-02 11:19:53 +01:00
										 |  |  | from searx.search import EngineRef | 
					
						
							| 
									
										
										
										
											2020-09-22 16:55:59 +02:00
										 |  |  | from searx.webadapter import validate_engineref_list | 
					
						
							| 
									
										
										
										
											2021-09-02 16:01:34 +02:00
										 |  |  | from tests import SearxTestCase | 
					
						
							| 
									
										
										
										
											2020-09-22 16:55:59 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | PRIVATE_ENGINE_NAME = 'general private offline' | 
					
						
							|  |  |  | TEST_ENGINES = [ | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         'name': PRIVATE_ENGINE_NAME, | 
					
						
							|  |  |  |         'engine': 'dummy-offline', | 
					
						
							|  |  |  |         'categories': 'general', | 
					
						
							|  |  |  |         'shortcut': 'do', | 
					
						
							|  |  |  |         'timeout': 3.0, | 
					
						
							| 
									
										
										
										
											2020-12-16 13:41:32 +01:00
										 |  |  |         'engine_type': 'offline', | 
					
						
							| 
									
										
										
										
											2020-09-22 16:55:59 +02:00
										 |  |  |         'tokens': ['my-token'], | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  | ] | 
					
						
							|  |  |  | SEARCHQUERY = [EngineRef(PRIVATE_ENGINE_NAME, 'general')] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class ValidateQueryCase(SearxTestCase): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @classmethod | 
					
						
							|  |  |  |     def setUpClass(cls): | 
					
						
							| 
									
										
										
										
											2020-12-16 13:41:32 +01:00
										 |  |  |         searx.search.initialize(TEST_ENGINES) | 
					
						
							| 
									
										
										
										
											2020-09-22 16:55:59 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_query_private_engine_without_token(self): | 
					
						
							|  |  |  |         preferences = Preferences(['oscar'], ['general'], engines, []) | 
					
						
							|  |  |  |         valid, unknown, invalid_token = validate_engineref_list(SEARCHQUERY, preferences) | 
					
						
							|  |  |  |         self.assertEqual(len(valid), 0) | 
					
						
							|  |  |  |         self.assertEqual(len(unknown), 0) | 
					
						
							|  |  |  |         self.assertEqual(len(invalid_token), 1) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_query_private_engine_with_incorrect_token(self): | 
					
						
							|  |  |  |         preferences_with_tokens = Preferences(['oscar'], ['general'], engines, []) | 
					
						
							|  |  |  |         preferences_with_tokens.parse_dict({'tokens': 'bad-token'}) | 
					
						
							|  |  |  |         valid, unknown, invalid_token = validate_engineref_list(SEARCHQUERY, preferences_with_tokens) | 
					
						
							|  |  |  |         self.assertEqual(len(valid), 0) | 
					
						
							|  |  |  |         self.assertEqual(len(unknown), 0) | 
					
						
							|  |  |  |         self.assertEqual(len(invalid_token), 1) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_query_private_engine_with_correct_token(self): | 
					
						
							|  |  |  |         preferences_with_tokens = Preferences(['oscar'], ['general'], engines, []) | 
					
						
							|  |  |  |         preferences_with_tokens.parse_dict({'tokens': 'my-token'}) | 
					
						
							|  |  |  |         valid, unknown, invalid_token = validate_engineref_list(SEARCHQUERY, preferences_with_tokens) | 
					
						
							|  |  |  |         self.assertEqual(len(valid), 1) | 
					
						
							|  |  |  |         self.assertEqual(len(unknown), 0) | 
					
						
							|  |  |  |         self.assertEqual(len(invalid_token), 0) |