Completed
Pull Request — master (#277)
by Gleyberson
01:29
created

TestCommonClient.test_make_request__package()   A

Complexity

Conditions 1

Size

Total Lines 8
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 6
nop 2
dl 0
loc 8
rs 10
c 0
b 0
f 0
1
"""kytos.utils.client tests."""
2
import unittest
3
from unittest.mock import MagicMock, patch
4
5
from kytos.utils.client import CommonClient, NAppsClient, UsersClient
6
from kytos.utils.config import KytosConfig
7
8
9
class TestCommonClient(unittest.TestCase):
10
    """Test the class CommonClient."""
11
12
    def setUp(self):
13
        """Execute steps before each tests."""
14
        self.common_client = CommonClient()
15
16
    @patch('requests.get')
17
    def test_make_request(self, mock_requests_get):
18
        """Test make_request method."""
19
        data = MagicMock()
20
        self.common_client.make_request('endpoint', json=data)
21
22
        mock_requests_get.assert_called_with('endpoint', json=data)
23
24
    @patch('requests.get')
25
    def test_make_request__package(self, mock_requests_get):
26
        """Test make_request method with package."""
27
        data = MagicMock()
28
        self.common_client.make_request('endpoint', package='any', json=data)
29
30
        mock_requests_get.assert_called_with('endpoint', data=data,
31
                                             files={'file': 'any'})
32
33
34
# pylint: disable=protected-access
35
class TestNAppsClient(unittest.TestCase):
36
    """Test the class NAppsClient."""
37
38
    def setUp(self):
39
        """Execute steps before each tests."""
40
        kytos_config = KytosConfig('/tmp/.kytosrc')
41
        kytos_config.save_token('user', 'token')
42
43
        self.napps_client = NAppsClient()
44
        self.napps_client._config = kytos_config.config
45
        self.napps_client._config.set('kytos', 'api', 'endpoint')
46
        self.napps_client._config.set('napps', 'api', 'endpoint')
47
48
    @staticmethod
49
    def _expected_response(status_code):
50
        """Expected response mock."""
51
        response = MagicMock()
52
        response.content = '{"napps": []}'.encode()
53
        response.status_code = status_code
54
        return response
55
56
    @patch('requests.get')
57
    def test_get_napps(self, mock_request):
58
        """Test get_napps method."""
59
        mock_request.return_value = self._expected_response(200)
60
61
        self.napps_client.get_napps()
62
63
        mock_request.assert_called_with('endpoint/napps/', json=[])
64
65
    @patch('requests.get')
66
    def test_get_napp(self, mock_request):
67
        """Test get_napp method."""
68
        mock_request.return_value = self._expected_response(200)
69
70
        self.napps_client.get_napp('username', 'name')
71
72
        endpoint = 'endpoint/napps/username/name/'
73
        mock_request.assert_called_with(endpoint, json=[])
74
75
    @patch('requests.get')
76
    def test_reload_napps__all(self, mock_request):
77
        """Test reload_napps method to all napps."""
78
        mock_request.return_value = self._expected_response(200)
79
80
        self.napps_client.reload_napps()
81
82
        endpoint = 'endpoint/api/kytos/core/reload/all'
83
        mock_request.assert_called_with(endpoint, json=[])
84
85
    @patch('requests.get')
86
    def test_reload_napps__any(self, mock_request):
87
        """Test reload_napps method to any napp."""
88
        mock_request.return_value = self._expected_response(200)
89
90
        napps = [('user', 'napp', 'version')]
91
        self.napps_client.reload_napps(napps)
92
93
        endpoint = 'endpoint/api/kytos/core/reload/user/napp'
94
        mock_request.assert_called_with(endpoint, json=[])
95
96
    @patch('requests.post')
97
    @patch('requests.get')
98
    @patch('configparser.ConfigParser.set')
99
    @patch('configparser.ConfigParser.get', return_value='value')
100
    @patch('configparser.ConfigParser.has_option', return_value=False)
101
    @patch('kytos.utils.decorators.getpass', return_value='password')
102
    @patch('builtins.input', return_value='username')
103
    def test_upload_napp(self, *args):
104
        """Test upload_napp method."""
105
        (_, _, _, _, _, mock_get, mock_post) = args
106
        mock_get.return_value = self._expected_response(201)
107
        mock_post.return_value = self._expected_response(201)
108
109
        metadata = MagicMock()
110
        self.napps_client.upload_napp(metadata, 'package')
111
112
        mock_post.assert_called_with('value/napps/', data=metadata,
113
                                     files={'file': 'package'})
114
115
    @patch('requests.delete')
116
    @patch('requests.get')
117
    @patch('configparser.ConfigParser.set')
118
    @patch('configparser.ConfigParser.get', return_value='value')
119
    @patch('configparser.ConfigParser.has_option', return_value=False)
120
    @patch('kytos.utils.decorators.getpass', return_value='password')
121
    @patch('builtins.input', return_value='username')
122
    def test_delete(self, *args):
123
        """Test delete method."""
124
        (_, _, _, _, _, mock_get, mock_delete) = args
125
        mock_get.return_value = self._expected_response(201)
126
        mock_delete.return_value = self._expected_response(201)
127
128
        self.napps_client.delete('user', 'napp')
129
130
        endpoint = 'value/napps/user/napp/'
131
        token = self.napps_client._config.get('auth', 'token')
132
        mock_delete.assert_called_with(endpoint, json={'token': token})
133
134
135
class TestUsersClient(unittest.TestCase):
136
    """Test the class UsersClient."""
137
138
    def setUp(self):
139
        """Execute steps before each tests."""
140
        kytos_config = KytosConfig('/tmp/.kytosrc')
141
142
        self.users_client = UsersClient()
143
        self.users_client._config = kytos_config.config
144
        self.users_client._config.set('napps', 'api', 'endpoint')
145
146
    @patch('requests.post')
147
    def test_register(self, mock_request):
148
        """Test register method."""
149
        user_dict = MagicMock()
150
        self.users_client.register(user_dict)
151
152
        mock_request.assert_called_with('endpoint/users/', json=user_dict)
153