Passed
Push — master ( 5ad0b7...07e8f0 )
by Steffen
01:39
created

TestHttp.test_status_code_ok()   A

Complexity

Conditions 1

Size

Total Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
dl 0
loc 9
rs 9.6666
c 0
b 0
f 0
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), file_name='tmp')
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), file_name='tmp')
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), file_name='tmp')
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), file_name='tmp')
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), file_name='tmp')
69
            self.assertEqual(exception.msg, '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), file_name='tmp')
74
            self.assertEqual(exception.msg, '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), file_name='tmp')
79
            self.assertEqual(exception.msg, 'Daily search limit reached')
80
81
82
if __name__ == '__main__':
83
    suite = unittest.TestLoader().loadTestsFromTestCase(TestHttp)
84
    unittest.TextTestRunner(verbosity=2).run(suite)
85