forked from zaclys/searxng
204a2cbbf0
use JSON where possible, compose 'content' using all available data, use correct 'url' (direct to source instead of redirect through bing)
73 lines
3.0 KiB
Python
73 lines
3.0 KiB
Python
# -*- coding: utf-8 -*-
|
|
from collections import defaultdict
|
|
import mock
|
|
from searx.engines import bing_videos
|
|
from searx.testing import SearxTestCase
|
|
|
|
|
|
class TestBingVideosEngine(SearxTestCase):
|
|
|
|
def test_request(self):
|
|
bing_videos.supported_languages = ['fr-FR', 'en-US']
|
|
bing_videos.language_aliases = {}
|
|
query = 'test_query'
|
|
dicto = defaultdict(dict)
|
|
dicto['pageno'] = 1
|
|
dicto['language'] = 'fr-FR'
|
|
dicto['safesearch'] = 0
|
|
dicto['time_range'] = ''
|
|
params = bing_videos.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('OFF' in params['cookies']['SRCHHPGUSR'])
|
|
self.assertTrue('_EDGE_S' in params['cookies'])
|
|
self.assertTrue('fr-fr' in params['cookies']['_EDGE_S'])
|
|
|
|
dicto['pageno'] = 2
|
|
dicto['time_range'] = 'day'
|
|
dicto['safesearch'] = 2
|
|
params = bing_videos.request(query, dicto)
|
|
self.assertTrue('first=29' in params['url'])
|
|
self.assertTrue('1440' in params['url'])
|
|
self.assertIn('SRCHHPGUSR', params['cookies'])
|
|
self.assertTrue('STRICT' in params['cookies']['SRCHHPGUSR'])
|
|
|
|
def test_response(self):
|
|
self.assertRaises(AttributeError, bing_videos.response, None)
|
|
self.assertRaises(AttributeError, bing_videos.response, [])
|
|
self.assertRaises(AttributeError, bing_videos.response, '')
|
|
self.assertRaises(AttributeError, bing_videos.response, '[]')
|
|
|
|
response = mock.Mock(text='<html></html>')
|
|
self.assertEqual(bing_videos.response(response), [])
|
|
|
|
response = mock.Mock(text='<html></html>')
|
|
self.assertEqual(bing_videos.response(response), [])
|
|
|
|
html = """
|
|
<div class="dg_u">
|
|
<div>
|
|
<a>
|
|
<div>
|
|
<div>
|
|
<div class="mc_vtvc_meta_block">
|
|
<div><span>100 views</span><span>1 year ago</span></div><div><span>ExampleTube</span><span>Channel 1<span></div> #noqa
|
|
</div>
|
|
</div>
|
|
<div class="vrhdata" vrhm='{"du":"01:11","murl":"https://www.example.com/watch?v=DEADBEEF","thid":"OVP.BINGTHUMB1","vt":"Title 1"}'></div> # noqa
|
|
</div>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
"""
|
|
response = mock.Mock(text=html)
|
|
results = bing_videos.response(response)
|
|
self.assertEqual(type(results), list)
|
|
self.assertEqual(len(results), 1)
|
|
self.assertEqual(results[0]['title'], 'Title 1')
|
|
self.assertEqual(results[0]['url'], 'https://www.example.com/watch?v=DEADBEEF')
|
|
self.assertEqual(results[0]['content'], '01:11 - 100 views - 1 year ago - ExampleTube - Channel 1')
|
|
self.assertEqual(results[0]['thumbnail'], 'https://www.bing.com/th?id=OVP.BINGTHUMB1')
|