Issues (5)

tests/test_http.py (5 issues)

1
#!/usr/bin/python
2
# -*- coding: utf-8 -*-
3
import unittest
4
5
import requests_mock
6
7
from saucenao.http import *
8
9
10
class TestHttp(unittest.TestCase):
11
    """Test the verify_status_code function with multiple mock responses"""
12
13
    def setUp(self):
14
        """set up for unittests
15
16
        :return:
17
        """
18
        self.dummy_url = "mock://localhost"
19
20
    @requests_mock.mock()
21
    def test_status_code_ok(self, mock):
22
        """Test the verify status code function for 200 ok status code
23
24
        :return:
25
        """
26
        mock.get(self.dummy_url, status_code=200)
27
        status_code, msg = verify_status_code(request_response=requests.get(self.dummy_url))
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable requests does not seem to be defined.
Loading history...
28
        self.assertEqual(status_code, STATUS_CODE_OK)
29
30
    @requests_mock.mock()
31
    def test_status_code_skip(self, mock):
32
        """Test the verify status code function for 413 payload too large status code
33
34
        :return:
35
        """
36
        mock.get(self.dummy_url, status_code=413)
37
        status_code, msg = verify_status_code(request_response=requests.get(self.dummy_url))
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable requests does not seem to be defined.
Loading history...
38
        self.assertEqual(status_code, STATUS_CODE_SKIP)
39
40
    @requests_mock.mock()
41
    def test_status_code_repeat(self, mock):
42
        """Test the verify status code function with multiple mock request responses
43
44
        :return:
45
        """
46
        mock.get(self.dummy_url, text='', status_code=999)
47
        status_code, msg = verify_status_code(request_response=requests.get(self.dummy_url))
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable requests does not seem to be defined.
Loading history...
48
        self.assertEqual(status_code, STATUS_CODE_REPEAT)
49
50
    @requests_mock.mock()
51
    def test_status_code_api_key(self, mock):
52
        """Test the verify status code function for 403 wrong api key status
53
54
        :return:
55
        """
56
        mock.get(self.dummy_url, text='', status_code=403)
57
        with self.assertRaises(InvalidOrWrongApiKeyException) as _:
58
            verify_status_code(request_response=requests.get(self.dummy_url))
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable requests does not seem to be defined.
Loading history...
59
60
    @requests_mock.mock()
61
    def test_status_code_limit(self, mock):
62
        """Test the verify status code function for 429 limit reached status
63
64
        :return:
65
        """
66
        mock.get(self.dummy_url, text='limit of 150 searches reached', status_code=429)
67
        with self.assertRaises(DailyLimitReachedException) as exception:
68
            verify_status_code(request_response=requests.get(self.dummy_url))
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable requests does not seem to be defined.
Loading history...
69
            self.assertEqual(str(exception), 'Daily search limit for unregistered users reached')
70
71
        mock.get(self.dummy_url, text='limit of 300 searches reached', status_code=429)
72
        with self.assertRaises(DailyLimitReachedException) as exception:
73
            verify_status_code(request_response=requests.get(self.dummy_url))
74
            self.assertEqual(str(exception), 'Daily search limit for basic users reached')
75
76
        mock.get(self.dummy_url, status_code=429)
77
        with self.assertRaises(DailyLimitReachedException) as exception:
78
            verify_status_code(request_response=requests.get(self.dummy_url))
79
            self.assertEqual(str(exception), 'Daily search limit reached')
80
81
82
if __name__ == '__main__':
83
    suite = unittest.TestLoader().loadTestsFromTestCase(TestHttp)
84
    unittest.TextTestRunner(verbosity=2).run(suite)
85