test_bing_videos.py 4.27 KB
Newer Older
marc's avatar
marc committed
1
2
3
4
5
6
7
8
9
10
# -*- 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):
11
        bing_videos.supported_languages = ['fr-FR', 'en-US']
12
        bing_videos.language_aliases = {}
marc's avatar
marc committed
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
        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=11' 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 = """
Noémi Ványi's avatar
Noémi Ványi committed
50
51
52
53
54
        <div class="dg_u">
            <div id="mc_vtvc_1" class="mc_vtvc">
                <a class="mc_vtvc_link" href="/video">
                    <div class="mc_vtvc_th">
                        <div class="cico">
marc's avatar
marc committed
55
56
                            <img src="thumb_1.jpg" />
                        </div>
Noémi Ványi's avatar
Noémi Ványi committed
57
58
59
60
61
62
63
64
65
66
                        <div class="mc_vtvc_ban_lo">
                            <div class="vtbc">
                                <div class="mc_bc_w b_smText">
                                    <div class="mc_bc pivot bpi_2">
                                        <span title="">
                                             <span class="mv_vtvc_play cipg "></span>
                                        </span>
                                    </div>
                                    <div class="mc_bc items">10:06</div>
                                </div>
marc's avatar
marc committed
67
68
69
                            </div>
                        </div>
                        </div>
Noémi Ványi's avatar
Noémi Ványi committed
70
71
72
73
74
75
76
                        <div class="mc_vtvc_meta">
                        <div class="mc_vtvc_title" title="Title 1"></div>
                        <div class="mc_vtvc_meta_block_area">
                        <div class="mc_vtvc_meta_block">
                            <div class="mc_vtvc_meta_row">
                                <span>65,696,000+ views</span>
                                <span>1 year ago</span>
marc's avatar
marc committed
77
                            </div>
Noémi Ványi's avatar
Noémi Ványi committed
78
79
80
81
82
83
84
                            <div class="mc_vtvc_meta_row mc_vtvc_meta_row_channel">Content 1</div>
                            <div class="mc_vtvc_meta_row"><span>
                                <div class="cico mc_vtvc_src_ico">
                                    <div></div>
                                </div>
                                <span>YouTube</span>
                            </span></div>
marc's avatar
marc committed
85
86
87
                        </div>
                        </div>
                    </div>
Noémi Ványi's avatar
Noémi Ványi committed
88
89
90
                    <div class="vrhdata"></div>
                    </a>
                </div>
marc's avatar
marc committed
91
92
93
94
95
96
97
            </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')
Noémi Ványi's avatar
Noémi Ványi committed
98
        self.assertEqual(results[0]['url'], 'https://bing.com/video')
marc's avatar
marc committed
99
100
        self.assertEqual(results[0]['content'], 'Content 1')
        self.assertEqual(results[0]['thumbnail'], 'thumb_1.jpg')