moira-client

Форк
0
/
test_client.py 
133 строки · 4.0 Кб
1
import unittest
2
try:
3
    from unittest.mock import patch
4
except ImportError:
5
    from mock import patch
6

7
import requests
8
from moira_client.client import Client
9
from moira_client.client import InvalidJSONError
10

11
TEST_API_URL = 'http://test/api/url'
12
TEST_HEADERS = {
13
    'X-Webauth-User': 'login',
14
    'Content-Type': 'application/json',
15
    'User-Agent': 'Python Moira Client'
16
    }
17

18

19
class FakeResponse:
20

21
    @property
22
    def content(self):
23
        return 'not json'
24

25
    def raise_for_status(self):
26
        pass
27

28
    def json(self):
29
        raise ValueError('invalid json')
30

31

32
class ClientTest(unittest.TestCase):
33

34
    def test_get(self):
35

36
        def get(url, params, **kwargs):
37
            pass
38

39
        with patch.object(requests, 'get', side_effects=get) as mock_get:
40
            test_path = 'test_path'
41

42
            client = Client(TEST_API_URL, TEST_HEADERS)
43
            client.get(test_path)
44

45
        self.assertTrue(mock_get.called)
46
        expected_url_call = TEST_API_URL + '/' + test_path
47
        mock_get.assert_called_with(expected_url_call, headers=TEST_HEADERS, auth=None)
48

49
    def test_put(self):
50

51
        def put(url, data, **kwargs):
52
            pass
53

54
        with patch.object(requests, 'put', side_effects=put) as mock_put:
55
            test_path = 'test_path'
56
            test_data = {'test': 'test'}
57

58
            client = Client(TEST_API_URL, TEST_HEADERS)
59
            client.put(test_path, data=test_data)
60

61
        self.assertTrue(mock_put.called)
62
        expected_url_call = TEST_API_URL + '/' + test_path
63
        mock_put.assert_called_with(expected_url_call, data=test_data, headers=TEST_HEADERS, auth=None)
64

65
    def test_delete(self):
66

67
        def delete(url, **kwargs):
68
            pass
69

70
        with patch.object(requests, 'delete', side_effects=delete) as mock_delete:
71
            test_path = 'test_path'
72

73
            client = Client(TEST_API_URL, TEST_HEADERS)
74
            client.delete(test_path)
75

76
        self.assertTrue(mock_delete.called)
77
        expected_url_call = TEST_API_URL + '/' + test_path
78
        mock_delete.assert_called_with(expected_url_call, headers=TEST_HEADERS, auth=None)
79

80
    def test_get_invalid_response(self):
81

82
        def get(url, params, **kwargs):
83
            return FakeResponse()
84

85
        response = FakeResponse()
86

87
        with patch.object(requests, 'get', side_effects=get, return_value=response) as mock_get:
88
            test_path = 'test_path'
89

90
            client = Client(TEST_API_URL, TEST_HEADERS)
91
            with self.assertRaises(InvalidJSONError):
92
                client.get(test_path)
93

94
        self.assertTrue(mock_get.called)
95
        expected_url_call = TEST_API_URL + '/' + test_path
96
        mock_get.assert_called_with(expected_url_call, headers=TEST_HEADERS, auth=None)
97

98
    def test_put_invalid_response(self):
99
        test_data = {'test': 'test'}
100

101
        def put(url, data, **kwargs):
102
            return FakeResponse()
103

104
        response = FakeResponse()
105

106
        with patch.object(requests, 'put', side_effects=put, return_value=response) as mock_put:
107
            test_path = 'test_path'
108

109
            client = Client(TEST_API_URL, TEST_HEADERS)
110
            with self.assertRaises(InvalidJSONError):
111
                client.put(test_path, data=test_data)
112

113
        self.assertTrue(mock_put.called)
114
        expected_url_call = TEST_API_URL + '/' + test_path
115
        mock_put.assert_called_with(expected_url_call, data=test_data, headers=TEST_HEADERS, auth=None)
116

117
    def test_delete_invalid_response(self):
118

119
        def delete(url, **kwargs):
120
            return FakeResponse()
121

122
        response = FakeResponse()
123

124
        with patch.object(requests, 'delete', side_effects=delete, return_value=response) as mock_delete:
125
            test_path = 'test_path'
126

127
            client = Client(TEST_API_URL, TEST_HEADERS)
128
            with self.assertRaises(InvalidJSONError):
129
                client.delete(test_path)
130

131
        self.assertTrue(mock_delete.called)
132
        expected_url_call = TEST_API_URL + '/' + test_path
133
        mock_delete.assert_called_with(expected_url_call, headers=TEST_HEADERS, auth=None)
134

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.