Test Failed
Pull Request — master (#277)
by Gleyberson
01:26
created

tests.unit.commands.test_napps_api   A

Complexity

Total Complexity 22

Size/Duplication

Total Lines 276
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 180
dl 0
loc 276
rs 10
c 0
b 0
f 0
wmc 22

22 Methods

Rating   Name   Duplication   Size   Complexity  
A TestNAppsAPI.test_install_napps() 0 12 1
A TestNAppsAPI.test_install_napp() 0 9 1
A TestNAppsAPI.test_delete() 0 12 1
A TestNAppsAPI.test_uninstall() 0 13 1
A TestNAppsAPI.test_reload__any() 0 11 1
A TestNAppsAPI.test_disable_napp() 0 9 1
A TestNAppsAPI.test_enable_napp__success() 0 8 1
A TestNAppsAPI.test_enable__all() 0 15 1
A TestNAppsAPI.test_enable__any() 0 13 1
A TestNAppsAPI.test_install() 0 13 1
A TestNAppsAPI.test_reload__all() 0 10 1
A TestNAppsAPI.test_search() 0 12 1
A TestNAppsAPI.test_enable_napp__error() 0 8 1
A TestNAppsAPI.test_create() 0 6 1
A TestNAppsAPI.test_disable__any() 0 12 1
A TestNAppsAPI.setUp() 0 3 1
A TestNAppsAPI.test_upload() 0 6 1
A TestNAppsAPI.test_prepare() 0 9 1
A TestNAppsAPI.test_list() 0 18 1
A TestNAppsAPI.test_enable_napps() 0 13 1
A TestNAppsAPI.test_disable__all() 0 14 1
A TestNAppsAPI.test_print_napps() 0 17 1
1
"""kytos.cli.commands.napps.api.NAppsAPI tests."""
2
import unittest
3
from unittest.mock import MagicMock, call, patch
4
5
from kytos.cli.commands.napps.api import NAppsAPI
6
7
8
# pylint: disable=too-many-public-methods
9
class TestNAppsAPI(unittest.TestCase):
10
    """Test the class NAppsAPI."""
11
12
    def setUp(self):
13
        """Execute steps before each tests."""
14
        self.napps_api = NAppsAPI()
15
16
    @patch('kytos.cli.commands.napps.api.NAppsManager')
17
    def test_disable__all(self, mock_napps_manager):
18
        """Test disable method to all napps."""
19
        napp = ('user', 'napp', 'version')
20
21
        mgr = MagicMock()
22
        mgr.get_enabled.return_value = [napp]
23
        mock_napps_manager.return_value = mgr
24
25
        args = {'all': True}
26
        self.napps_api.disable(args)
27
28
        mgr.set_napp.assert_called_with(*napp)
29
        mgr.disable.assert_called()
30
31
    @patch('kytos.cli.commands.napps.api.NAppsManager')
32
    def test_disable__any(self, mock_napps_manager):
33
        """Test disable method to any napp."""
34
        mgr = MagicMock()
35
        mock_napps_manager.return_value = mgr
36
37
        napp = ('user', 'napp', 'version')
38
        args = {'all': False, '<napp>': [napp]}
39
        self.napps_api.disable(args)
40
41
        mgr.set_napp.assert_called_with(*napp)
42
        mgr.disable.assert_called()
43
44
    def test_disable_napp(self):
45
        """Test disable_napp method."""
46
        mgr = MagicMock()
47
        mgr.is_enabled.side_effect = [True, False]
48
49
        self.napps_api.disable_napp(mgr)
50
        self.napps_api.disable_napp(mgr)
51
52
        mgr.disable.assert_called_once()
53
54
    @patch('kytos.cli.commands.napps.api.NAppsManager')
55
    def test_enable__all(self, mock_napps_manager):
56
        """Test enable method to all napps."""
57
        napp = ('user', 'napp', 'version')
58
59
        mgr = MagicMock()
60
        mgr.is_enabled.return_value = False
61
        mgr.get_disabled.return_value = [napp]
62
        mock_napps_manager.return_value = mgr
63
64
        args = {'all': True}
65
        self.napps_api.enable(args)
66
67
        mgr.set_napp.assert_called_with(*napp)
68
        mgr.enable.assert_called()
69
70
    @patch('kytos.cli.commands.napps.api.NAppsManager')
71
    def test_enable__any(self, mock_napps_manager):
72
        """Test enable method to any napp."""
73
        mgr = MagicMock()
74
        mgr.is_enabled.return_value = False
75
        mock_napps_manager.return_value = mgr
76
77
        napp = ('user', 'napp', 'version')
78
        args = {'all': False, '<napp>': [napp]}
79
        self.napps_api.enable(args)
80
81
        mgr.set_napp.assert_called_with(*napp)
82
        mgr.enable.assert_called()
83
84
    def test_enable_napp__success(self):
85
        """Test enable_napp method to success case."""
86
        mgr = MagicMock()
87
        mgr.is_enabled.return_value = False
88
89
        self.napps_api.enable_napp(mgr)
90
91
        mgr.enable.assert_called()
92
93
    def test_enable_napp__error(self):
94
        """Test enable_napp method to error case."""
95
        mgr = MagicMock()
96
        mgr.is_enabled.return_value = True
97
98
        self.napps_api.enable_napp(mgr)
99
100
        mgr.enable.assert_not_called()
101
102
    @patch('kytos.cli.commands.napps.api.NAppsManager')
103
    @patch('kytos.cli.commands.napps.api.NAppsAPI.enable_napp')
104
    def test_enable_napps(self, *args):
105
        """Test enable_napps method."""
106
        (mock_enable_napp, mock_napps_manager) = args
107
        mgr = MagicMock()
108
        mock_napps_manager.return_value = mgr
109
110
        napp = ('user', 'napp', 'version')
111
        self.napps_api.enable_napps([napp])
112
113
        mgr.set_napp.assert_called_with(*napp)
114
        mock_enable_napp.assert_called_with(mgr)
115
116
    @patch('kytos.cli.commands.napps.api.NAppsManager.create_napp')
117
    def test_create(self, mock_create_napp):
118
        """Test create method."""
119
        self.napps_api.create({})
120
121
        mock_create_napp.assert_called()
122
123
    @patch('kytos.cli.commands.napps.api.NAppsManager.upload')
124
    def test_upload(self, mock_upload):
125
        """Test upload method."""
126
        self.napps_api.upload({})
127
128
        mock_upload.assert_called()
129
130
    @patch('kytos.cli.commands.napps.api.NAppsManager')
131
    def test_uninstall(self, mock_napps_manager):
132
        """Test uninstall method."""
133
        mgr = MagicMock()
134
        mgr.is_installed.return_value = True
135
        mock_napps_manager.return_value = mgr
136
137
        napp = ('user', 'napp', 'version')
138
        args = {'<napp>': [napp]}
139
        self.napps_api.uninstall(args)
140
141
        mgr.set_napp.assert_called_with(*napp)
142
        mgr.remote_uninstall.assert_called()
143
144
    @patch('kytos.cli.commands.napps.api.NAppsManager')
145
    def test_install(self, mock_napps_manager):
146
        """Test install method."""
147
        mgr = MagicMock()
148
        mgr.is_installed.return_value = False
149
        mock_napps_manager.return_value = mgr
150
151
        napp = ('user', 'napp', 'version')
152
        args = {'<napp>': [napp]}
153
        self.napps_api.install(args)
154
155
        mgr.set_napp.assert_called_with(*napp)
156
        mgr.remote_install.assert_called()
157
158
    @patch('kytos.cli.commands.napps.api.NAppsManager')
159
    def test_install_napps(self, mock_napps_manager):
160
        """Test prepare method."""
161
        mgr = MagicMock()
162
        mgr.is_installed.return_value = False
163
        mock_napps_manager.return_value = mgr
164
165
        napp = ('user', 'napp', 'version')
166
        self.napps_api.install_napps([napp])
167
168
        mgr.set_napp.assert_called_with(*napp)
169
        mgr.remote_install.assert_called()
170
171
    @patch('kytos.cli.commands.napps.api.NAppsManager')
172
    def test_install_napp(self, mock_napps_manager):
173
        """Test install_napp method."""
174
        mgr = MagicMock()
175
        mock_napps_manager.return_value = mgr
176
177
        self.napps_api.install_napp(mgr)
178
179
        mgr.remote_install.assert_called()
180
181
    @patch('kytos.cli.commands.napps.api.NAppsManager.search')
182
    @patch('kytos.cli.commands.napps.api.NAppsAPI._print_napps')
183
    def test_search(self, *args):
184
        """Test search method."""
185
        (mock_print, mock_search) = args
186
        mock_search.return_value = [{'username': 'kytos', 'name': 'mef_eline',
187
                                     'description': '', 'tags': ['A', 'B']}]
188
189
        args = {'<pattern>': '^[a-z]+'}
190
        self.napps_api.search(args)
191
192
        mock_print.assert_called_with({(('kytos', 'mef_eline'), '')})
193
194
    @patch('builtins.print')
195
    @patch('kytos.cli.commands.napps.api.NAppsManager')
196
    def test_print_napps(self, *args):
197
        """Test _print_napps method."""
198
        (mock_napps_manager, mock_print) = args
199
        napps = [('kytos', 'mef_eline')]
200
201
        mgr = MagicMock()
202
        mgr.get_enabled.return_value = napps
203
        mgr.get_installed.return_value = napps
204
        mock_napps_manager.return_value = mgr
205
206
        # pylint: disable=protected-access
207
        self.napps_api._print_napps({(('kytos', 'mef_eline'), 'desc')})
208
        # pylint: enable=protected-access
209
210
        mock_print.assert_has_calls([call(' [ie]  | kytos/mef_eline | desc')])
211
212
    @patch('kytos.cli.commands.napps.api.NAppsManager')
213
    @patch('kytos.cli.commands.napps.api.NAppsAPI.print_napps')
214
    def test_list(self, *args):
215
        """Test list method."""
216
        (mock_print, mock_napps_manager) = args
217
        napps = [('kytos', 'mef_eline')]
218
219
        mgr = MagicMock()
220
        mgr.get_version.return_value = '123'
221
        mgr.get_description.return_value = 'desc'
222
        mgr.get_enabled.return_value = napps
223
        mgr.get_installed.return_value = napps
224
        mock_napps_manager.return_value = mgr
225
226
        self.napps_api.list({})
227
228
        expected = [('[ie]', 'kytos/mef_eline:123', 'desc')]
229
        mock_print.assert_called_with(expected)
230
231
    @patch('kytos.cli.commands.napps.api.NAppsManager')
232
    def test_delete(self, mock_napps_manager):
233
        """Test delete method."""
234
        mgr = MagicMock()
235
        mock_napps_manager.return_value = mgr
236
237
        napp = ('user', 'napp', 'version')
238
        args = {'<napp>': [napp]}
239
        self.napps_api.delete(args)
240
241
        mgr.set_napp.assert_called_with(*napp)
242
        mgr.delete.assert_called()
243
244
    @patch('kytos.cli.commands.napps.api.NAppsManager')
245
    def test_prepare(self, mock_napps_manager):
246
        """Test prepare method."""
247
        mgr = MagicMock()
248
        mock_napps_manager.return_value = mgr
249
250
        self.napps_api.prepare(None)
251
252
        mgr.prepare.assert_called()
253
254
    @patch('kytos.cli.commands.napps.api.NAppsManager')
255
    def test_reload__all(self, mock_napps_manager):
256
        """Test reload method to all napps."""
257
        mgr = MagicMock()
258
        mock_napps_manager.return_value = mgr
259
260
        args = {'all': True}
261
        self.napps_api.reload(args)
262
263
        mgr.reload.assert_called()
264
265
    @patch('kytos.cli.commands.napps.api.NAppsManager')
266
    def test_reload__any(self, mock_napps_manager):
267
        """Test reload method to any napp."""
268
        mgr = MagicMock()
269
        mock_napps_manager.return_value = mgr
270
271
        napps = ['A', 'B', 'C']
272
        args = {'all': False, '<napp>': napps}
273
        self.napps_api.reload(args)
274
275
        mgr.reload.assert_called_with(napps)
276