|
13 | 13 |
|
14 | 14 | import mock |
15 | 15 |
|
| 16 | +from openstackclient.common import exceptions |
16 | 17 | from openstackclient.network.v2 import router |
17 | 18 | from openstackclient.tests.network.v2 import fakes as network_fakes |
18 | 19 | from openstackclient.tests import utils as tests_utils |
@@ -194,3 +195,92 @@ def test_router_list_long(self): |
194 | 195 | self.network.routers.assert_called_with() |
195 | 196 | self.assertEqual(self.columns_long, columns) |
196 | 197 | self.assertEqual(self.data_long, list(data)) |
| 198 | + |
| 199 | + |
| 200 | +class TestSetRouter(TestRouter): |
| 201 | + |
| 202 | + # The router to set. |
| 203 | + _router = network_fakes.FakeRouter.create_one_router() |
| 204 | + |
| 205 | + def setUp(self): |
| 206 | + super(TestSetRouter, self).setUp() |
| 207 | + |
| 208 | + self.network.update_router = mock.Mock(return_value=None) |
| 209 | + |
| 210 | + self.network.find_router = mock.Mock(return_value=self._router) |
| 211 | + |
| 212 | + # Get the command object to test |
| 213 | + self.cmd = router.SetRouter(self.app, self.namespace) |
| 214 | + |
| 215 | + def test_set_this(self): |
| 216 | + arglist = [ |
| 217 | + self._router.name, |
| 218 | + '--enable', |
| 219 | + '--distributed', |
| 220 | + '--name', 'noob', |
| 221 | + ] |
| 222 | + verifylist = [ |
| 223 | + ('router', self._router.name), |
| 224 | + ('admin_state_up', True), |
| 225 | + ('distributed', True), |
| 226 | + ('name', 'noob'), |
| 227 | + ] |
| 228 | + |
| 229 | + parsed_args = self.check_parser(self.cmd, arglist, verifylist) |
| 230 | + result = self.cmd.take_action(parsed_args) |
| 231 | + |
| 232 | + attrs = { |
| 233 | + 'admin_state_up': True, |
| 234 | + 'distributed': True, |
| 235 | + 'name': 'noob', |
| 236 | + } |
| 237 | + self.network.update_router.assert_called_with(self._router, **attrs) |
| 238 | + self.assertEqual(None, result) |
| 239 | + |
| 240 | + def test_set_that(self): |
| 241 | + arglist = [ |
| 242 | + self._router.name, |
| 243 | + '--disable', |
| 244 | + '--centralized', |
| 245 | + ] |
| 246 | + verifylist = [ |
| 247 | + ('router', self._router.name), |
| 248 | + ('admin_state_up', False), |
| 249 | + ('distributed', False), |
| 250 | + ] |
| 251 | + |
| 252 | + parsed_args = self.check_parser(self.cmd, arglist, verifylist) |
| 253 | + result = self.cmd.take_action(parsed_args) |
| 254 | + |
| 255 | + attrs = { |
| 256 | + 'admin_state_up': False, |
| 257 | + 'distributed': False, |
| 258 | + } |
| 259 | + self.network.update_router.assert_called_with(self._router, **attrs) |
| 260 | + self.assertEqual(None, result) |
| 261 | + |
| 262 | + def test_set_distributed_centralized(self): |
| 263 | + arglist = [ |
| 264 | + self._router.name, |
| 265 | + '--distributed', |
| 266 | + '--centralized', |
| 267 | + ] |
| 268 | + verifylist = [ |
| 269 | + ('router', self._router.name), |
| 270 | + ('distributed', True), |
| 271 | + ('distributed', False), |
| 272 | + ] |
| 273 | + |
| 274 | + try: |
| 275 | + # Argument parse failing should bail here |
| 276 | + self.check_parser(self.cmd, arglist, verifylist) |
| 277 | + except tests_utils.ParserException: |
| 278 | + pass |
| 279 | + |
| 280 | + def test_set_nothing(self): |
| 281 | + arglist = [self._router.name, ] |
| 282 | + verifylist = [('router', self._router.name), ] |
| 283 | + |
| 284 | + parsed_args = self.check_parser(self.cmd, arglist, verifylist) |
| 285 | + self.assertRaises(exceptions.CommandError, self.cmd.take_action, |
| 286 | + parsed_args) |
0 commit comments