@@ -0,0 +1,384 @@
1+# -*- coding: utf-8 -*-
2+from collections import defaultdict
4+from searx.engines import btdigg
5+from searx.testing import SearxTestCase
8+class TestBtdiggEngine(SearxTestCase):
10+ def test_request(self):
12+ dicto = defaultdict(dict)
14+ params = btdigg.request(query, dicto)
15+ self.assertIn('url', params)
16+ self.assertIn(query, params['url'])
17+ self.assertIn('btdigg.org', params['url'])
19+ def test_response(self):
20+ self.assertRaises(AttributeError, btdigg.response, None)
21+ self.assertRaises(AttributeError, btdigg.response, [])
22+ self.assertRaises(AttributeError, btdigg.response, '')
23+ self.assertRaises(AttributeError, btdigg.response, '[]')
25+ response = mock.Mock(text='<html></html>')
26+ self.assertEqual(btdigg.response(response), [])
29+ <div id="search_res">
32+ <td class="idx">1</td>
34+ <table class="torrent_name_tbl">
36+ <td class="torrent_name">
37+ <a href="/url">Should be the title</a>
41+ <table class="torrent_name_tbl">
44+ <a onclick="fclck(this.href)" href="magnet:?xt=urn:btih:magnet&dn=Test"
45+ title="Télécharger des liens Magnet">[magnet]</a>
48+ <a href="https://btcloud.io/manager?cmd=add&info_hash=hash"
49+ target="_blank" title="Ajouter à BTCloud">[cloud]</a>
52+ <span class="attr_name">Taille:</span>
53+ <span class="attr_val">8 B</span>
56+ <span class="attr_name">Fichiers:</span>
57+ <span class="attr_val">710</span>
60+ <span class="attr_name">Téléchargements:</span>
61+ <span class="attr_val">5</span>
64+ <span class="attr_name">Temps:</span>
65+ <span class="attr_val">417.8 jours</span>
68+ <span class="attr_name">Dernière mise à jour:</span>
69+ <span class="attr_val">5.3 jours</span>
72+ <span class="attr_name">Faux:</span>
73+ <span class="attr_val">Aucun</span>
77+ <pre class="snippet">
85+ response = mock.Mock(text=html)
86+ results = btdigg.response(response)
87+ self.assertEqual(type(results), list)
88+ self.assertEqual(len(results), 1)
89+ self.assertEqual(results[0]['title'], 'Should be the title')
90+ self.assertEqual(results[0]['url'], 'https://btdigg.org/url')
91+ self.assertEqual(results[0]['content'], 'Content')
92+ self.assertEqual(results[0]['seed'], 5)
93+ self.assertEqual(results[0]['leech'], 0)
94+ self.assertEqual(results[0]['filesize'], 8)
95+ self.assertEqual(results[0]['files'], 710)
96+ self.assertEqual(results[0]['magnetlink'], 'magnet:?xt=urn:btih:magnet&dn=Test')
99+ <div id="search_res">
104+ response = mock.Mock(text=html)
105+ results = btdigg.response(response)
106+ self.assertEqual(type(results), list)
107+ self.assertEqual(len(results), 0)
110+ <div id="search_res">
113+ <td class="idx">1</td>
115+ <table class="torrent_name_tbl">
117+ <td class="torrent_name">
118+ <a href="/url">Should be the title</a>
122+ <table class="torrent_name_tbl">
125+ <a onclick="fclck(this.href)" href="magnet:?xt=urn:btih:magnet&dn=Test"
126+ title="Télécharger des liens Magnet">[magnet]</a>
129+ <a href="https://btcloud.io/manager?cmd=add&info_hash=hash"
130+ target="_blank" title="Ajouter à BTCloud">[cloud]</a>
133+ <span class="attr_name">Taille:</span>
134+ <span class="attr_val">1 KB</span>
137+ <span class="attr_name">Fichiers:</span>
138+ <span class="attr_val">710</span>
141+ <span class="attr_name">Téléchargements:</span>
142+ <span class="attr_val">5</span>
145+ <span class="attr_name">Temps:</span>
146+ <span class="attr_val">417.8 jours</span>
149+ <span class="attr_name">Dernière mise à jour:</span>
150+ <span class="attr_val">5.3 jours</span>
153+ <span class="attr_name">Faux:</span>
154+ <span class="attr_val">Aucun</span>
158+ <pre class="snippet">
164+ <td class="idx">1</td>
166+ <table class="torrent_name_tbl">
168+ <td class="torrent_name">
169+ <a href="/url">Should be the title</a>
173+ <table class="torrent_name_tbl">
176+ <a onclick="fclck(this.href)" href="magnet:?xt=urn:btih:magnet&dn=Test"
177+ title="Télécharger des liens Magnet">[magnet]</a>
180+ <a href="https://btcloud.io/manager?cmd=add&info_hash=hash"
181+ target="_blank" title="Ajouter à BTCloud">[cloud]</a>
184+ <span class="attr_name">Taille:</span>
185+ <span class="attr_val">1 MB</span>
188+ <span class="attr_name">Fichiers:</span>
189+ <span class="attr_val">a</span>
192+ <span class="attr_name">Téléchargements:</span>
193+ <span class="attr_val">4</span>
196+ <span class="attr_name">Temps:</span>
197+ <span class="attr_val">417.8 jours</span>
200+ <span class="attr_name">Dernière mise à jour:</span>
201+ <span class="attr_val">5.3 jours</span>
204+ <span class="attr_name">Faux:</span>
205+ <span class="attr_val">Aucun</span>
209+ <pre class="snippet">
215+ <td class="idx">1</td>
217+ <table class="torrent_name_tbl">
219+ <td class="torrent_name">
220+ <a href="/url">Should be the title</a>
224+ <table class="torrent_name_tbl">
227+ <a onclick="fclck(this.href)" href="magnet:?xt=urn:btih:magnet&dn=Test"
228+ title="Télécharger des liens Magnet">[magnet]</a>
231+ <a href="https://btcloud.io/manager?cmd=add&info_hash=hash"
232+ target="_blank" title="Ajouter à BTCloud">[cloud]</a>
235+ <span class="attr_name">Taille:</span>
236+ <span class="attr_val">1 GB</span>
239+ <span class="attr_name">Fichiers:</span>
240+ <span class="attr_val">710</span>
243+ <span class="attr_name">Téléchargements:</span>
244+ <span class="attr_val">3</span>
247+ <span class="attr_name">Temps:</span>
248+ <span class="attr_val">417.8 jours</span>
251+ <span class="attr_name">Dernière mise à jour:</span>
252+ <span class="attr_val">5.3 jours</span>
255+ <span class="attr_name">Faux:</span>
256+ <span class="attr_val">Aucun</span>
260+ <pre class="snippet">
266+ <td class="idx">1</td>
268+ <table class="torrent_name_tbl">
270+ <td class="torrent_name">
271+ <a href="/url">Should be the title</a>
275+ <table class="torrent_name_tbl">
278+ <a onclick="fclck(this.href)" href="magnet:?xt=urn:btih:magnet&dn=Test"
279+ title="Télécharger des liens Magnet">[magnet]</a>
282+ <a href="https://btcloud.io/manager?cmd=add&info_hash=hash"
283+ target="_blank" title="Ajouter à BTCloud">[cloud]</a>
286+ <span class="attr_name">Taille:</span>
287+ <span class="attr_val">1 TB</span>
290+ <span class="attr_name">Fichiers:</span>
291+ <span class="attr_val">710</span>
294+ <span class="attr_name">Téléchargements:</span>
295+ <span class="attr_val">2</span>
298+ <span class="attr_name">Temps:</span>
299+ <span class="attr_val">417.8 jours</span>
302+ <span class="attr_name">Dernière mise à jour:</span>
303+ <span class="attr_val">5.3 jours</span>
306+ <span class="attr_name">Faux:</span>
307+ <span class="attr_val">Aucun</span>
311+ <pre class="snippet">
317+ <td class="idx">1</td>
319+ <table class="torrent_name_tbl">
321+ <td class="torrent_name">
322+ <a href="/url">Should be the title</a>
326+ <table class="torrent_name_tbl">
329+ <a onclick="fclck(this.href)" href="magnet:?xt=urn:btih:magnet&dn=Test"
330+ title="Télécharger des liens Magnet">[magnet]</a>
333+ <a href="https://btcloud.io/manager?cmd=add&info_hash=hash"
334+ target="_blank" title="Ajouter à BTCloud">[cloud]</a>
337+ <span class="attr_name">Taille:</span>
338+ <span class="attr_val">a TB</span>
341+ <span class="attr_name">Fichiers:</span>
342+ <span class="attr_val">710</span>
345+ <span class="attr_name">Téléchargements:</span>
346+ <span class="attr_val">z</span>
349+ <span class="attr_name">Temps:</span>
350+ <span class="attr_val">417.8 jours</span>
353+ <span class="attr_name">Dernière mise à jour:</span>
354+ <span class="attr_val">5.3 jours</span>
357+ <span class="attr_name">Faux:</span>
358+ <span class="attr_val">Aucun</span>
362+ <pre class="snippet">
370+ response = mock.Mock(text=html)
371+ results = btdigg.response(response)
372+ self.assertEqual(type(results), list)
373+ self.assertEqual(len(results), 5)
374+ self.assertEqual(results[0]['title'], 'Should be the title')
375+ self.assertEqual(results[0]['url'], 'https://btdigg.org/url')
376+ self.assertEqual(results[0]['content'], 'Content')
377+ self.assertEqual(results[0]['seed'], 5)
378+ self.assertEqual(results[0]['leech'], 0)
379+ self.assertEqual(results[0]['files'], 710)
380+ self.assertEqual(results[0]['magnetlink'], 'magnet:?xt=urn:btih:magnet&dn=Test')
381+ self.assertEqual(results[0]['filesize'], 1024)
382+ self.assertEqual(results[1]['filesize'], 1048576)
383+ self.assertEqual(results[2]['filesize'], 1073741824)
384+ self.assertEqual(results[3]['filesize'], 1099511627776)