2016-12-11 01:03:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# -*- coding: utf-8 -*-  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-01-31 16:38:03 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								from  collections  import  defaultdict  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import  mock  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								from  searx . engines  import  google_news  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								from  searx . testing  import  SearxTestCase  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  TestGoogleNewsEngine ( SearxTestCase ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  test_request ( self ) : 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-01 05:30:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        google_news . supported_languages  =  [ ' en-US ' ,  ' fr-FR ' ] 
							 
						 
					
						
							
								
									
										
										
										
											2018-11-26 06:32:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        google_news . language_aliases  =  { } 
							 
						 
					
						
							
								
									
										
										
										
											2015-01-31 16:38:03 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        query  =  ' test_query ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        dicto  =  defaultdict ( dict ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        dicto [ ' pageno ' ]  =  1 
							 
						 
					
						
							
								
									
										
										
										
											2017-07-20 22:47:20 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        dicto [ ' language ' ]  =  ' fr-FR ' 
							 
						 
					
						
							
								
									
										
										
										
											2016-12-11 01:03:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        dicto [ ' time_range ' ]  =  ' w ' 
							 
						 
					
						
							
								
									
										
										
										
											2015-01-31 16:38:03 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        params  =  google_news . request ( query ,  dicto ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        self . assertIn ( ' url ' ,  params ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        self . assertIn ( query ,  params [ ' url ' ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        self . assertIn ( ' fr ' ,  params [ ' url ' ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-01-06 15:27:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        dicto [ ' language ' ]  =  ' all ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        params  =  google_news . request ( query ,  dicto ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        self . assertIn ( ' url ' ,  params ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        self . assertNotIn ( ' fr ' ,  params [ ' url ' ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-01-31 16:38:03 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    def  test_response ( self ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        self . assertRaises ( AttributeError ,  google_news . response ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        self . assertRaises ( AttributeError ,  google_news . response ,  [ ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        self . assertRaises ( AttributeError ,  google_news . response ,  ' ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        self . assertRaises ( AttributeError ,  google_news . response ,  ' [] ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        response  =  mock . Mock ( text = ' {} ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        self . assertEqual ( google_news . response ( response ) ,  [ ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        response  =  mock . Mock ( text = ' { " data " : []} ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        self . assertEqual ( google_news . response ( response ) ,  [ ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-12-11 01:03:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        html  =  u """ 
 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-31 17:48:07 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< h2  class = " hd " > Search  Results < / h2 >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< div  data - async - context = " query:searx "  id = " ires " >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    < div  eid = " oC2oWcGXCafR6ASkwoCwDA "  id = " rso " > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < div  class = " _NId " > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < ! - - m - - > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < div  class = " g _cy " > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                < div  class = " ts _JGs _JHs _tJs _KGs _jHs " > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    < div  class = " _hJs " > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        < h3  class = " r _gJs " > 
							 
						 
					
						
							
								
									
										
										
										
											2018-04-09 06:31:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            < a  class = " l lLrAF "  href = " https://example.com/ "  onmousedown = " return rwt(this, ' ' , ' ' , ' ' , ' 11 ' , ' AFQjCNEyehpzD5cJK1KUfXBx9RmsbqqG9g ' , ' ' , ' 0ahUKEwjB58OR54HWAhWnKJoKHSQhAMY4ChCpAggiKAAwAA ' , ' ' , ' ' ,event) " > Example  title < / a > 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-31 17:48:07 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        < / h3 > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        < div  class = " slp " > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            < span  class = " _OHs _PHs " > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                Mac  & amp ;  i < / span > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            < span  class = " _QGs " > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                - < / span > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            < span  class = " f nsa _QHs " > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                Mar  21 ,  2016 < / span > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        < div  class = " st " > Example  description < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < div  class = " g _cy " > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                < div  class = " ts _JGs _JHs _oGs _KGs _jHs " > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    < a  class = " top _xGs _SHs "  href = " https://example2.com/ "  onmousedown = " return rwt(this, ' ' , ' ' , ' ' , ' 12 ' , ' AFQjCNHObfH7sYmLWI1SC-YhWXKZFRzRjw ' , ' ' , ' 0ahUKEwjB58OR54HWAhWnKJoKHSQhAMY4ChC8iAEIJDAB ' , ' ' , ' ' ,event) " > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        < img  class = " th _RGs "  src = " https://example2.com/image.jpg "  alt = " Story image for searx from Golem.de "  onload = " typeof google=== ' object ' &&google.aft&&google.aft(this) " > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    < div  class = " _hJs " > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        < h3  class = " r _gJs " > 
							 
						 
					
						
							
								
									
										
										
										
											2018-04-09 06:31:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            < a  class = " l lLrAF "  href = " https://example2.com/ "  onmousedown = " return rwt(this, ' ' , ' ' , ' ' , ' 12 ' , ' AFQjCNHObfH7sYmLWI1SC-YhWXKZFRzRjw ' , ' ' , ' 0ahUKEwjB58OR54HWAhWnKJoKHSQhAMY4ChCpAgglKAAwAQ ' , ' ' , ' ' ,event) " > Example  title  2 < / a > 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-31 17:48:07 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        < / h3 > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        < div  class = " slp " > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            < span  class = " _OHs _PHs " > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                Golem . de < / span > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            < span  class = " _QGs " > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                - < / span > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            < span  class = " f nsa _QHs " > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                Oct  4 ,  2016 < / span > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        < div  class = " st " > Example  description  2 < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    < / div > 
							 
						 
					
						
							
								
									
										
										
										
											2016-12-11 01:03:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< / div >  
						 
					
						
							
								
									
										
										
										
											2017-08-31 17:48:07 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-12-11 01:03:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        """   # noqa 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        response  =  mock . Mock ( text = html ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-01-31 16:38:03 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        results  =  google_news . response ( response ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        self . assertEqual ( type ( results ) ,  list ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-31 17:48:07 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        self . assertEqual ( len ( results ) ,  2 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        self . assertEqual ( results [ 0 ] [ ' title ' ] ,  u ' Example title ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        self . assertEqual ( results [ 0 ] [ ' url ' ] ,  ' https://example.com/ ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        self . assertEqual ( results [ 0 ] [ ' content ' ] ,  ' Example description ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        self . assertEqual ( results [ 1 ] [ ' title ' ] ,  u ' Example title 2 ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        self . assertEqual ( results [ 1 ] [ ' url ' ] ,  ' https://example2.com/ ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        self . assertEqual ( results [ 1 ] [ ' content ' ] ,  ' Example description 2 ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        self . assertEqual ( results [ 1 ] [ ' img_src ' ] ,  ' https://example2.com/image.jpg ' )