test_btdigg.py 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. # -*- coding: utf-8 -*-
  2. from collections import defaultdict
  3. import mock
  4. from searx.engines import btdigg
  5. from searx.testing import SearxTestCase
  6. class TestBtdiggEngine(SearxTestCase):
  7. def test_request(self):
  8. query = 'test_query'
  9. dicto = defaultdict(dict)
  10. dicto['pageno'] = 0
  11. params = btdigg.request(query, dicto)
  12. self.assertIn('url', params)
  13. self.assertIn(query, params['url'])
  14. self.assertIn('btdig.com', params['url'])
  15. def test_response(self):
  16. self.assertRaises(AttributeError, btdigg.response, None)
  17. self.assertRaises(AttributeError, btdigg.response, [])
  18. self.assertRaises(AttributeError, btdigg.response, '')
  19. self.assertRaises(AttributeError, btdigg.response, '[]')
  20. response = mock.Mock(text='<html></html>')
  21. self.assertEqual(btdigg.response(response), [])
  22. html = u"""
  23. <div class="one_result" style="display:table-row;background-color:#e8e8e8">
  24. <div style="display:table-cell;color:rgb(0, 0, 0)">
  25. <div style="display:table">
  26. <div style="display:table-row">
  27. <div class="torrent_name" style="display:table-cell">
  28. <a style="color:rgb(0, 0, 204);text-decoration:underline;font-size:150%"
  29. href="http://btdig.com/a72f35b7ee3a10928f02bb799e40ae5db701ed1c/pdf?q=pdf&amp;p=1&amp;order=0"
  30. >3.9GBdeLibrosByHuasoFromHell(3de4)</a>
  31. </div>
  32. </div>
  33. </div>
  34. <div style="display:table">
  35. <div style="display:table-row">
  36. <div style="display:table-cell">
  37. <span class="torrent_files" style="color:#666;padding-left:10px">4217</span> files <span
  38. class="torrent_size" style="color:#666;padding-left:10px">1 GB</span><span
  39. class="torrent_age" style="color:rgb(0, 102, 0);padding-left:10px;margin: 0px 4px"
  40. >found 3 years ago</span>
  41. </div>
  42. </div>
  43. </div>
  44. <div style="display:table;width:100%;padding:10px">
  45. <div style="display:table-row">
  46. <div class="torrent_magnet" style="display:table-cell">
  47. <div class="fa fa-magnet" style="color:#cc0000">
  48. <a href="magnet:?xt=urn:btih:a72f35b7ee3a10928f02bb799e40ae5db701ed1c&amp;dn=3.9GBdeLibrosBy..."
  49. title="Download via magnet-link"> magnet:?xt=urn:btih:a72f35b7ee...</a>
  50. </div>
  51. </div>
  52. <div style="display:table-cell;color:rgb(0, 0, 0);text-align:right">
  53. <span style="color:rgb(136, 136, 136);margin: 0px 0px 0px 4px"></span><span
  54. style="color:rgb(0, 102, 0);margin: 0px 4px">found 3 years ago</span>
  55. </div>
  56. </div>
  57. </div>
  58. <div class="torrent_excerpt" style="display:table;padding:10px;white-space:nowrap">
  59. <div class="fa fa-folder-open" style="padding-left:0em"> 3.9GBdeLibrosByHuasoFromHell(3de4)</div><br/>
  60. <div class="fa fa-folder-open" style="padding-left:1em"> Libros H-Z</div><br/>
  61. <div class="fa fa-folder-open" style="padding-left:2em"> H</div><br/><div class="fa fa-file-archive-o"
  62. style="padding-left:3em"> H.H. Hollis - El truco de la espada-<b
  63. style="color:red; background-color:yellow">pdf</b>.zip</div><span
  64. style="color:#666;padding-left:10px">17 KB</span><br/>
  65. <div class="fa fa-file-archive-o" style="padding-left:3em"> Hagakure - El Libro del Samurai-<b
  66. style="color:red; background-color:yellow">pdf</b>.zip</div><span
  67. style="color:#666;padding-left:10px">95 KB</span><br/>
  68. <div class="fa fa-folder-open" style="padding-left:3em"> Hamsun, Knut (1859-1952)</div><br/>
  69. <div class="fa fa-file-archive-o" style="padding-left:4em"> Hamsun, Knut - Hambre-<b
  70. style="color:red; background-color:yellow">pdf</b>.zip</div><span
  71. style="color:#666;padding-left:10px">786 KB</span><br/>
  72. <div class="fa fa-plus-circle"><a
  73. href="http://btdig.com/a72f35b7ee3a10928f02bb799e40ae5db701ed1c/pdf?q=pdf&amp;p=1&amp;order=0"
  74. > 4214 hidden files<span style="color:#666;padding-left:10px">1 GB</span></a></div>
  75. </div>
  76. </div>
  77. </div>
  78. """
  79. response = mock.Mock(text=html.encode('utf-8'))
  80. results = btdigg.response(response)
  81. self.assertEqual(type(results), list)
  82. self.assertEqual(len(results), 1)
  83. self.assertEqual(results[0]['title'], '3.9GBdeLibrosByHuasoFromHell(3de4)')
  84. self.assertEqual(results[0]['url'],
  85. 'http://btdig.com/a72f35b7ee3a10928f02bb799e40ae5db701ed1c/pdf?q=pdf&p=1&order=0')
  86. self.assertEqual(results[0]['content'],
  87. '3.9GBdeLibrosByHuasoFromHell(3de4) | ' +
  88. 'Libros H-Z | ' +
  89. 'H H.H. Hollis - El truco de la espada-pdf.zip17 KB | ' +
  90. 'Hagakure - El Libro del Samurai-pdf.zip95 KB | ' +
  91. 'Hamsun, Knut (1859-1952) | Hamsun, Knut - Hambre-pdf.zip786 KB | ' +
  92. '4214 hidden files1 GB')
  93. self.assertEqual(results[0]['filesize'], 1 * 1024 * 1024 * 1024)
  94. self.assertEqual(results[0]['files'], 4217)
  95. self.assertEqual(results[0]['magnetlink'],
  96. 'magnet:?xt=urn:btih:a72f35b7ee3a10928f02bb799e40ae5db701ed1c&dn=3.9GBdeLibrosBy...')
  97. html = """
  98. <div style="display:table-row;background-color:#e8e8e8">
  99. </div>
  100. """
  101. response = mock.Mock(text=html.encode('utf-8'))
  102. results = btdigg.response(response)
  103. self.assertEqual(type(results), list)
  104. self.assertEqual(len(results), 0)