| 
				
			 | 
			
			
				@@ -0,0 +1,64 @@ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				1
			 | 
			
			
				+from collections import defaultdict 
			 | 
		
	
		
			
			| 
				
			 | 
			
				2
			 | 
			
			
				+import mock 
			 | 
		
	
		
			
			| 
				
			 | 
			
				3
			 | 
			
			
				+from searx.engines import ina 
			 | 
		
	
		
			
			| 
				
			 | 
			
				4
			 | 
			
			
				+from searx.testing import SearxTestCase 
			 | 
		
	
		
			
			| 
				
			 | 
			
				5
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				6
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				7
			 | 
			
			
				+class TestInaEngine(SearxTestCase): 
			 | 
		
	
		
			
			| 
				
			 | 
			
				8
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				9
			 | 
			
			
				+    def test_request(self): 
			 | 
		
	
		
			
			| 
				
			 | 
			
				10
			 | 
			
			
				+        query = 'test_query' 
			 | 
		
	
		
			
			| 
				
			 | 
			
				11
			 | 
			
			
				+        dicto = defaultdict(dict) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				12
			 | 
			
			
				+        dicto['pageno'] = 0 
			 | 
		
	
		
			
			| 
				
			 | 
			
				13
			 | 
			
			
				+        params = ina.request(query, dicto) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				14
			 | 
			
			
				+        self.assertTrue('url' in params) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				15
			 | 
			
			
				+        self.assertTrue(query in params['url']) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				16
			 | 
			
			
				+        self.assertTrue('ina.fr' in params['url']) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				17
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				18
			 | 
			
			
				+    def test_response(self): 
			 | 
		
	
		
			
			| 
				
			 | 
			
				19
			 | 
			
			
				+        self.assertRaises(AttributeError, ina.response, None) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				20
			 | 
			
			
				+        self.assertRaises(AttributeError, ina.response, []) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				21
			 | 
			
			
				+        self.assertRaises(AttributeError, ina.response, '') 
			 | 
		
	
		
			
			| 
				
			 | 
			
				22
			 | 
			
			
				+        self.assertRaises(AttributeError, ina.response, '[]') 
			 | 
		
	
		
			
			| 
				
			 | 
			
				23
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				24
			 | 
			
			
				+        response = mock.Mock(text='{}') 
			 | 
		
	
		
			
			| 
				
			 | 
			
				25
			 | 
			
			
				+        self.assertEqual(ina.response(response), []) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				26
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				27
			 | 
			
			
				+        response = mock.Mock(text='{"data": []}') 
			 | 
		
	
		
			
			| 
				
			 | 
			
				28
			 | 
			
			
				+        self.assertEqual(ina.response(response), []) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				29
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				30
			 | 
			
			
				+        json = """ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				31
			 | 
			
			
				+        {"content":"\\t<div class=\\"container\\">\\n\\t\\n\ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				32
			 | 
			
			
				+        <!-- DEBUT CONTENU PRINCIPAL -->\\n<div class=\\"row\\">\\n\ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				33
			 | 
			
			
				+        <div class=\\"search-results--list\\"><div class=\\"media\\">\\n\ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				34
			 | 
			
			
				+        \\t\\t\\t\\t<a class=\\"media-left  media-video  premium    xiti_click_action\\" \ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				35
			 | 
			
			
				+        data-xiti-params=\\"recherche_v4::resultats_conference_de_presse_du_general_de_gaulle::N\\" \ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				36
			 | 
			
			
				+        href=\\"\/video\/CAF89035682\/conference-de-presse-du-general-de-gaulle-video.html\\">\\n\ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				37
			 | 
			
			
				+        <img src=\\"https:\/\/www.ina.fr\/images_v2\/140x105\/CAF89035682.jpeg\\" \ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				38
			 | 
			
			
				+        alt=\\"Conf\\u00e9rence de presse du G\\u00e9n\\u00e9ral de Gaulle \\">\\n\ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				39
			 | 
			
			
				+        \\t\\t\\t\\t\\t<\/a>\\n\ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				40
			 | 
			
			
				+        \\t\\t\\t\\t\\t<div class=\\"media-body\\">\\n\\t\\t\\t\\t\\t\\t<h3 class=\\"h3--title media-heading\\">\\n\ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				41
			 | 
			
			
				+        \\t\\t\\t\\t\\t\\t\\t<a class=\\"xiti_click_action\\" \ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				42
			 | 
			
			
				+        data-xiti-params=\\"recherche_v4::resultats_conference_de_presse_du_general_de_gaulle::N\\" \ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				43
			 | 
			
			
				+        href=\\"\/video\/CAF89035682\/conference-de-presse-du-general-de-gaulle-video.html\\">\ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				44
			 | 
			
			
				+        Conf\\u00e9rence de presse du G\\u00e9n\\u00e9ral de Gaulle <\/a>\\n\ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				45
			 | 
			
			
				+        <\/h3>\\n\ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				46
			 | 
			
			
				+        <div class=\\"media-body__info\\">\\n<span class=\\"broadcast\\">27\/11\/1967<\/span>\\n\ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				47
			 | 
			
			
				+        <span class=\\"views\\">29321 vues<\/span>\\n\ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				48
			 | 
			
			
				+        <span class=\\"duration\\">01h 33m 07s<\/span>\\n\ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				49
			 | 
			
			
				+        <\/div>\\n\ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				50
			 | 
			
			
				+        <p class=\\"media-body__summary\\">VERSION INTEGRALE DE LA CONFERENCE DE PRESSE DU GENERAL DE GAULLE . \ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				51
			 | 
			
			
				+              - PA le Pr\\u00e9sident DE GAULLE : il ouvre les bras et s'assied. DP journalis...<\/p>\\n\ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				52
			 | 
			
			
				+        <\/div>\\n<\/div><!-- \/.media -->\\n" 
			 | 
		
	
		
			
			| 
				
			 | 
			
				53
			 | 
			
			
				+        } 
			 | 
		
	
		
			
			| 
				
			 | 
			
				54
			 | 
			
			
				+        """ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				55
			 | 
			
			
				+        response = mock.Mock(text=json) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				56
			 | 
			
			
				+        results = ina.response(response) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				57
			 | 
			
			
				+        self.assertEqual(type(results), list) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				58
			 | 
			
			
				+        self.assertEqual(len(results), 1) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				59
			 | 
			
			
				+        self.assertEqual(results[0]['title'], u'Conf\xe9rence de presse du G\xe9n\xe9ral de Gaulle') 
			 | 
		
	
		
			
			| 
				
			 | 
			
				60
			 | 
			
			
				+        self.assertEqual(results[0]['url'], 
			 | 
		
	
		
			
			| 
				
			 | 
			
				61
			 | 
			
			
				+                         'https://www.ina.fr/video/CAF89035682/conference-de-presse-du-general-de-gaulle-video.html') 
			 | 
		
	
		
			
			| 
				
			 | 
			
				62
			 | 
			
			
				+        self.assertEqual(results[0]['content'], 
			 | 
		
	
		
			
			| 
				
			 | 
			
				63
			 | 
			
			
				+                         u"VERSION INTEGRALE DE LA CONFERENCE DE PRESSE DU GENERAL DE GAULLE ." 
			 | 
		
	
		
			
			| 
				
			 | 
			
				64
			 | 
			
			
				+                         u" - PA le Pr\u00e9sident DE GAULLE : il ouvre les bras et s'assied. DP journalis...") 
			 |