network tag UT: avoid using mix-in test class
This is a follow-up patch on https://review.openstack.org/#/c/461195/ There is a suggestion to keep test code more straight-forward and avoid using mix-in to reduce the code complexity. This commit moves all logic implemented in _test_tag.py into individual network tests. Change-Id: I0a9f8c6cd758db9035b0fd60ce4b9bfc791b6cbd
This commit is contained in:
parent
ad21588b20
commit
78a832441a
openstackclient/tests/unit/network/v2
@ -1,190 +0,0 @@
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
#
|
||||
|
||||
from openstackclient.tests.unit import utils as tests_utils
|
||||
|
||||
|
||||
class TestCreateTagMixin(object):
|
||||
"""Test case mixin to test network tag operation for resource creation.
|
||||
|
||||
* Each test class must create a mock for self.network.set_tags
|
||||
* If you test tag operation combined with other options,
|
||||
you need to write test(s) directly in individual test cases.
|
||||
* The following instance attributes must be defined:
|
||||
|
||||
* _tag_test_resource: Test resource returned by mocked create_<resource>.
|
||||
* _tag_create_resource_mock: Mocked create_<resource> method of SDK.
|
||||
* _tag_create_required_arglist: List of required arguments when creating
|
||||
a resource with default options.
|
||||
* _tag_create_required_verifylist: List of expected parsed_args params
|
||||
when creating a resource with default options.
|
||||
* _tag_create_required_attrs: Expected attributes passed to a mocked
|
||||
create_resource method when creating a resource with default options.
|
||||
"""
|
||||
|
||||
def _test_create_with_tag(self, add_tags=True):
|
||||
arglist = self._tag_create_required_arglist[:]
|
||||
if add_tags:
|
||||
arglist += ['--tag', 'red', '--tag', 'blue']
|
||||
else:
|
||||
arglist += ['--no-tag']
|
||||
verifylist = self._tag_create_required_verifylist[:]
|
||||
if add_tags:
|
||||
verifylist.append(('tags', ['red', 'blue']))
|
||||
else:
|
||||
verifylist.append(('no_tag', True))
|
||||
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
columns, data = (self.cmd.take_action(parsed_args))
|
||||
|
||||
self._tag_create_resource_mock.assert_called_once_with(
|
||||
**self._tag_create_required_attrs)
|
||||
if add_tags:
|
||||
self.network.set_tags.assert_called_once_with(
|
||||
self._tag_test_resource,
|
||||
tests_utils.CompareBySet(['red', 'blue']))
|
||||
else:
|
||||
self.assertFalse(self.network.set_tags.called)
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(self.data, data)
|
||||
|
||||
def test_create_with_tags(self):
|
||||
self._test_create_with_tag(add_tags=True)
|
||||
|
||||
def test_create_with_no_tag(self):
|
||||
self._test_create_with_tag(add_tags=False)
|
||||
|
||||
|
||||
class TestListTagMixin(object):
|
||||
"""Test case mixin to test network tag operation for resource listing.
|
||||
|
||||
* A test resource returned by find_<resource> must contains
|
||||
"red" and "green" tags.
|
||||
* Each test class must create a mock for self.network.set_tags
|
||||
* If you test tag operation combined with other options,
|
||||
you need to write test(s) directly in individual test cases.
|
||||
* The following instance attributes must be defined:
|
||||
|
||||
* _tag_create_resource_mock: Mocked list_<resource> method of SDK.
|
||||
"""
|
||||
|
||||
def test_list_with_tag_options(self):
|
||||
arglist = [
|
||||
'--tags', 'red,blue',
|
||||
'--any-tags', 'red,green',
|
||||
'--not-tags', 'orange,yellow',
|
||||
'--not-any-tags', 'black,white',
|
||||
]
|
||||
verifylist = [
|
||||
('tags', ['red', 'blue']),
|
||||
('any_tags', ['red', 'green']),
|
||||
('not_tags', ['orange', 'yellow']),
|
||||
('not_any_tags', ['black', 'white']),
|
||||
]
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
columns, data = self.cmd.take_action(parsed_args)
|
||||
|
||||
self._tag_list_resource_mock.assert_called_once_with(
|
||||
**{'tags': 'red,blue',
|
||||
'any_tags': 'red,green',
|
||||
'not_tags': 'orange,yellow',
|
||||
'not_any_tags': 'black,white'}
|
||||
)
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(self.data, list(data))
|
||||
|
||||
|
||||
class TestSetTagMixin(object):
|
||||
"""Test case mixin to test network tag operation for resource update.
|
||||
|
||||
* A test resource returned by find_<resource> must contains
|
||||
"red" and "green" tags.
|
||||
* Each test class must create a mock for self.network.set_tags
|
||||
* If you test tag operation combined with other options,
|
||||
you need to write test(s) directly in individual test cases.
|
||||
* The following instance attributes must be defined:
|
||||
|
||||
* _tag_resource_name: positional arg name of a resource to be updated.
|
||||
* _tag_test_resource: Test resource returned by mocked update_<resource>.
|
||||
* _tag_update_resource_mock: Mocked update_<resource> method of SDK.
|
||||
"""
|
||||
|
||||
def _test_set_tags(self, with_tags=True):
|
||||
if with_tags:
|
||||
arglist = ['--tag', 'red', '--tag', 'blue']
|
||||
verifylist = [('tags', ['red', 'blue'])]
|
||||
expected_args = ['red', 'blue', 'green']
|
||||
else:
|
||||
arglist = ['--no-tag']
|
||||
verifylist = [('no_tag', True)]
|
||||
expected_args = []
|
||||
arglist.append(self._tag_test_resource.name)
|
||||
verifylist.append(
|
||||
(self._tag_resource_name, self._tag_test_resource.name))
|
||||
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
result = self.cmd.take_action(parsed_args)
|
||||
|
||||
self.assertFalse(self._tag_update_resource_mock.called)
|
||||
self.network.set_tags.assert_called_once_with(
|
||||
self._tag_test_resource,
|
||||
tests_utils.CompareBySet(expected_args))
|
||||
self.assertIsNone(result)
|
||||
|
||||
def test_set_with_tags(self):
|
||||
self._test_set_tags(with_tags=True)
|
||||
|
||||
def test_set_with_no_tag(self):
|
||||
self._test_set_tags(with_tags=False)
|
||||
|
||||
|
||||
class TestUnsetTagMixin(object):
|
||||
"""Test case mixin to test network tag operation for resource update.
|
||||
|
||||
* Each test class must create a mock for self.network.set_tags
|
||||
* If you test tag operation combined with other options,
|
||||
you need to write test(s) directly in individual test cases.
|
||||
* The following instance attributes must be defined:
|
||||
|
||||
* _tag_resource_name: positional arg name of a resource to be updated.
|
||||
* _tag_test_resource: Test resource returned by mocked update_<resource>.
|
||||
* _tag_update_resource_mock: Mocked update_<resource> method of SDK.
|
||||
"""
|
||||
|
||||
def _test_unset_tags(self, with_tags=True):
|
||||
if with_tags:
|
||||
arglist = ['--tag', 'red', '--tag', 'blue']
|
||||
verifylist = [('tags', ['red', 'blue'])]
|
||||
expected_args = ['green']
|
||||
else:
|
||||
arglist = ['--all-tag']
|
||||
verifylist = [('all_tag', True)]
|
||||
expected_args = []
|
||||
arglist.append(self._tag_test_resource.name)
|
||||
verifylist.append(
|
||||
(self._tag_resource_name, self._tag_test_resource.name))
|
||||
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
result = self.cmd.take_action(parsed_args)
|
||||
|
||||
self.assertFalse(self._tag_update_resource_mock.called)
|
||||
self.network.set_tags.assert_called_once_with(
|
||||
self._tag_test_resource,
|
||||
tests_utils.CompareBySet(expected_args))
|
||||
self.assertIsNone(result)
|
||||
|
||||
def test_unset_with_tags(self):
|
||||
self._test_unset_tags(with_tags=True)
|
||||
|
||||
def test_unset_with_all_tag(self):
|
||||
self._test_unset_tags(with_tags=False)
|
@ -22,7 +22,6 @@ from openstackclient.network.v2 import network
|
||||
from openstackclient.tests.unit import fakes
|
||||
from openstackclient.tests.unit.identity.v2_0 import fakes as identity_fakes_v2
|
||||
from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes_v3
|
||||
from openstackclient.tests.unit.network.v2 import _test_tag
|
||||
from openstackclient.tests.unit.network.v2 import fakes as network_fakes
|
||||
from openstackclient.tests.unit import utils as tests_utils
|
||||
|
||||
@ -42,7 +41,7 @@ class TestNetwork(network_fakes.TestNetworkV2):
|
||||
self.domains_mock = self.app.client_manager.identity.domains
|
||||
|
||||
|
||||
class TestCreateNetworkIdentityV3(TestNetwork, _test_tag.TestCreateTagMixin):
|
||||
class TestCreateNetworkIdentityV3(TestNetwork):
|
||||
|
||||
project = identity_fakes_v3.FakeProject.create_one_project()
|
||||
domain = identity_fakes_v3.FakeDomain.create_one_domain()
|
||||
@ -115,22 +114,6 @@ class TestCreateNetworkIdentityV3(TestNetwork, _test_tag.TestCreateTagMixin):
|
||||
self.domains_mock.get.return_value = self.domain
|
||||
self.network.find_qos_policy = mock.Mock(return_value=self.qos_policy)
|
||||
|
||||
# TestCreateTagMixin
|
||||
self._tag_test_resource = self._network
|
||||
self._tag_create_resource_mock = self.network.create_network
|
||||
self._tag_create_required_arglist = [self._network.name]
|
||||
self._tag_create_required_verifylist = [
|
||||
('name', self._network.name),
|
||||
('enable', True),
|
||||
('share', None),
|
||||
('project', None),
|
||||
('external', False),
|
||||
]
|
||||
self._tag_create_required_attrs = {
|
||||
'admin_state_up': True,
|
||||
'name': self._network.name,
|
||||
}
|
||||
|
||||
def test_create_no_options(self):
|
||||
arglist = []
|
||||
verifylist = []
|
||||
@ -247,6 +230,44 @@ class TestCreateNetworkIdentityV3(TestNetwork, _test_tag.TestCreateTagMixin):
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(self.data, data)
|
||||
|
||||
def _test_create_with_tag(self, add_tags=True):
|
||||
arglist = [self._network.name]
|
||||
if add_tags:
|
||||
arglist += ['--tag', 'red', '--tag', 'blue']
|
||||
else:
|
||||
arglist += ['--no-tag']
|
||||
verifylist = [
|
||||
('name', self._network.name),
|
||||
('enable', True),
|
||||
('share', None),
|
||||
('project', None),
|
||||
('external', False),
|
||||
]
|
||||
if add_tags:
|
||||
verifylist.append(('tags', ['red', 'blue']))
|
||||
else:
|
||||
verifylist.append(('no_tag', True))
|
||||
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
columns, data = (self.cmd.take_action(parsed_args))
|
||||
|
||||
self.network.create_network.assert_called_once_with(
|
||||
name=self._network.name, admin_state_up=True)
|
||||
if add_tags:
|
||||
self.network.set_tags.assert_called_once_with(
|
||||
self._network,
|
||||
tests_utils.CompareBySet(['red', 'blue']))
|
||||
else:
|
||||
self.assertFalse(self.network.set_tags.called)
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(self.data, data)
|
||||
|
||||
def test_create_with_tags(self):
|
||||
self._test_create_with_tag(add_tags=True)
|
||||
|
||||
def test_create_with_no_tag(self):
|
||||
self._test_create_with_tag(add_tags=False)
|
||||
|
||||
|
||||
class TestCreateNetworkIdentityV2(TestNetwork):
|
||||
|
||||
@ -461,7 +482,7 @@ class TestDeleteNetwork(TestNetwork):
|
||||
self.network.delete_network.assert_has_calls(calls)
|
||||
|
||||
|
||||
class TestListNetwork(TestNetwork, _test_tag.TestListTagMixin):
|
||||
class TestListNetwork(TestNetwork):
|
||||
|
||||
# The networks going to be listed up.
|
||||
_network = network_fakes.FakeNetwork.create_networks(count=3)
|
||||
@ -820,8 +841,33 @@ class TestListNetwork(TestNetwork, _test_tag.TestListTagMixin):
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(list(data), list(self.data))
|
||||
|
||||
def test_list_with_tag_options(self):
|
||||
arglist = [
|
||||
'--tags', 'red,blue',
|
||||
'--any-tags', 'red,green',
|
||||
'--not-tags', 'orange,yellow',
|
||||
'--not-any-tags', 'black,white',
|
||||
]
|
||||
verifylist = [
|
||||
('tags', ['red', 'blue']),
|
||||
('any_tags', ['red', 'green']),
|
||||
('not_tags', ['orange', 'yellow']),
|
||||
('not_any_tags', ['black', 'white']),
|
||||
]
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
columns, data = self.cmd.take_action(parsed_args)
|
||||
|
||||
class TestSetNetwork(TestNetwork, _test_tag.TestSetTagMixin):
|
||||
self.network.networks.assert_called_once_with(
|
||||
**{'tags': 'red,blue',
|
||||
'any_tags': 'red,green',
|
||||
'not_tags': 'orange,yellow',
|
||||
'not_any_tags': 'black,white'}
|
||||
)
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(self.data, list(data))
|
||||
|
||||
|
||||
class TestSetNetwork(TestNetwork):
|
||||
|
||||
# The network to set.
|
||||
_network = network_fakes.FakeNetwork.create_one_network(
|
||||
@ -841,11 +887,6 @@ class TestSetNetwork(TestNetwork, _test_tag.TestSetTagMixin):
|
||||
# Get the command object to test
|
||||
self.cmd = network.SetNetwork(self.app, self.namespace)
|
||||
|
||||
# TestSetTagMixin
|
||||
self._tag_resource_name = 'network'
|
||||
self._tag_test_resource = self._network
|
||||
self._tag_update_resource_mock = self.network.update_network
|
||||
|
||||
def test_set_this(self):
|
||||
arglist = [
|
||||
self._network.name,
|
||||
@ -939,6 +980,34 @@ class TestSetNetwork(TestNetwork, _test_tag.TestSetTagMixin):
|
||||
self.assertFalse(self.network.set_tags.called)
|
||||
self.assertIsNone(result)
|
||||
|
||||
def _test_set_tags(self, with_tags=True):
|
||||
if with_tags:
|
||||
arglist = ['--tag', 'red', '--tag', 'blue']
|
||||
verifylist = [('tags', ['red', 'blue'])]
|
||||
expected_args = ['red', 'blue', 'green']
|
||||
else:
|
||||
arglist = ['--no-tag']
|
||||
verifylist = [('no_tag', True)]
|
||||
expected_args = []
|
||||
arglist.append(self._network.name)
|
||||
verifylist.append(
|
||||
('network', self._network.name))
|
||||
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
result = self.cmd.take_action(parsed_args)
|
||||
|
||||
self.assertFalse(self.network.update_network.called)
|
||||
self.network.set_tags.assert_called_once_with(
|
||||
self._network,
|
||||
tests_utils.CompareBySet(expected_args))
|
||||
self.assertIsNone(result)
|
||||
|
||||
def test_set_with_tags(self):
|
||||
self._test_set_tags(with_tags=True)
|
||||
|
||||
def test_set_with_no_tag(self):
|
||||
self._test_set_tags(with_tags=False)
|
||||
|
||||
|
||||
class TestShowNetwork(TestNetwork):
|
||||
|
||||
@ -1024,7 +1093,7 @@ class TestShowNetwork(TestNetwork):
|
||||
self.assertEqual(self.data, data)
|
||||
|
||||
|
||||
class TestUnsetNetwork(TestNetwork, _test_tag.TestUnsetTagMixin):
|
||||
class TestUnsetNetwork(TestNetwork):
|
||||
|
||||
# The network to set.
|
||||
_network = network_fakes.FakeNetwork.create_one_network(
|
||||
@ -1044,11 +1113,6 @@ class TestUnsetNetwork(TestNetwork, _test_tag.TestUnsetTagMixin):
|
||||
# Get the command object to test
|
||||
self.cmd = network.UnsetNetwork(self.app, self.namespace)
|
||||
|
||||
# TestUnsetNetwork
|
||||
self._tag_resource_name = 'network'
|
||||
self._tag_test_resource = self._network
|
||||
self._tag_update_resource_mock = self.network.update_network
|
||||
|
||||
def test_unset_nothing(self):
|
||||
arglist = [self._network.name, ]
|
||||
verifylist = [('network', self._network.name), ]
|
||||
@ -1059,3 +1123,31 @@ class TestUnsetNetwork(TestNetwork, _test_tag.TestUnsetTagMixin):
|
||||
self.assertFalse(self.network.update_network.called)
|
||||
self.assertFalse(self.network.set_tags.called)
|
||||
self.assertIsNone(result)
|
||||
|
||||
def _test_unset_tags(self, with_tags=True):
|
||||
if with_tags:
|
||||
arglist = ['--tag', 'red', '--tag', 'blue']
|
||||
verifylist = [('tags', ['red', 'blue'])]
|
||||
expected_args = ['green']
|
||||
else:
|
||||
arglist = ['--all-tag']
|
||||
verifylist = [('all_tag', True)]
|
||||
expected_args = []
|
||||
arglist.append(self._network.name)
|
||||
verifylist.append(
|
||||
('network', self._network.name))
|
||||
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
result = self.cmd.take_action(parsed_args)
|
||||
|
||||
self.assertFalse(self.network.update_network.called)
|
||||
self.network.set_tags.assert_called_once_with(
|
||||
self._network,
|
||||
tests_utils.CompareBySet(expected_args))
|
||||
self.assertIsNone(result)
|
||||
|
||||
def test_unset_with_tags(self):
|
||||
self._test_unset_tags(with_tags=True)
|
||||
|
||||
def test_unset_with_all_tag(self):
|
||||
self._test_unset_tags(with_tags=False)
|
||||
|
@ -21,7 +21,6 @@ from osc_lib import utils
|
||||
from openstackclient.network.v2 import port
|
||||
from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
|
||||
from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
|
||||
from openstackclient.tests.unit.network.v2 import _test_tag
|
||||
from openstackclient.tests.unit.network.v2 import fakes as network_fakes
|
||||
from openstackclient.tests.unit import utils as tests_utils
|
||||
|
||||
@ -97,7 +96,7 @@ class TestPort(network_fakes.TestNetworkV2):
|
||||
return columns, data
|
||||
|
||||
|
||||
class TestCreatePort(TestPort, _test_tag.TestCreateTagMixin):
|
||||
class TestCreatePort(TestPort):
|
||||
|
||||
_port = network_fakes.FakePort.create_one_port()
|
||||
columns, data = TestPort._get_common_cols_data(_port)
|
||||
@ -116,24 +115,6 @@ class TestCreatePort(TestPort, _test_tag.TestCreateTagMixin):
|
||||
# Get the command object to test
|
||||
self.cmd = port.CreatePort(self.app, self.namespace)
|
||||
|
||||
# TestUnsetTagMixin
|
||||
self._tag_test_resource = self._port
|
||||
self._tag_create_resource_mock = self.network.create_port
|
||||
self._tag_create_required_arglist = [
|
||||
'--network', self._port.network_id,
|
||||
'test-port',
|
||||
]
|
||||
self._tag_create_required_verifylist = [
|
||||
('network', self._port.network_id,),
|
||||
('enable', True),
|
||||
('name', 'test-port'),
|
||||
]
|
||||
self._tag_create_required_attrs = {
|
||||
'admin_state_up': True,
|
||||
'network_id': self._port.network_id,
|
||||
'name': 'test-port',
|
||||
}
|
||||
|
||||
def test_create_default_options(self):
|
||||
arglist = [
|
||||
'--network', self._port.network_id,
|
||||
@ -517,6 +498,48 @@ class TestCreatePort(TestPort, _test_tag.TestCreateTagMixin):
|
||||
'name': 'test-port',
|
||||
})
|
||||
|
||||
def _test_create_with_tag(self, add_tags=True):
|
||||
arglist = [
|
||||
'--network', self._port.network_id,
|
||||
'test-port',
|
||||
]
|
||||
if add_tags:
|
||||
arglist += ['--tag', 'red', '--tag', 'blue']
|
||||
else:
|
||||
arglist += ['--no-tag']
|
||||
verifylist = [
|
||||
('network', self._port.network_id,),
|
||||
('enable', True),
|
||||
('name', 'test-port'),
|
||||
]
|
||||
if add_tags:
|
||||
verifylist.append(('tags', ['red', 'blue']))
|
||||
else:
|
||||
verifylist.append(('no_tag', True))
|
||||
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
columns, data = (self.cmd.take_action(parsed_args))
|
||||
|
||||
self.network.create_port.assert_called_once_with(
|
||||
admin_state_up=True,
|
||||
network_id=self._port.network_id,
|
||||
name='test-port'
|
||||
)
|
||||
if add_tags:
|
||||
self.network.set_tags.assert_called_once_with(
|
||||
self._port,
|
||||
tests_utils.CompareBySet(['red', 'blue']))
|
||||
else:
|
||||
self.assertFalse(self.network.set_tags.called)
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(self.data, data)
|
||||
|
||||
def test_create_with_tags(self):
|
||||
self._test_create_with_tag(add_tags=True)
|
||||
|
||||
def test_create_with_no_tag(self):
|
||||
self._test_create_with_tag(add_tags=False)
|
||||
|
||||
|
||||
class TestDeletePort(TestPort):
|
||||
|
||||
@ -597,7 +620,7 @@ class TestDeletePort(TestPort):
|
||||
)
|
||||
|
||||
|
||||
class TestListPort(TestPort, _test_tag.TestListTagMixin):
|
||||
class TestListPort(TestPort):
|
||||
|
||||
_ports = network_fakes.FakePort.create_ports(count=3)
|
||||
|
||||
@ -658,8 +681,6 @@ class TestListPort(TestPort, _test_tag.TestListTagMixin):
|
||||
self.network.find_router = mock.Mock(return_value=fake_router)
|
||||
self.network.find_network = mock.Mock(return_value=fake_network)
|
||||
self.app.client_manager.compute = mock.Mock()
|
||||
# TestUnsetTagMixin
|
||||
self._tag_list_resource_mock = self.network.ports
|
||||
|
||||
def test_port_list_no_options(self):
|
||||
arglist = []
|
||||
@ -919,8 +940,33 @@ class TestListPort(TestPort, _test_tag.TestListTagMixin):
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(self.data, list(data))
|
||||
|
||||
def test_list_with_tag_options(self):
|
||||
arglist = [
|
||||
'--tags', 'red,blue',
|
||||
'--any-tags', 'red,green',
|
||||
'--not-tags', 'orange,yellow',
|
||||
'--not-any-tags', 'black,white',
|
||||
]
|
||||
verifylist = [
|
||||
('tags', ['red', 'blue']),
|
||||
('any_tags', ['red', 'green']),
|
||||
('not_tags', ['orange', 'yellow']),
|
||||
('not_any_tags', ['black', 'white']),
|
||||
]
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
columns, data = self.cmd.take_action(parsed_args)
|
||||
|
||||
class TestSetPort(TestPort, _test_tag.TestSetTagMixin):
|
||||
self.network.ports.assert_called_once_with(
|
||||
**{'tags': 'red,blue',
|
||||
'any_tags': 'red,green',
|
||||
'not_tags': 'orange,yellow',
|
||||
'not_any_tags': 'black,white'}
|
||||
)
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(self.data, list(data))
|
||||
|
||||
|
||||
class TestSetPort(TestPort):
|
||||
|
||||
_port = network_fakes.FakePort.create_one_port({'tags': ['green', 'red']})
|
||||
|
||||
@ -934,10 +980,6 @@ class TestSetPort(TestPort, _test_tag.TestSetTagMixin):
|
||||
|
||||
# Get the command object to test
|
||||
self.cmd = port.SetPort(self.app, self.namespace)
|
||||
# TestSetTagMixin
|
||||
self._tag_resource_name = 'port'
|
||||
self._tag_test_resource = self._port
|
||||
self._tag_update_resource_mock = self.network.update_port
|
||||
|
||||
def test_set_port_defaults(self):
|
||||
arglist = [
|
||||
@ -1430,6 +1472,34 @@ class TestSetPort(TestPort, _test_tag.TestSetTagMixin):
|
||||
arglist,
|
||||
None)
|
||||
|
||||
def _test_set_tags(self, with_tags=True):
|
||||
if with_tags:
|
||||
arglist = ['--tag', 'red', '--tag', 'blue']
|
||||
verifylist = [('tags', ['red', 'blue'])]
|
||||
expected_args = ['red', 'blue', 'green']
|
||||
else:
|
||||
arglist = ['--no-tag']
|
||||
verifylist = [('no_tag', True)]
|
||||
expected_args = []
|
||||
arglist.append(self._port.name)
|
||||
verifylist.append(
|
||||
('port', self._port.name))
|
||||
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
result = self.cmd.take_action(parsed_args)
|
||||
|
||||
self.assertFalse(self.network.update_port.called)
|
||||
self.network.set_tags.assert_called_once_with(
|
||||
self._port,
|
||||
tests_utils.CompareBySet(expected_args))
|
||||
self.assertIsNone(result)
|
||||
|
||||
def test_set_with_tags(self):
|
||||
self._test_set_tags(with_tags=True)
|
||||
|
||||
def test_set_with_no_tag(self):
|
||||
self._test_set_tags(with_tags=False)
|
||||
|
||||
|
||||
class TestShowPort(TestPort):
|
||||
|
||||
@ -1470,7 +1540,7 @@ class TestShowPort(TestPort):
|
||||
self.assertEqual(self.data, data)
|
||||
|
||||
|
||||
class TestUnsetPort(TestPort, _test_tag.TestUnsetTagMixin):
|
||||
class TestUnsetPort(TestPort):
|
||||
|
||||
def setUp(self):
|
||||
super(TestUnsetPort, self).setUp()
|
||||
@ -1489,10 +1559,6 @@ class TestUnsetPort(TestPort, _test_tag.TestUnsetTagMixin):
|
||||
self.network.set_tags = mock.Mock(return_value=None)
|
||||
# Get the command object to test
|
||||
self.cmd = port.UnsetPort(self.app, self.namespace)
|
||||
# TestUnsetTagMixin
|
||||
self._tag_resource_name = 'port'
|
||||
self._tag_test_resource = self._testport
|
||||
self._tag_update_resource_mock = self.network.update_port
|
||||
|
||||
def test_unset_port_parameters(self):
|
||||
arglist = [
|
||||
@ -1661,3 +1727,31 @@ class TestUnsetPort(TestPort, _test_tag.TestUnsetTagMixin):
|
||||
|
||||
self.network.update_port.assert_called_once_with(_fake_port, **attrs)
|
||||
self.assertIsNone(result)
|
||||
|
||||
def _test_unset_tags(self, with_tags=True):
|
||||
if with_tags:
|
||||
arglist = ['--tag', 'red', '--tag', 'blue']
|
||||
verifylist = [('tags', ['red', 'blue'])]
|
||||
expected_args = ['green']
|
||||
else:
|
||||
arglist = ['--all-tag']
|
||||
verifylist = [('all_tag', True)]
|
||||
expected_args = []
|
||||
arglist.append(self._testport.name)
|
||||
verifylist.append(
|
||||
('port', self._testport.name))
|
||||
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
result = self.cmd.take_action(parsed_args)
|
||||
|
||||
self.assertFalse(self.network.update_port.called)
|
||||
self.network.set_tags.assert_called_once_with(
|
||||
self._testport,
|
||||
tests_utils.CompareBySet(expected_args))
|
||||
self.assertIsNone(result)
|
||||
|
||||
def test_unset_with_tags(self):
|
||||
self._test_unset_tags(with_tags=True)
|
||||
|
||||
def test_unset_with_all_tag(self):
|
||||
self._test_unset_tags(with_tags=False)
|
||||
|
@ -19,7 +19,6 @@ from osc_lib import utils as osc_utils
|
||||
|
||||
from openstackclient.network.v2 import router
|
||||
from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes_v3
|
||||
from openstackclient.tests.unit.network.v2 import _test_tag
|
||||
from openstackclient.tests.unit.network.v2 import fakes as network_fakes
|
||||
from openstackclient.tests.unit import utils as tests_utils
|
||||
|
||||
@ -112,7 +111,7 @@ class TestAddSubnetToRouter(TestRouter):
|
||||
self.assertIsNone(result)
|
||||
|
||||
|
||||
class TestCreateRouter(TestRouter, _test_tag.TestCreateTagMixin):
|
||||
class TestCreateRouter(TestRouter):
|
||||
|
||||
# The new router created.
|
||||
new_router = network_fakes.FakeRouter.create_one_router()
|
||||
@ -157,23 +156,6 @@ class TestCreateRouter(TestRouter, _test_tag.TestCreateTagMixin):
|
||||
# Get the command object to test
|
||||
self.cmd = router.CreateRouter(self.app, self.namespace)
|
||||
|
||||
# TestCreateTagMixin
|
||||
self._tag_test_resource = self.new_router
|
||||
self._tag_create_resource_mock = self.network.create_router
|
||||
self._tag_create_required_arglist = [
|
||||
self.new_router.name,
|
||||
]
|
||||
self._tag_create_required_verifylist = [
|
||||
('name', self.new_router.name),
|
||||
('enable', True),
|
||||
('distributed', False),
|
||||
('ha', False),
|
||||
]
|
||||
self._tag_create_required_attrs = {
|
||||
'admin_state_up': True,
|
||||
'name': self.new_router.name,
|
||||
}
|
||||
|
||||
def test_create_no_options(self):
|
||||
arglist = []
|
||||
verifylist = []
|
||||
@ -288,6 +270,45 @@ class TestCreateRouter(TestRouter, _test_tag.TestCreateTagMixin):
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(self.data, data)
|
||||
|
||||
def _test_create_with_tag(self, add_tags=True):
|
||||
arglist = [self.new_router.name]
|
||||
if add_tags:
|
||||
arglist += ['--tag', 'red', '--tag', 'blue']
|
||||
else:
|
||||
arglist += ['--no-tag']
|
||||
verifylist = [
|
||||
('name', self.new_router.name),
|
||||
('enable', True),
|
||||
('distributed', False),
|
||||
('ha', False),
|
||||
]
|
||||
if add_tags:
|
||||
verifylist.append(('tags', ['red', 'blue']))
|
||||
else:
|
||||
verifylist.append(('no_tag', True))
|
||||
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
columns, data = (self.cmd.take_action(parsed_args))
|
||||
|
||||
self.network.create_router.assert_called_once_with(
|
||||
name=self.new_router.name,
|
||||
admin_state_up=True
|
||||
)
|
||||
if add_tags:
|
||||
self.network.set_tags.assert_called_once_with(
|
||||
self.new_router,
|
||||
tests_utils.CompareBySet(['red', 'blue']))
|
||||
else:
|
||||
self.assertFalse(self.network.set_tags.called)
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(self.data, data)
|
||||
|
||||
def test_create_with_tags(self):
|
||||
self._test_create_with_tag(add_tags=True)
|
||||
|
||||
def test_create_with_no_tag(self):
|
||||
self._test_create_with_tag(add_tags=False)
|
||||
|
||||
|
||||
class TestDeleteRouter(TestRouter):
|
||||
|
||||
@ -368,7 +389,7 @@ class TestDeleteRouter(TestRouter):
|
||||
)
|
||||
|
||||
|
||||
class TestListRouter(TestRouter, _test_tag.TestListTagMixin):
|
||||
class TestListRouter(TestRouter):
|
||||
|
||||
# The routers going to be listed up.
|
||||
routers = network_fakes.FakeRouter.create_routers(count=3)
|
||||
@ -459,9 +480,6 @@ class TestListRouter(TestRouter, _test_tag.TestListTagMixin):
|
||||
self.network.get_agent = mock.Mock(return_value=self._testagent)
|
||||
self.network.get_router = mock.Mock(return_value=self.routers[0])
|
||||
|
||||
# TestListTagMixin
|
||||
self._tag_list_resource_mock = self.network.routers
|
||||
|
||||
def test_router_list_no_options(self):
|
||||
arglist = []
|
||||
verifylist = [
|
||||
@ -636,6 +654,31 @@ class TestListRouter(TestRouter, _test_tag.TestListTagMixin):
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(self.data, list(data))
|
||||
|
||||
def test_list_with_tag_options(self):
|
||||
arglist = [
|
||||
'--tags', 'red,blue',
|
||||
'--any-tags', 'red,green',
|
||||
'--not-tags', 'orange,yellow',
|
||||
'--not-any-tags', 'black,white',
|
||||
]
|
||||
verifylist = [
|
||||
('tags', ['red', 'blue']),
|
||||
('any_tags', ['red', 'green']),
|
||||
('not_tags', ['orange', 'yellow']),
|
||||
('not_any_tags', ['black', 'white']),
|
||||
]
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
columns, data = self.cmd.take_action(parsed_args)
|
||||
|
||||
self.network.routers.assert_called_once_with(
|
||||
**{'tags': 'red,blue',
|
||||
'any_tags': 'red,green',
|
||||
'not_tags': 'orange,yellow',
|
||||
'not_any_tags': 'black,white'}
|
||||
)
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(self.data, list(data))
|
||||
|
||||
|
||||
class TestRemovePortFromRouter(TestRouter):
|
||||
'''Remove port from a Router '''
|
||||
@ -714,7 +757,7 @@ class TestRemoveSubnetFromRouter(TestRouter):
|
||||
self.assertIsNone(result)
|
||||
|
||||
|
||||
class TestSetRouter(TestRouter, _test_tag.TestSetTagMixin):
|
||||
class TestSetRouter(TestRouter):
|
||||
|
||||
# The router to set.
|
||||
_default_route = {'destination': '10.20.20.0/24', 'nexthop': '10.20.30.1'}
|
||||
@ -736,11 +779,6 @@ class TestSetRouter(TestRouter, _test_tag.TestSetTagMixin):
|
||||
# Get the command object to test
|
||||
self.cmd = router.SetRouter(self.app, self.namespace)
|
||||
|
||||
# TestSetTagMixin
|
||||
self._tag_resource_name = 'router'
|
||||
self._tag_test_resource = self._router
|
||||
self._tag_update_resource_mock = self.network.update_router
|
||||
|
||||
def test_set_this(self):
|
||||
arglist = [
|
||||
self._router.name,
|
||||
@ -1047,6 +1085,34 @@ class TestSetRouter(TestRouter, _test_tag.TestSetTagMixin):
|
||||
'enable_snat': True, }})
|
||||
self.assertIsNone(result)
|
||||
|
||||
def _test_set_tags(self, with_tags=True):
|
||||
if with_tags:
|
||||
arglist = ['--tag', 'red', '--tag', 'blue']
|
||||
verifylist = [('tags', ['red', 'blue'])]
|
||||
expected_args = ['red', 'blue', 'green']
|
||||
else:
|
||||
arglist = ['--no-tag']
|
||||
verifylist = [('no_tag', True)]
|
||||
expected_args = []
|
||||
arglist.append(self._router.name)
|
||||
verifylist.append(
|
||||
('router', self._router.name))
|
||||
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
result = self.cmd.take_action(parsed_args)
|
||||
|
||||
self.assertFalse(self.network.update_router.called)
|
||||
self.network.set_tags.assert_called_once_with(
|
||||
self._router,
|
||||
tests_utils.CompareBySet(expected_args))
|
||||
self.assertIsNone(result)
|
||||
|
||||
def test_set_with_tags(self):
|
||||
self._test_set_tags(with_tags=True)
|
||||
|
||||
def test_set_with_no_tag(self):
|
||||
self._test_set_tags(with_tags=False)
|
||||
|
||||
|
||||
class TestShowRouter(TestRouter):
|
||||
|
||||
@ -1132,10 +1198,6 @@ class TestUnsetRouter(TestRouter):
|
||||
self.network.set_tags = mock.Mock(return_value=None)
|
||||
# Get the command object to test
|
||||
self.cmd = router.UnsetRouter(self.app, self.namespace)
|
||||
# TestUnsetTagMixin
|
||||
self._tag_resource_name = 'router'
|
||||
self._tag_test_resource = self._testrouter
|
||||
self._tag_update_resource_mock = self.network.update_router
|
||||
|
||||
def test_unset_router_params(self):
|
||||
arglist = [
|
||||
@ -1184,3 +1246,31 @@ class TestUnsetRouter(TestRouter):
|
||||
self.network.update_router.assert_called_once_with(
|
||||
self._testrouter, **attrs)
|
||||
self.assertIsNone(result)
|
||||
|
||||
def _test_unset_tags(self, with_tags=True):
|
||||
if with_tags:
|
||||
arglist = ['--tag', 'red', '--tag', 'blue']
|
||||
verifylist = [('tags', ['red', 'blue'])]
|
||||
expected_args = ['green']
|
||||
else:
|
||||
arglist = ['--all-tag']
|
||||
verifylist = [('all_tag', True)]
|
||||
expected_args = []
|
||||
arglist.append(self._testrouter.name)
|
||||
verifylist.append(
|
||||
('router', self._testrouter.name))
|
||||
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
result = self.cmd.take_action(parsed_args)
|
||||
|
||||
self.assertFalse(self.network.update_router.called)
|
||||
self.network.set_tags.assert_called_once_with(
|
||||
self._testrouter,
|
||||
tests_utils.CompareBySet(expected_args))
|
||||
self.assertIsNone(result)
|
||||
|
||||
def test_unset_with_tags(self):
|
||||
self._test_unset_tags(with_tags=True)
|
||||
|
||||
def test_unset_with_all_tag(self):
|
||||
self._test_unset_tags(with_tags=False)
|
||||
|
@ -19,7 +19,6 @@ from osc_lib import utils
|
||||
|
||||
from openstackclient.network.v2 import subnet as subnet_v2
|
||||
from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes_v3
|
||||
from openstackclient.tests.unit.network.v2 import _test_tag
|
||||
from openstackclient.tests.unit.network.v2 import fakes as network_fakes
|
||||
from openstackclient.tests.unit import utils as tests_utils
|
||||
|
||||
@ -37,7 +36,7 @@ class TestSubnet(network_fakes.TestNetworkV2):
|
||||
self.domains_mock = self.app.client_manager.identity.domains
|
||||
|
||||
|
||||
class TestCreateSubnet(TestSubnet, _test_tag.TestCreateTagMixin):
|
||||
class TestCreateSubnet(TestSubnet):
|
||||
|
||||
project = identity_fakes_v3.FakeProject.create_one_project()
|
||||
domain = identity_fakes_v3.FakeDomain.create_one_domain()
|
||||
@ -212,28 +211,6 @@ class TestCreateSubnet(TestSubnet, _test_tag.TestCreateTagMixin):
|
||||
return_value=self._subnet_pool
|
||||
)
|
||||
|
||||
# TestUnsetTagMixin
|
||||
self._tag_test_resource = self._subnet
|
||||
self._tag_create_resource_mock = self.network.create_subnet
|
||||
self._tag_create_required_arglist = [
|
||||
"--subnet-range", self._subnet.cidr,
|
||||
"--network", self._subnet.network_id,
|
||||
self._subnet.name,
|
||||
]
|
||||
self._tag_create_required_verifylist = [
|
||||
('name', self._subnet.name),
|
||||
('subnet_range', self._subnet.cidr),
|
||||
('network', self._subnet.network_id),
|
||||
('ip_version', self._subnet.ip_version),
|
||||
('gateway', 'auto'),
|
||||
]
|
||||
self._tag_create_required_attrs = {
|
||||
'cidr': self._subnet.cidr,
|
||||
'ip_version': self._subnet.ip_version,
|
||||
'name': self._subnet.name,
|
||||
'network_id': self._subnet.network_id,
|
||||
}
|
||||
|
||||
def test_create_no_options(self):
|
||||
arglist = []
|
||||
verifylist = []
|
||||
@ -478,6 +455,51 @@ class TestCreateSubnet(TestSubnet, _test_tag.TestCreateTagMixin):
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(self.data, data)
|
||||
|
||||
def _test_create_with_tag(self, add_tags=True):
|
||||
arglist = [
|
||||
"--subnet-range", self._subnet.cidr,
|
||||
"--network", self._subnet.network_id,
|
||||
self._subnet.name,
|
||||
]
|
||||
if add_tags:
|
||||
arglist += ['--tag', 'red', '--tag', 'blue']
|
||||
else:
|
||||
arglist += ['--no-tag']
|
||||
verifylist = [
|
||||
('name', self._subnet.name),
|
||||
('subnet_range', self._subnet.cidr),
|
||||
('network', self._subnet.network_id),
|
||||
('ip_version', self._subnet.ip_version),
|
||||
('gateway', 'auto'),
|
||||
]
|
||||
if add_tags:
|
||||
verifylist.append(('tags', ['red', 'blue']))
|
||||
else:
|
||||
verifylist.append(('no_tag', True))
|
||||
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
columns, data = (self.cmd.take_action(parsed_args))
|
||||
|
||||
self.network.create_subnet.assert_called_once_with(
|
||||
cidr=self._subnet.cidr,
|
||||
ip_version=self._subnet.ip_version,
|
||||
name=self._subnet.name,
|
||||
network_id=self._subnet.network_id)
|
||||
if add_tags:
|
||||
self.network.set_tags.assert_called_once_with(
|
||||
self._subnet,
|
||||
tests_utils.CompareBySet(['red', 'blue']))
|
||||
else:
|
||||
self.assertFalse(self.network.set_tags.called)
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(self.data, data)
|
||||
|
||||
def test_create_with_tags(self):
|
||||
self._test_create_with_tag(add_tags=True)
|
||||
|
||||
def test_create_with_no_tag(self):
|
||||
self._test_create_with_tag(add_tags=False)
|
||||
|
||||
|
||||
class TestDeleteSubnet(TestSubnet):
|
||||
|
||||
@ -558,7 +580,7 @@ class TestDeleteSubnet(TestSubnet):
|
||||
)
|
||||
|
||||
|
||||
class TestListSubnet(TestSubnet, _test_tag.TestListTagMixin):
|
||||
class TestListSubnet(TestSubnet):
|
||||
# The subnets going to be listed up.
|
||||
_subnet = network_fakes.FakeSubnet.create_subnets(count=3)
|
||||
|
||||
@ -615,9 +637,6 @@ class TestListSubnet(TestSubnet, _test_tag.TestListTagMixin):
|
||||
|
||||
self.network.subnets = mock.Mock(return_value=self._subnet)
|
||||
|
||||
# TestUnsetTagMixin
|
||||
self._tag_list_resource_mock = self.network.subnets
|
||||
|
||||
def test_subnet_list_no_options(self):
|
||||
arglist = []
|
||||
verifylist = [
|
||||
@ -837,8 +856,33 @@ class TestListSubnet(TestSubnet, _test_tag.TestListTagMixin):
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(self.data, list(data))
|
||||
|
||||
def test_list_with_tag_options(self):
|
||||
arglist = [
|
||||
'--tags', 'red,blue',
|
||||
'--any-tags', 'red,green',
|
||||
'--not-tags', 'orange,yellow',
|
||||
'--not-any-tags', 'black,white',
|
||||
]
|
||||
verifylist = [
|
||||
('tags', ['red', 'blue']),
|
||||
('any_tags', ['red', 'green']),
|
||||
('not_tags', ['orange', 'yellow']),
|
||||
('not_any_tags', ['black', 'white']),
|
||||
]
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
columns, data = self.cmd.take_action(parsed_args)
|
||||
|
||||
class TestSetSubnet(TestSubnet, _test_tag.TestSetTagMixin):
|
||||
self.network.subnets.assert_called_once_with(
|
||||
**{'tags': 'red,blue',
|
||||
'any_tags': 'red,green',
|
||||
'not_tags': 'orange,yellow',
|
||||
'not_any_tags': 'black,white'}
|
||||
)
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(self.data, list(data))
|
||||
|
||||
|
||||
class TestSetSubnet(TestSubnet):
|
||||
|
||||
_subnet = network_fakes.FakeSubnet.create_one_subnet(
|
||||
{'tags': ['green', 'red']})
|
||||
@ -849,10 +893,6 @@ class TestSetSubnet(TestSubnet, _test_tag.TestSetTagMixin):
|
||||
self.network.set_tags = mock.Mock(return_value=None)
|
||||
self.network.find_subnet = mock.Mock(return_value=self._subnet)
|
||||
self.cmd = subnet_v2.SetSubnet(self.app, self.namespace)
|
||||
# TestSetTagMixin
|
||||
self._tag_resource_name = 'subnet'
|
||||
self._tag_test_resource = self._subnet
|
||||
self._tag_update_resource_mock = self.network.update_subnet
|
||||
|
||||
def test_set_this(self):
|
||||
arglist = [
|
||||
@ -1001,6 +1041,34 @@ class TestSetSubnet(TestSubnet, _test_tag.TestSetTagMixin):
|
||||
_testsubnet, **attrs)
|
||||
self.assertIsNone(result)
|
||||
|
||||
def _test_set_tags(self, with_tags=True):
|
||||
if with_tags:
|
||||
arglist = ['--tag', 'red', '--tag', 'blue']
|
||||
verifylist = [('tags', ['red', 'blue'])]
|
||||
expected_args = ['red', 'blue', 'green']
|
||||
else:
|
||||
arglist = ['--no-tag']
|
||||
verifylist = [('no_tag', True)]
|
||||
expected_args = []
|
||||
arglist.append(self._subnet.name)
|
||||
verifylist.append(
|
||||
('subnet', self._subnet.name))
|
||||
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
result = self.cmd.take_action(parsed_args)
|
||||
|
||||
self.assertFalse(self.network.update_subnet.called)
|
||||
self.network.set_tags.assert_called_once_with(
|
||||
self._subnet,
|
||||
tests_utils.CompareBySet(expected_args))
|
||||
self.assertIsNone(result)
|
||||
|
||||
def test_set_with_tags(self):
|
||||
self._test_set_tags(with_tags=True)
|
||||
|
||||
def test_set_with_no_tag(self):
|
||||
self._test_set_tags(with_tags=False)
|
||||
|
||||
|
||||
class TestShowSubnet(TestSubnet):
|
||||
# The subnets to be shown
|
||||
@ -1083,7 +1151,7 @@ class TestShowSubnet(TestSubnet):
|
||||
self.assertEqual(self.data, data)
|
||||
|
||||
|
||||
class TestUnsetSubnet(TestSubnet, _test_tag.TestUnsetTagMixin):
|
||||
class TestUnsetSubnet(TestSubnet):
|
||||
|
||||
def setUp(self):
|
||||
super(TestUnsetSubnet, self).setUp()
|
||||
@ -1106,10 +1174,6 @@ class TestUnsetSubnet(TestSubnet, _test_tag.TestUnsetTagMixin):
|
||||
self.network.set_tags = mock.Mock(return_value=None)
|
||||
# Get the command object to test
|
||||
self.cmd = subnet_v2.UnsetSubnet(self.app, self.namespace)
|
||||
# TestUnsetTagMixin
|
||||
self._tag_resource_name = 'subnet'
|
||||
self._tag_test_resource = self._testsubnet
|
||||
self._tag_update_resource_mock = self.network.update_subnet
|
||||
|
||||
def test_unset_subnet_params(self):
|
||||
arglist = [
|
||||
@ -1219,3 +1283,31 @@ class TestUnsetSubnet(TestSubnet, _test_tag.TestUnsetTagMixin):
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
self.assertRaises(exceptions.CommandError,
|
||||
self.cmd.take_action, parsed_args)
|
||||
|
||||
def _test_unset_tags(self, with_tags=True):
|
||||
if with_tags:
|
||||
arglist = ['--tag', 'red', '--tag', 'blue']
|
||||
verifylist = [('tags', ['red', 'blue'])]
|
||||
expected_args = ['green']
|
||||
else:
|
||||
arglist = ['--all-tag']
|
||||
verifylist = [('all_tag', True)]
|
||||
expected_args = []
|
||||
arglist.append(self._testsubnet.name)
|
||||
verifylist.append(
|
||||
('subnet', self._testsubnet.name))
|
||||
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
result = self.cmd.take_action(parsed_args)
|
||||
|
||||
self.assertFalse(self.network.update_subnet.called)
|
||||
self.network.set_tags.assert_called_once_with(
|
||||
self._testsubnet,
|
||||
tests_utils.CompareBySet(expected_args))
|
||||
self.assertIsNone(result)
|
||||
|
||||
def test_unset_with_tags(self):
|
||||
self._test_unset_tags(with_tags=True)
|
||||
|
||||
def test_unset_with_all_tag(self):
|
||||
self._test_unset_tags(with_tags=False)
|
||||
|
@ -20,7 +20,6 @@ from osc_lib import utils
|
||||
|
||||
from openstackclient.network.v2 import subnet_pool
|
||||
from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes_v3
|
||||
from openstackclient.tests.unit.network.v2 import _test_tag
|
||||
from openstackclient.tests.unit.network.v2 import fakes as network_fakes
|
||||
from openstackclient.tests.unit import utils as tests_utils
|
||||
|
||||
@ -38,7 +37,7 @@ class TestSubnetPool(network_fakes.TestNetworkV2):
|
||||
self.domains_mock = self.app.client_manager.identity.domains
|
||||
|
||||
|
||||
class TestCreateSubnetPool(TestSubnetPool, _test_tag.TestCreateTagMixin):
|
||||
class TestCreateSubnetPool(TestSubnetPool):
|
||||
|
||||
project = identity_fakes_v3.FakeProject.create_one_project()
|
||||
domain = identity_fakes_v3.FakeDomain.create_one_domain()
|
||||
@ -96,22 +95,6 @@ class TestCreateSubnetPool(TestSubnetPool, _test_tag.TestCreateTagMixin):
|
||||
self.projects_mock.get.return_value = self.project
|
||||
self.domains_mock.get.return_value = self.domain
|
||||
|
||||
# TestUnsetTagMixin
|
||||
self._tag_test_resource = self._subnet_pool
|
||||
self._tag_create_resource_mock = self.network.create_subnet_pool
|
||||
self._tag_create_required_arglist = [
|
||||
'--pool-prefix', '10.0.10.0/24',
|
||||
self._subnet_pool.name,
|
||||
]
|
||||
self._tag_create_required_verifylist = [
|
||||
('prefixes', ['10.0.10.0/24']),
|
||||
('name', self._subnet_pool.name),
|
||||
]
|
||||
self._tag_create_required_attrs = {
|
||||
'prefixes': ['10.0.10.0/24'],
|
||||
'name': self._subnet_pool.name,
|
||||
}
|
||||
|
||||
def test_create_no_options(self):
|
||||
arglist = []
|
||||
verifylist = []
|
||||
@ -313,6 +296,46 @@ class TestCreateSubnetPool(TestSubnetPool, _test_tag.TestCreateTagMixin):
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(self.data, data)
|
||||
|
||||
def _test_create_with_tag(self, add_tags=True):
|
||||
arglist = [
|
||||
'--pool-prefix', '10.0.10.0/24',
|
||||
self._subnet_pool.name,
|
||||
]
|
||||
if add_tags:
|
||||
arglist += ['--tag', 'red', '--tag', 'blue']
|
||||
else:
|
||||
arglist += ['--no-tag']
|
||||
verifylist = [
|
||||
('prefixes', ['10.0.10.0/24']),
|
||||
('name', self._subnet_pool.name),
|
||||
]
|
||||
if add_tags:
|
||||
verifylist.append(('tags', ['red', 'blue']))
|
||||
else:
|
||||
verifylist.append(('no_tag', True))
|
||||
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
columns, data = (self.cmd.take_action(parsed_args))
|
||||
|
||||
self.network.create_subnet_pool.assert_called_once_with(
|
||||
prefixes=['10.0.10.0/24'],
|
||||
name=self._subnet_pool.name
|
||||
)
|
||||
if add_tags:
|
||||
self.network.set_tags.assert_called_once_with(
|
||||
self._subnet_pool,
|
||||
tests_utils.CompareBySet(['red', 'blue']))
|
||||
else:
|
||||
self.assertFalse(self.network.set_tags.called)
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(self.data, data)
|
||||
|
||||
def test_create_with_tags(self):
|
||||
self._test_create_with_tag(add_tags=True)
|
||||
|
||||
def test_create_with_no_tag(self):
|
||||
self._test_create_with_tag(add_tags=False)
|
||||
|
||||
|
||||
class TestDeleteSubnetPool(TestSubnetPool):
|
||||
|
||||
@ -396,7 +419,7 @@ class TestDeleteSubnetPool(TestSubnetPool):
|
||||
)
|
||||
|
||||
|
||||
class TestListSubnetPool(TestSubnetPool, _test_tag.TestListTagMixin):
|
||||
class TestListSubnetPool(TestSubnetPool):
|
||||
# The subnet pools going to be listed up.
|
||||
_subnet_pools = network_fakes.FakeSubnetPool.create_subnet_pools(count=3)
|
||||
|
||||
@ -442,9 +465,6 @@ class TestListSubnetPool(TestSubnetPool, _test_tag.TestListTagMixin):
|
||||
|
||||
self.network.subnet_pools = mock.Mock(return_value=self._subnet_pools)
|
||||
|
||||
# TestUnsetTagMixin
|
||||
self._tag_list_resource_mock = self.network.subnet_pools
|
||||
|
||||
def test_subnet_pool_list_no_option(self):
|
||||
arglist = []
|
||||
verifylist = [
|
||||
@ -611,8 +631,33 @@ class TestListSubnetPool(TestSubnetPool, _test_tag.TestListTagMixin):
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(self.data, list(data))
|
||||
|
||||
def test_list_with_tag_options(self):
|
||||
arglist = [
|
||||
'--tags', 'red,blue',
|
||||
'--any-tags', 'red,green',
|
||||
'--not-tags', 'orange,yellow',
|
||||
'--not-any-tags', 'black,white',
|
||||
]
|
||||
verifylist = [
|
||||
('tags', ['red', 'blue']),
|
||||
('any_tags', ['red', 'green']),
|
||||
('not_tags', ['orange', 'yellow']),
|
||||
('not_any_tags', ['black', 'white']),
|
||||
]
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
columns, data = self.cmd.take_action(parsed_args)
|
||||
|
||||
class TestSetSubnetPool(TestSubnetPool, _test_tag.TestSetTagMixin):
|
||||
self.network.subnet_pools.assert_called_once_with(
|
||||
**{'tags': 'red,blue',
|
||||
'any_tags': 'red,green',
|
||||
'not_tags': 'orange,yellow',
|
||||
'not_any_tags': 'black,white'}
|
||||
)
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(self.data, list(data))
|
||||
|
||||
|
||||
class TestSetSubnetPool(TestSubnetPool):
|
||||
|
||||
# The subnet_pool to set.
|
||||
_subnet_pool = network_fakes.FakeSubnetPool.create_one_subnet_pool(
|
||||
@ -637,11 +682,6 @@ class TestSetSubnetPool(TestSubnetPool, _test_tag.TestSetTagMixin):
|
||||
# Get the command object to test
|
||||
self.cmd = subnet_pool.SetSubnetPool(self.app, self.namespace)
|
||||
|
||||
# TestUnsetTagMixin
|
||||
self._tag_resource_name = 'subnet_pool'
|
||||
self._tag_test_resource = self._subnet_pool
|
||||
self._tag_update_resource_mock = self.network.update_subnet_pool
|
||||
|
||||
def test_set_this(self):
|
||||
arglist = [
|
||||
'--name', 'noob',
|
||||
@ -867,6 +907,34 @@ class TestSetSubnetPool(TestSubnetPool, _test_tag.TestSetTagMixin):
|
||||
)
|
||||
self.assertIsNone(result)
|
||||
|
||||
def _test_set_tags(self, with_tags=True):
|
||||
if with_tags:
|
||||
arglist = ['--tag', 'red', '--tag', 'blue']
|
||||
verifylist = [('tags', ['red', 'blue'])]
|
||||
expected_args = ['red', 'blue', 'green']
|
||||
else:
|
||||
arglist = ['--no-tag']
|
||||
verifylist = [('no_tag', True)]
|
||||
expected_args = []
|
||||
arglist.append(self._subnet_pool.name)
|
||||
verifylist.append(
|
||||
('subnet_pool', self._subnet_pool.name))
|
||||
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
result = self.cmd.take_action(parsed_args)
|
||||
|
||||
self.assertFalse(self.network.update_subnet_pool.called)
|
||||
self.network.set_tags.assert_called_once_with(
|
||||
self._subnet_pool,
|
||||
tests_utils.CompareBySet(expected_args))
|
||||
self.assertIsNone(result)
|
||||
|
||||
def test_set_with_tags(self):
|
||||
self._test_set_tags(with_tags=True)
|
||||
|
||||
def test_set_with_no_tag(self):
|
||||
self._test_set_tags(with_tags=False)
|
||||
|
||||
|
||||
class TestShowSubnetPool(TestSubnetPool):
|
||||
|
||||
@ -943,7 +1011,7 @@ class TestShowSubnetPool(TestSubnetPool):
|
||||
self.assertEqual(self.data, data)
|
||||
|
||||
|
||||
class TestUnsetSubnetPool(TestSubnetPool, _test_tag.TestUnsetTagMixin):
|
||||
class TestUnsetSubnetPool(TestSubnetPool):
|
||||
|
||||
def setUp(self):
|
||||
super(TestUnsetSubnetPool, self).setUp()
|
||||
@ -958,11 +1026,6 @@ class TestUnsetSubnetPool(TestSubnetPool, _test_tag.TestUnsetTagMixin):
|
||||
# Get the command object to test
|
||||
self.cmd = subnet_pool.UnsetSubnetPool(self.app, self.namespace)
|
||||
|
||||
# TestUnsetTagMixin
|
||||
self._tag_resource_name = 'subnet_pool'
|
||||
self._tag_test_resource = self._subnetpool
|
||||
self._tag_update_resource_mock = self.network.update_subnet_pool
|
||||
|
||||
def test_unset_subnet_pool(self):
|
||||
arglist = [
|
||||
'--pool-prefix', '10.0.10.0/24',
|
||||
@ -993,3 +1056,31 @@ class TestUnsetSubnetPool(TestSubnetPool, _test_tag.TestUnsetTagMixin):
|
||||
self.assertRaises(exceptions.CommandError,
|
||||
self.cmd.take_action,
|
||||
parsed_args)
|
||||
|
||||
def _test_unset_tags(self, with_tags=True):
|
||||
if with_tags:
|
||||
arglist = ['--tag', 'red', '--tag', 'blue']
|
||||
verifylist = [('tags', ['red', 'blue'])]
|
||||
expected_args = ['green']
|
||||
else:
|
||||
arglist = ['--all-tag']
|
||||
verifylist = [('all_tag', True)]
|
||||
expected_args = []
|
||||
arglist.append(self._subnetpool.name)
|
||||
verifylist.append(
|
||||
('subnet_pool', self._subnetpool.name))
|
||||
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
result = self.cmd.take_action(parsed_args)
|
||||
|
||||
self.assertFalse(self.network.update_subnet_pool.called)
|
||||
self.network.set_tags.assert_called_once_with(
|
||||
self._subnetpool,
|
||||
tests_utils.CompareBySet(expected_args))
|
||||
self.assertIsNone(result)
|
||||
|
||||
def test_unset_with_tags(self):
|
||||
self._test_unset_tags(with_tags=True)
|
||||
|
||||
def test_unset_with_all_tag(self):
|
||||
self._test_unset_tags(with_tags=False)
|
||||
|
Loading…
x
Reference in New Issue
Block a user