|
14 | 14 | import copy |
15 | 15 | import mock |
16 | 16 |
|
| 17 | +from mock import call |
17 | 18 | from openstackclient.common import exceptions |
18 | 19 | from openstackclient.network.v2 import address_scope |
19 | 20 | from openstackclient.tests import fakes |
@@ -168,33 +169,86 @@ def test_create_no_share(self): |
168 | 169 | class TestDeleteAddressScope(TestAddressScope): |
169 | 170 |
|
170 | 171 | # The address scope to delete. |
171 | | - _address_scope = ( |
172 | | - network_fakes.FakeAddressScope.create_one_address_scope()) |
| 172 | + _address_scopes = ( |
| 173 | + network_fakes.FakeAddressScope.create_address_scopes(count=2)) |
173 | 174 |
|
174 | 175 | def setUp(self): |
175 | 176 | super(TestDeleteAddressScope, self).setUp() |
176 | 177 | self.network.delete_address_scope = mock.Mock(return_value=None) |
177 | | - self.network.find_address_scope = mock.Mock( |
178 | | - return_value=self._address_scope) |
| 178 | + self.network.find_address_scope = ( |
| 179 | + network_fakes.FakeAddressScope.get_address_scopes( |
| 180 | + address_scopes=self._address_scopes) |
| 181 | + ) |
179 | 182 |
|
180 | 183 | # Get the command object to test |
181 | 184 | self.cmd = address_scope.DeleteAddressScope(self.app, self.namespace) |
182 | 185 |
|
183 | | - def test_delete(self): |
| 186 | + def test_address_scope_delete(self): |
184 | 187 | arglist = [ |
185 | | - self._address_scope.name, |
| 188 | + self._address_scopes[0].name, |
186 | 189 | ] |
187 | 190 | verifylist = [ |
188 | | - ('address_scope', self._address_scope.name), |
| 191 | + ('address_scope', [self._address_scopes[0].name]), |
189 | 192 | ] |
190 | 193 |
|
191 | 194 | parsed_args = self.check_parser(self.cmd, arglist, verifylist) |
192 | 195 |
|
193 | 196 | result = self.cmd.take_action(parsed_args) |
| 197 | + self.network.find_address_scope.assert_called_once_with( |
| 198 | + self._address_scopes[0].name, ignore_missing=False) |
194 | 199 | self.network.delete_address_scope.assert_called_once_with( |
195 | | - self._address_scope) |
| 200 | + self._address_scopes[0]) |
196 | 201 | self.assertIsNone(result) |
197 | 202 |
|
| 203 | + def test_multi_address_scopes_delete(self): |
| 204 | + arglist = [] |
| 205 | + verifylist = [] |
| 206 | + |
| 207 | + for a in self._address_scopes: |
| 208 | + arglist.append(a.name) |
| 209 | + verifylist = [ |
| 210 | + ('address_scope', arglist), |
| 211 | + ] |
| 212 | + parsed_args = self.check_parser(self.cmd, arglist, verifylist) |
| 213 | + |
| 214 | + result = self.cmd.take_action(parsed_args) |
| 215 | + |
| 216 | + calls = [] |
| 217 | + for a in self._address_scopes: |
| 218 | + calls.append(call(a)) |
| 219 | + self.network.delete_address_scope.assert_has_calls(calls) |
| 220 | + self.assertIsNone(result) |
| 221 | + |
| 222 | + def test_multi_address_scopes_delete_with_exception(self): |
| 223 | + arglist = [ |
| 224 | + self._address_scopes[0].name, |
| 225 | + 'unexist_address_scope', |
| 226 | + ] |
| 227 | + verifylist = [ |
| 228 | + ('address_scope', |
| 229 | + [self._address_scopes[0].name, 'unexist_address_scope']), |
| 230 | + ] |
| 231 | + parsed_args = self.check_parser(self.cmd, arglist, verifylist) |
| 232 | + |
| 233 | + find_mock_result = [self._address_scopes[0], exceptions.CommandError] |
| 234 | + self.network.find_address_scope = ( |
| 235 | + mock.MagicMock(side_effect=find_mock_result) |
| 236 | + ) |
| 237 | + |
| 238 | + try: |
| 239 | + self.cmd.take_action(parsed_args) |
| 240 | + self.fail('CommandError should be raised.') |
| 241 | + except exceptions.CommandError as e: |
| 242 | + self.assertEqual('1 of 2 address scopes failed to delete.', str(e)) |
| 243 | + |
| 244 | + self.network.find_address_scope.assert_any_call( |
| 245 | + self._address_scopes[0].name, ignore_missing=False) |
| 246 | + self.network.find_address_scope.assert_any_call( |
| 247 | + 'unexist_address_scope', ignore_missing=False) |
| 248 | + self.network.delete_address_scope.assert_called_once_with( |
| 249 | + self._address_scopes[0] |
| 250 | + ) |
| 251 | + |
198 | 252 |
|
199 | 253 | class TestListAddressScope(TestAddressScope): |
200 | 254 |
|
|
0 commit comments