tests.unit.test_client   A
last analyzed

Complexity

Total Complexity 15

Size/Duplication

Total Lines 158
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 103
dl 0
loc 158
ccs 100
cts 100
cp 1
rs 10
c 0
b 0
f 0
wmc 15

13 Methods

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