forked from zaclys/searxng
		
	Add bing in the test units
This commit is contained in:
		
							parent
							
								
									44c9216c49
								
							
						
					
					
						commit
						525af2a031
					
				
					 4 changed files with 97 additions and 4 deletions
				
			
		
							
								
								
									
										1
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							|  | @ -23,3 +23,4 @@ local/ | ||||||
| parts/ | parts/ | ||||||
| searx.egg-info/ | searx.egg-info/ | ||||||
| var/ | var/ | ||||||
|  | node_modules/ | ||||||
|  |  | ||||||
|  | @ -14,6 +14,7 @@ | ||||||
| from urllib import urlencode | from urllib import urlencode | ||||||
| from cgi import escape | from cgi import escape | ||||||
| from lxml import html | from lxml import html | ||||||
|  | from searx.engines.xpath import extract_text | ||||||
| 
 | 
 | ||||||
| # engine dependent config | # engine dependent config | ||||||
| categories = ['general'] | categories = ['general'] | ||||||
|  | @ -55,8 +56,8 @@ def response(resp): | ||||||
|     for result in dom.xpath('//div[@class="sa_cc"]'): |     for result in dom.xpath('//div[@class="sa_cc"]'): | ||||||
|         link = result.xpath('.//h3/a')[0] |         link = result.xpath('.//h3/a')[0] | ||||||
|         url = link.attrib.get('href') |         url = link.attrib.get('href') | ||||||
|         title = ' '.join(link.xpath('.//text()')) |         title = extract_text(link) | ||||||
|         content = escape(' '.join(result.xpath('.//p//text()'))) |         content = escape(extract_text(result.xpath('.//p'))) | ||||||
| 
 | 
 | ||||||
|         # append result |         # append result | ||||||
|         results.append({'url': url, |         results.append({'url': url, | ||||||
|  | @ -71,8 +72,8 @@ def response(resp): | ||||||
|     for result in dom.xpath('//li[@class="b_algo"]'): |     for result in dom.xpath('//li[@class="b_algo"]'): | ||||||
|         link = result.xpath('.//h2/a')[0] |         link = result.xpath('.//h2/a')[0] | ||||||
|         url = link.attrib.get('href') |         url = link.attrib.get('href') | ||||||
|         title = ' '.join(link.xpath('.//text()')) |         title = extract_text(link) | ||||||
|         content = escape(' '.join(result.xpath('.//p//text()'))) |         content = escape(extract_text(result.xpath('.//p'))) | ||||||
| 
 | 
 | ||||||
|         # append result |         # append result | ||||||
|         results.append({'url': url, |         results.append({'url': url, | ||||||
|  |  | ||||||
							
								
								
									
										90
									
								
								searx/tests/engines/test_bing.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								searx/tests/engines/test_bing.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,90 @@ | ||||||
|  | from collections import defaultdict | ||||||
|  | import mock | ||||||
|  | from searx.engines import bing | ||||||
|  | from searx.testing import SearxTestCase | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class TestBingEngine(SearxTestCase): | ||||||
|  | 
 | ||||||
|  |     def test_request(self): | ||||||
|  |         query = 'test_query' | ||||||
|  |         dicto = defaultdict(dict) | ||||||
|  |         dicto['pageno'] = 0 | ||||||
|  |         dicto['language'] = 'fr_FR' | ||||||
|  |         params = bing.request(query, dicto) | ||||||
|  |         self.assertTrue('url' in params) | ||||||
|  |         self.assertTrue(query in params['url']) | ||||||
|  |         self.assertTrue('bing.com' in params['url']) | ||||||
|  |         self.assertTrue('SRCHHPGUSR' in params['cookies']) | ||||||
|  |         self.assertTrue('fr' in params['cookies']['SRCHHPGUSR']) | ||||||
|  | 
 | ||||||
|  |         dicto['language'] = 'all' | ||||||
|  |         params = bing.request(query, dicto) | ||||||
|  |         self.assertTrue('SRCHHPGUSR' in params['cookies']) | ||||||
|  |         self.assertTrue('en' in params['cookies']['SRCHHPGUSR']) | ||||||
|  | 
 | ||||||
|  |     def test_response(self): | ||||||
|  |         self.assertRaises(AttributeError, bing.response, None) | ||||||
|  |         self.assertRaises(AttributeError, bing.response, []) | ||||||
|  |         self.assertRaises(AttributeError, bing.response, '') | ||||||
|  |         self.assertRaises(AttributeError, bing.response, '[]') | ||||||
|  | 
 | ||||||
|  |         response = mock.Mock(content='<html></html>') | ||||||
|  |         self.assertEqual(bing.response(response), []) | ||||||
|  | 
 | ||||||
|  |         response = mock.Mock(content='<html></html>') | ||||||
|  |         self.assertEqual(bing.response(response), []) | ||||||
|  | 
 | ||||||
|  |         html = """ | ||||||
|  |         <div class="sa_cc" u="0|5109|4755453613245655|UAGjXgIrPH5yh-o5oNHRx_3Zta87f_QO"> | ||||||
|  |             <div Class="sa_mc"> | ||||||
|  |                 <div class="sb_tlst"> | ||||||
|  |                     <h3> | ||||||
|  |                         <a href="http://this.should.be.the.link/" h="ID=SERP,5124.1"> | ||||||
|  |                         <strong>This</strong> should be the title</a> | ||||||
|  |                     </h3> | ||||||
|  |                 </div> | ||||||
|  |                 <div class="sb_meta"><cite><strong>this</strong>.meta.com</cite> | ||||||
|  |                     <span class="c_tlbxTrg"> | ||||||
|  |                         <span class="c_tlbxH" H="BASE:CACHEDPAGEDEFAULT" K="SERP,5125.1"> | ||||||
|  |                         </span> | ||||||
|  |                     </span> | ||||||
|  |                 </div> | ||||||
|  |                 <p><strong>This</strong> should be the content.</p> | ||||||
|  |             </div> | ||||||
|  |         </div> | ||||||
|  |         """ | ||||||
|  |         response = mock.Mock(content=html) | ||||||
|  |         results = bing.response(response) | ||||||
|  |         self.assertEqual(type(results), list) | ||||||
|  |         self.assertEqual(len(results), 1) | ||||||
|  |         self.assertEqual(results[0]['title'], 'This should be the title') | ||||||
|  |         self.assertEqual(results[0]['url'], 'http://this.should.be.the.link/') | ||||||
|  |         self.assertEqual(results[0]['content'], 'This should be the content.') | ||||||
|  | 
 | ||||||
|  |         html = """ | ||||||
|  |         <li class="b_algo" u="0|5109|4755453613245655|UAGjXgIrPH5yh-o5oNHRx_3Zta87f_QO"> | ||||||
|  |             <div Class="sa_mc"> | ||||||
|  |                 <div class="sb_tlst"> | ||||||
|  |                     <h2> | ||||||
|  |                         <a href="http://this.should.be.the.link/" h="ID=SERP,5124.1"> | ||||||
|  |                         <strong>This</strong> should be the title</a> | ||||||
|  |                     </h2> | ||||||
|  |                 </div> | ||||||
|  |                 <div class="sb_meta"><cite><strong>this</strong>.meta.com</cite> | ||||||
|  |                     <span class="c_tlbxTrg"> | ||||||
|  |                         <span class="c_tlbxH" H="BASE:CACHEDPAGEDEFAULT" K="SERP,5125.1"> | ||||||
|  |                         </span> | ||||||
|  |                     </span> | ||||||
|  |                 </div> | ||||||
|  |                 <p><strong>This</strong> should be the content.</p> | ||||||
|  |             </div> | ||||||
|  |         </li> | ||||||
|  |         """ | ||||||
|  |         response = mock.Mock(content=html) | ||||||
|  |         results = bing.response(response) | ||||||
|  |         self.assertEqual(type(results), list) | ||||||
|  |         self.assertEqual(len(results), 1) | ||||||
|  |         self.assertEqual(results[0]['title'], 'This should be the title') | ||||||
|  |         self.assertEqual(results[0]['url'], 'http://this.should.be.the.link/') | ||||||
|  |         self.assertEqual(results[0]['content'], 'This should be the content.') | ||||||
|  | @ -1,2 +1,3 @@ | ||||||
|  | from searx.tests.engines.test_bing import *  # noqa | ||||||
| from searx.tests.engines.test_dummy import *  # noqa | from searx.tests.engines.test_dummy import *  # noqa | ||||||
| from searx.tests.engines.test_github import *  # noqa | from searx.tests.engines.test_github import *  # noqa | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Cqoicebordel
						Cqoicebordel