|
11 | 11 | # under the License. |
12 | 12 | # |
13 | 13 |
|
| 14 | +import argparse |
14 | 15 | import mock |
15 | 16 |
|
16 | 17 | from mock import call |
@@ -174,6 +175,58 @@ def test_create_full_options(self): |
174 | 175 | self.assertEqual(ref_columns, columns) |
175 | 176 | self.assertEqual(ref_data, data) |
176 | 177 |
|
| 178 | + def test_create_invalid_json_binding_profile(self): |
| 179 | + arglist = [ |
| 180 | + '--network', self._port.network_id, |
| 181 | + '--binding-profile', '{"parent_name":"fake_parent"', |
| 182 | + 'test-port', |
| 183 | + ] |
| 184 | + self.assertRaises(argparse.ArgumentTypeError, |
| 185 | + self.check_parser, |
| 186 | + self.cmd, |
| 187 | + arglist, |
| 188 | + None) |
| 189 | + |
| 190 | + def test_create_invalid_key_value_binding_profile(self): |
| 191 | + arglist = [ |
| 192 | + '--network', self._port.network_id, |
| 193 | + '--binding-profile', 'key', |
| 194 | + 'test-port', |
| 195 | + ] |
| 196 | + self.assertRaises(argparse.ArgumentTypeError, |
| 197 | + self.check_parser, |
| 198 | + self.cmd, |
| 199 | + arglist, |
| 200 | + None) |
| 201 | + |
| 202 | + def test_create_json_binding_profile(self): |
| 203 | + arglist = [ |
| 204 | + '--network', self._port.network_id, |
| 205 | + '--binding-profile', '{"parent_name":"fake_parent"}', |
| 206 | + '--binding-profile', '{"tag":42}', |
| 207 | + 'test-port', |
| 208 | + ] |
| 209 | + verifylist = [ |
| 210 | + ('network', self._port.network_id,), |
| 211 | + ('enable', True), |
| 212 | + ('binding_profile', {'parent_name': 'fake_parent', 'tag': 42}), |
| 213 | + ('name', 'test-port'), |
| 214 | + ] |
| 215 | + parsed_args = self.check_parser(self.cmd, arglist, verifylist) |
| 216 | + |
| 217 | + columns, data = (self.cmd.take_action(parsed_args)) |
| 218 | + |
| 219 | + self.network.create_port.assert_called_once_with(**{ |
| 220 | + 'admin_state_up': True, |
| 221 | + 'network_id': self._port.network_id, |
| 222 | + 'binding:profile': {'parent_name': 'fake_parent', 'tag': 42}, |
| 223 | + 'name': 'test-port', |
| 224 | + }) |
| 225 | + |
| 226 | + ref_columns, ref_data = self._get_common_cols_data(self._port) |
| 227 | + self.assertEqual(ref_columns, columns) |
| 228 | + self.assertEqual(ref_data, data) |
| 229 | + |
177 | 230 |
|
178 | 231 | class TestDeletePort(TestPort): |
179 | 232 |
|
@@ -442,6 +495,48 @@ def test_set_nothing(self): |
442 | 495 | self.network.update_port.assert_called_once_with(self._port, **attrs) |
443 | 496 | self.assertIsNone(result) |
444 | 497 |
|
| 498 | + def test_set_invalid_json_binding_profile(self): |
| 499 | + arglist = [ |
| 500 | + '--binding-profile', '{"parent_name"}', |
| 501 | + 'test-port', |
| 502 | + ] |
| 503 | + self.assertRaises(argparse.ArgumentTypeError, |
| 504 | + self.check_parser, |
| 505 | + self.cmd, |
| 506 | + arglist, |
| 507 | + None) |
| 508 | + |
| 509 | + def test_set_invalid_key_value_binding_profile(self): |
| 510 | + arglist = [ |
| 511 | + '--binding-profile', 'key', |
| 512 | + 'test-port', |
| 513 | + ] |
| 514 | + self.assertRaises(argparse.ArgumentTypeError, |
| 515 | + self.check_parser, |
| 516 | + self.cmd, |
| 517 | + arglist, |
| 518 | + None) |
| 519 | + |
| 520 | + def test_set_mixed_binding_profile(self): |
| 521 | + arglist = [ |
| 522 | + '--binding-profile', 'foo=bar', |
| 523 | + '--binding-profile', '{"foo2": "bar2"}', |
| 524 | + self._port.name, |
| 525 | + ] |
| 526 | + verifylist = [ |
| 527 | + ('binding_profile', {'foo': 'bar', 'foo2': 'bar2'}), |
| 528 | + ('port', self._port.name), |
| 529 | + ] |
| 530 | + |
| 531 | + parsed_args = self.check_parser(self.cmd, arglist, verifylist) |
| 532 | + result = self.cmd.take_action(parsed_args) |
| 533 | + |
| 534 | + attrs = { |
| 535 | + 'binding:profile': {'foo': 'bar', 'foo2': 'bar2'}, |
| 536 | + } |
| 537 | + self.network.update_port.assert_called_once_with(self._port, **attrs) |
| 538 | + self.assertIsNone(result) |
| 539 | + |
445 | 540 |
|
446 | 541 | class TestShowPort(TestPort): |
447 | 542 |
|
|
0 commit comments