summaryrefslogtreecommitdiff
path: root/openstackclient/tests
diff options
Diffstat (limited to 'openstackclient/tests')
-rw-r--r--openstackclient/tests/functional/identity/v3/test_catalog.py65
-rw-r--r--openstackclient/tests/functional/identity/v3/test_limit.py47
-rw-r--r--openstackclient/tests/functional/identity/v3/test_role_assignment.py174
-rw-r--r--openstackclient/tests/functional/image/v2/test_cache.py54
-rw-r--r--openstackclient/tests/functional/image/v2/test_metadef_objects.py69
-rw-r--r--openstackclient/tests/functional/image/v2/test_metadef_resource_type.py55
-rw-r--r--openstackclient/tests/functional/volume/v3/test_volume_snapshot.py178
-rw-r--r--openstackclient/tests/unit/common/test_command.py2
-rw-r--r--openstackclient/tests/unit/common/test_extension.py5
-rw-r--r--openstackclient/tests/unit/common/test_logs.py221
-rw-r--r--openstackclient/tests/unit/common/test_module.py21
-rw-r--r--openstackclient/tests/unit/common/test_quota.py79
-rw-r--r--openstackclient/tests/unit/compute/v2/test_aggregate.py8
-rw-r--r--openstackclient/tests/unit/compute/v2/test_console.py5
-rw-r--r--openstackclient/tests/unit/compute/v2/test_flavor.py4
-rw-r--r--openstackclient/tests/unit/compute/v2/test_hypervisor_stats.py10
-rw-r--r--openstackclient/tests/unit/compute/v2/test_server.py408
-rw-r--r--openstackclient/tests/unit/compute/v2/test_server_backup.py4
-rw-r--r--openstackclient/tests/unit/compute/v2/test_service.py4
-rw-r--r--openstackclient/tests/unit/fakes.py169
-rw-r--r--openstackclient/tests/unit/identity/test_common.py100
-rw-r--r--openstackclient/tests/unit/identity/v2_0/test_project.py8
-rw-r--r--openstackclient/tests/unit/identity/v3/fakes.py12
-rw-r--r--openstackclient/tests/unit/identity/v3/test_application_credential.py6
-rw-r--r--openstackclient/tests/unit/identity/v3/test_domain.py2
-rw-r--r--openstackclient/tests/unit/identity/v3/test_endpoint.py2
-rw-r--r--openstackclient/tests/unit/identity/v3/test_group.py6
-rw-r--r--openstackclient/tests/unit/identity/v3/test_identity_provider.py20
-rw-r--r--openstackclient/tests/unit/identity/v3/test_limit.py342
-rw-r--r--openstackclient/tests/unit/identity/v3/test_oauth.py2
-rw-r--r--openstackclient/tests/unit/identity/v3/test_project.py1345
-rw-r--r--openstackclient/tests/unit/identity/v3/test_protocol.py185
-rw-r--r--openstackclient/tests/unit/identity/v3/test_registered_limit.py577
-rw-r--r--openstackclient/tests/unit/identity/v3/test_role.py83
-rw-r--r--openstackclient/tests/unit/identity/v3/test_user.py58
-rw-r--r--openstackclient/tests/unit/image/v2/test_image.py121
-rw-r--r--openstackclient/tests/unit/network/test_common.py22
-rw-r--r--openstackclient/tests/unit/network/v2/taas/__init__.py0
-rw-r--r--openstackclient/tests/unit/network/v2/taas/test_osc_tap_flow.py276
-rw-r--r--openstackclient/tests/unit/network/v2/taas/test_osc_tap_mirror.py288
-rw-r--r--openstackclient/tests/unit/network/v2/taas/test_osc_tap_service.py271
-rw-r--r--openstackclient/tests/unit/network/v2/test_address_group.py41
-rw-r--r--openstackclient/tests/unit/network/v2/test_address_scope.py25
-rw-r--r--openstackclient/tests/unit/network/v2/test_default_security_group_rule.py87
-rw-r--r--openstackclient/tests/unit/network/v2/test_floating_ip_network.py48
-rw-r--r--openstackclient/tests/unit/network/v2/test_floating_ip_port_forwarding.py39
-rw-r--r--openstackclient/tests/unit/network/v2/test_ip_availability.py14
-rw-r--r--openstackclient/tests/unit/network/v2/test_l3_conntrack_helper.py21
-rw-r--r--openstackclient/tests/unit/network/v2/test_local_ip.py35
-rw-r--r--openstackclient/tests/unit/network/v2/test_local_ip_association.py31
-rw-r--r--openstackclient/tests/unit/network/v2/test_ndp_proxy.py32
-rw-r--r--openstackclient/tests/unit/network/v2/test_network.py78
-rw-r--r--openstackclient/tests/unit/network/v2/test_network_agent.py33
-rw-r--r--openstackclient/tests/unit/network/v2/test_network_auto_allocated_topology.py13
-rw-r--r--openstackclient/tests/unit/network/v2/test_network_flavor.py40
-rw-r--r--openstackclient/tests/unit/network/v2/test_network_flavor_profile.py31
-rw-r--r--openstackclient/tests/unit/network/v2/test_network_meter.py24
-rw-r--r--openstackclient/tests/unit/network/v2/test_network_meter_rule.py30
-rw-r--r--openstackclient/tests/unit/network/v2/test_network_qos_policy.py20
-rw-r--r--openstackclient/tests/unit/network/v2/test_network_qos_rule.py98
-rw-r--r--openstackclient/tests/unit/network/v2/test_network_qos_rule_type.py9
-rw-r--r--openstackclient/tests/unit/network/v2/test_network_rbac.py57
-rw-r--r--openstackclient/tests/unit/network/v2/test_network_segment.py42
-rw-r--r--openstackclient/tests/unit/network/v2/test_network_segment_range.py39
-rw-r--r--openstackclient/tests/unit/network/v2/test_network_service_provider.py5
-rw-r--r--openstackclient/tests/unit/network/v2/test_network_trunk.py99
-rw-r--r--openstackclient/tests/unit/network/v2/test_port.py161
-rw-r--r--openstackclient/tests/unit/network/v2/test_router.py230
-rw-r--r--openstackclient/tests/unit/network/v2/test_security_group_network.py45
-rw-r--r--openstackclient/tests/unit/network/v2/test_security_group_rule_network.py35
-rw-r--r--openstackclient/tests/unit/network/v2/test_subnet.py81
-rw-r--r--openstackclient/tests/unit/network/v2/test_subnet_pool.py54
-rw-r--r--openstackclient/tests/unit/volume/test_find_resource.py17
-rw-r--r--openstackclient/tests/unit/volume/v2/test_consistency_group.py10
-rw-r--r--openstackclient/tests/unit/volume/v2/test_volume.py13
-rw-r--r--openstackclient/tests/unit/volume/v2/test_volume_backup.py4
-rw-r--r--openstackclient/tests/unit/volume/v3/test_volume.py50
-rw-r--r--openstackclient/tests/unit/volume/v3/test_volume_backup.py9
78 files changed, 4343 insertions, 2665 deletions
diff --git a/openstackclient/tests/functional/identity/v3/test_catalog.py b/openstackclient/tests/functional/identity/v3/test_catalog.py
index f4089b7..429f94a 100644
--- a/openstackclient/tests/functional/identity/v3/test_catalog.py
+++ b/openstackclient/tests/functional/identity/v3/test_catalog.py
@@ -10,35 +10,54 @@
# License for the specific language governing permissions and limitations
# under the License.
+
from openstackclient.tests.functional.identity.v3 import common
class CatalogTests(common.IdentityTests):
- def test_catalog_list(self):
+ """Functional tests for catalog commands"""
+
+ def test_catalog(self):
+ """Test catalog list and show functionality"""
+ # Create a test service for isolated testing
+ _dummy_service_name = self._create_dummy_service(add_clean_up=True)
+
+ # list catalogs
raw_output = self.openstack('catalog list')
items = self.parse_listing(raw_output)
self.assert_table_structure(items, ['Name', 'Type', 'Endpoints'])
- def test_catalog_show(self):
- """test catalog show command
-
- The output example:
- +-----------+----------------------------------------+
- | Field | Value |
- +-----------+----------------------------------------+
- | endpoints | test1 |
- | | public: http://localhost:5000/v2.0 |
- | | test1 |
- | | internal: http://localhost:5000/v2.0 |
- | | test1 |
- | | admin: http://localhost:35357/v2.0 |
- | | |
- | id | e1e68b5ba21a43a39ff1cf58e736c3aa |
- | name | keystone |
- | type | identity |
- +-----------+----------------------------------------+
- """
- raw_output = self.openstack('catalog show {}'.format('identity'))
+ # Verify created service appears in catalog
+ service_names = [
+ item.get('Name') for item in items if item.get('Name')
+ ]
+ self.assertIn(
+ _dummy_service_name,
+ service_names,
+ "Created dummy service should be present in catalog",
+ )
+
+ # show service (by name)
+ raw_output = self.openstack(f'catalog show {_dummy_service_name}')
items = self.parse_show(raw_output)
- # items may have multiple endpoint urls with empty key
- self.assert_show_fields(items, ['endpoints', 'name', 'type', '', 'id'])
+ self.assert_show_fields(items, ['endpoints', 'name', 'type', 'id'])
+
+ # Extract the type from the dummy service
+ _dummy_service_type = next(
+ (item['type'] for item in items if 'type' in item), None
+ )
+
+ # show service (by type)
+ raw_output = self.openstack(f'catalog show {_dummy_service_type}')
+ items = self.parse_show(raw_output)
+ self.assert_show_fields(items, ['endpoints', 'name', 'type', 'id'])
+
+ # show service (non-existent)
+ result = self.openstack(
+ 'catalog show nonexistent-service-xyz', fail_ok=True
+ )
+ self.assertEqual(
+ '',
+ result.strip(),
+ "Non-existent service should return empty result",
+ )
diff --git a/openstackclient/tests/functional/identity/v3/test_limit.py b/openstackclient/tests/functional/identity/v3/test_limit.py
index 8c0bbcd..497d33a 100644
--- a/openstackclient/tests/functional/identity/v3/test_limit.py
+++ b/openstackclient/tests/functional/identity/v3/test_limit.py
@@ -100,6 +100,53 @@ class LimitTestCase(common.IdentityTests):
self.assert_show_fields(items, self.LIMIT_FIELDS)
registered_limit_id = self._create_dummy_registered_limit()
+ def test_limit_create_with_project_domain(self):
+ registered_limit_id = self._create_dummy_registered_limit()
+ raw_output = self.openstack(
+ f'registered limit show {registered_limit_id}',
+ cloud=SYSTEM_CLOUD,
+ )
+ items = self.parse_show(raw_output)
+ service_id = self._extract_value_from_items('service_id', items)
+ resource_name = self._extract_value_from_items('resource_name', items)
+
+ raw_output = self.openstack(f'service show {service_id}')
+ items = self.parse_show(raw_output)
+ service_name = self._extract_value_from_items('name', items)
+
+ project_name = self._create_dummy_project()
+ raw_output = self.openstack(
+ f'project show {project_name}',
+ cloud=SYSTEM_CLOUD,
+ )
+ items = self.parse_show(raw_output)
+ domain_id = self._extract_value_from_items('domain_id', items)
+
+ params = {
+ 'project_name': project_name,
+ 'project_domain': domain_id,
+ 'service_name': service_name,
+ 'resource_name': resource_name,
+ 'resource_limit': 15,
+ }
+ raw_output = self.openstack(
+ 'limit create'
+ ' --project {project_name}'
+ ' --project-domain {project_domain}'
+ ' --service {service_name}'
+ ' --resource-limit {resource_limit}'
+ ' {resource_name}'.format(**params),
+ cloud=SYSTEM_CLOUD,
+ )
+ items = self.parse_show(raw_output)
+ limit_id = self._extract_value_from_items('id', items)
+ self.addCleanup(
+ self.openstack, f'limit delete {limit_id}', cloud=SYSTEM_CLOUD
+ )
+
+ self.assert_show_fields(items, self.LIMIT_FIELDS)
+ registered_limit_id = self._create_dummy_registered_limit()
+
def test_limit_create_with_service_id(self):
self._create_dummy_limit()
diff --git a/openstackclient/tests/functional/identity/v3/test_role_assignment.py b/openstackclient/tests/functional/identity/v3/test_role_assignment.py
index 76e33c2..1255841 100644
--- a/openstackclient/tests/functional/identity/v3/test_role_assignment.py
+++ b/openstackclient/tests/functional/identity/v3/test_role_assignment.py
@@ -62,6 +62,47 @@ class RoleAssignmentTests(common.IdentityTests):
items = self.parse_listing(raw_output)
self.assert_table_structure(items, self.ROLE_ASSIGNMENT_LIST_HEADERS)
+ def test_role_assignment_list_group_domain(self):
+ domain_name_A = self._create_dummy_domain()
+ domain_name_B = self._create_dummy_domain()
+ role_name = self._create_dummy_role()
+ group_name = 'group_name'
+ self.openstack(f'group create --domain {domain_name_A} {group_name}')
+ self.addCleanup(
+ self.openstack,
+ f'group delete --domain {domain_name_A} {group_name}',
+ )
+ self.openstack(f'group create --domain {domain_name_B} {group_name}')
+ self.addCleanup(
+ self.openstack,
+ f'group delete --domain {domain_name_B} {group_name}',
+ )
+ raw_output = self.openstack(
+ 'role add '
+ f'--project {self.project_name} '
+ f'--group {group_name} --group-domain {domain_name_A} '
+ f'{role_name}'
+ )
+ self.addCleanup(
+ self.openstack,
+ 'role remove '
+ f'--project {self.project_name} '
+ f'--group {group_name} --group-domain {domain_name_A} '
+ f'{role_name}',
+ )
+ self.assertEqual('', raw_output.strip())
+ raw_output = self.openstack(
+ f'role assignment list '
+ f'--group {group_name} --group-domain {domain_name_A} '
+ )
+ items = self.parse_listing(raw_output)
+ self.assert_table_structure(items, self.ROLE_ASSIGNMENT_LIST_HEADERS)
+ raw_output = self.openstack(
+ f'role assignment list '
+ f'--group {group_name} --group-domain {domain_name_B} '
+ )
+ self.assertEqual('', raw_output.strip())
+
def test_role_assignment_list_domain(self):
role_name = self._create_dummy_role()
username = self._create_dummy_user()
@@ -85,6 +126,89 @@ class RoleAssignmentTests(common.IdentityTests):
items = self.parse_listing(raw_output)
self.assert_table_structure(items, self.ROLE_ASSIGNMENT_LIST_HEADERS)
+ def test_role_assignment_list_user_domain(self):
+ domain_name_A = self._create_dummy_domain()
+ domain_name_B = self._create_dummy_domain()
+ role_name = self._create_dummy_role()
+ username = 'username'
+ self.openstack(f'user create --domain {domain_name_A} {username}')
+ self.addCleanup(
+ self.openstack, f'user delete --domain {domain_name_A} {username}'
+ )
+ self.openstack(f'user create --domain {domain_name_B} {username}')
+ self.addCleanup(
+ self.openstack, f'user delete --domain {domain_name_B} {username}'
+ )
+ raw_output = self.openstack(
+ 'role add '
+ f'--project {self.project_name} '
+ f'--user {username} --user-domain {domain_name_A} '
+ f'{role_name}'
+ )
+ self.addCleanup(
+ self.openstack,
+ 'role remove '
+ f'--project {self.project_name} '
+ f'--user {username} --user-domain {domain_name_A} '
+ f'{role_name}',
+ )
+ self.assertEqual('', raw_output.strip())
+ raw_output = self.openstack(
+ f'role assignment list '
+ f'--user {username} --user-domain {domain_name_A} '
+ )
+ items = self.parse_listing(raw_output)
+ self.assert_table_structure(items, self.ROLE_ASSIGNMENT_LIST_HEADERS)
+ raw_output = self.openstack(
+ f'role assignment list '
+ f'--user {username} --user-domain {domain_name_B} '
+ )
+ self.assertEqual('', raw_output.strip())
+
+ def test_role_assignment_list_role_domain(self):
+ domain_name_A = self._create_dummy_domain()
+ domain_name_B = self._create_dummy_domain()
+ role_name = 'role_name'
+ username = 'username'
+ self.openstack(f'role create --domain {domain_name_A} {role_name}')
+ self.addCleanup(
+ self.openstack, f'role delete --domain {domain_name_A} {role_name}'
+ )
+ self.openstack(f'role create --domain {domain_name_B} {role_name}')
+ self.addCleanup(
+ self.openstack, f'role delete --domain {domain_name_B} {role_name}'
+ )
+ self.openstack(f'user create --domain {domain_name_A} {username}')
+ self.addCleanup(
+ self.openstack, f'user delete --domain {domain_name_A} {username}'
+ )
+ raw_output = self.openstack(
+ 'role add '
+ f'--user {username} --domain {domain_name_A} '
+ f'--role-domain {domain_name_A} '
+ f'{role_name}'
+ )
+ self.addCleanup(
+ self.openstack,
+ 'role remove '
+ f'--user {username} --domain {domain_name_A} '
+ f'--role-domain {domain_name_A} '
+ f'{role_name}',
+ )
+ self.assertEqual('', raw_output.strip())
+ raw_output = self.openstack(
+ f'role assignment list '
+ f'--role {role_name} --role-domain {domain_name_A}'
+ )
+ items = self.parse_listing(raw_output)
+ self.assert_table_structure(items, self.ROLE_ASSIGNMENT_LIST_HEADERS)
+ raw_output = self.openstack(
+ f'role assignment list '
+ f'--role {role_name} --role-domain {domain_name_B}'
+ )
+ items = self.parse_listing(raw_output)
+ self.assertEqual('', raw_output.strip())
+
def test_role_assignment_list_project(self):
role_name = self._create_dummy_role()
username = self._create_dummy_user()
@@ -108,6 +232,56 @@ class RoleAssignmentTests(common.IdentityTests):
items = self.parse_listing(raw_output)
self.assert_table_structure(items, self.ROLE_ASSIGNMENT_LIST_HEADERS)
+ def test_role_assignment_list_project_domain(self):
+ domain_name_A = self._create_dummy_domain()
+ domain_name_B = self._create_dummy_domain()
+ role_name = self._create_dummy_role()
+ project_name = 'project_name'
+ username = 'username'
+ self.openstack(
+ f'project create --domain {domain_name_A} {project_name}'
+ )
+ self.addCleanup(
+ self.openstack,
+ f'project delete --domain {domain_name_A} {project_name}',
+ )
+ self.openstack(
+ f'project create --domain {domain_name_B} {project_name}'
+ )
+ self.addCleanup(
+ self.openstack,
+ f'project delete --domain {domain_name_B} {project_name}',
+ )
+ self.openstack(f'user create --domain {domain_name_A} {username}')
+ self.addCleanup(
+ self.openstack, f'user delete --domain {domain_name_A} {username}'
+ )
+ raw_output = self.openstack(
+ 'role add '
+ f'--project {project_name} --project-domain {domain_name_A} '
+ f'--user {username} --user-domain {domain_name_A} '
+ f'{role_name}'
+ )
+ self.addCleanup(
+ self.openstack,
+ 'role remove '
+ f'--project {project_name} --project-domain {domain_name_A} '
+ f'--user {username} --user-domain {domain_name_A} '
+ f'{role_name}',
+ )
+ self.assertEqual('', raw_output.strip())
+ raw_output = self.openstack(
+ f'role assignment list '
+ f'--project {project_name} --project-domain {domain_name_A} '
+ )
+ items = self.parse_listing(raw_output)
+ self.assert_table_structure(items, self.ROLE_ASSIGNMENT_LIST_HEADERS)
+ raw_output = self.openstack(
+ f'role assignment list '
+ f'--project {project_name} --project-domain {domain_name_B} '
+ )
+ self.assertEqual('', raw_output.strip())
+
def test_role_assignment_list_effective(self):
raw_output = self.openstack('role assignment list --effective')
items = self.parse_listing(raw_output)
diff --git a/openstackclient/tests/functional/image/v2/test_cache.py b/openstackclient/tests/functional/image/v2/test_cache.py
new file mode 100644
index 0000000..58245e5
--- /dev/null
+++ b/openstackclient/tests/functional/image/v2/test_cache.py
@@ -0,0 +1,54 @@
+# 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.
+
+import uuid
+
+from openstackclient.tests.functional.image import base
+
+
+class CacheTests(base.BaseImageTests):
+ """Functional tests for Cache commands"""
+
+ def test_cached_image(self):
+ """Test cached image operations including queue and clear"""
+ # Create test image
+ name = uuid.uuid4().hex
+ output = self.openstack(
+ f'image create {name}',
+ parse_output=True,
+ )
+ image_id = output["id"]
+ self.assertOutput(name, output['name'])
+
+ # Register cleanup for created image
+ self.addCleanup(
+ self.openstack, 'cached image delete ' + image_id, fail_ok=True
+ )
+ self.addCleanup(self.openstack, 'image delete ' + image_id)
+
+ # Queue image for caching
+ self.openstack('cached image queue ' + image_id)
+
+ # Verify queuing worked
+ cache_output = self.openstack('cached image list', parse_output=True)
+ self.assertIsInstance(cache_output, list)
+ image_ids = [img['ID'] for img in cache_output]
+ self.assertIn(image_id, image_ids)
+
+ # Clear cached images
+ self.openstack('cached image clear')
+
+ # Verify clearing worked
+ output = self.openstack('cached image list', parse_output=True)
+ if output:
+ image_ids = [img['ID'] for img in output]
+ self.assertNotIn(image_id, image_ids)
diff --git a/openstackclient/tests/functional/image/v2/test_metadef_objects.py b/openstackclient/tests/functional/image/v2/test_metadef_objects.py
new file mode 100644
index 0000000..5216c93
--- /dev/null
+++ b/openstackclient/tests/functional/image/v2/test_metadef_objects.py
@@ -0,0 +1,69 @@
+# 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.functional import base
+
+
+class MetadefObjectTests(base.TestCase):
+ def setUp(self):
+ super().setUp()
+ self.obj_name = self.getUniqueString('metadef-obj')
+ self.ns_name = self.getUniqueString('metadef-ns')
+ self.openstack(f"image metadef namespace create {self.ns_name}")
+ self.addCleanup(
+ lambda: self.openstack(
+ f"image metadef namespace delete {self.ns_name}"
+ )
+ )
+
+ def test_metadef_objects(self):
+ # CREATE
+ created = self.openstack(
+ (
+ "image metadef object create "
+ f"--namespace {self.ns_name} "
+ f"{self.obj_name}"
+ ),
+ parse_output=True,
+ )
+ self.addCleanup(
+ lambda: self.openstack(
+ f"image metadef object delete {self.ns_name} {self.obj_name}"
+ )
+ )
+ self.assertEqual(self.obj_name, created["name"])
+ self.assertEqual(self.ns_name, created["namespace_name"])
+
+ # UPDATE
+ new_name = f"{self.obj_name}-updated"
+ self.openstack(
+ "image metadef object update "
+ f"{self.ns_name} {self.obj_name} "
+ f"--name {new_name}"
+ )
+ self.obj_name = new_name
+
+ # READ (get)
+ shown = self.openstack(
+ f"image metadef object show {self.ns_name} {self.obj_name}",
+ parse_output=True,
+ )
+ self.assertEqual(self.obj_name, shown["name"])
+ self.assertEqual(self.ns_name, shown["namespace_name"])
+
+ # READ (list)
+ rows = self.openstack(
+ f"image metadef object list {self.ns_name}",
+ parse_output=True,
+ )
+ names = {row["name"] for row in rows}
+ self.assertIn(self.obj_name, names)
diff --git a/openstackclient/tests/functional/image/v2/test_metadef_resource_type.py b/openstackclient/tests/functional/image/v2/test_metadef_resource_type.py
new file mode 100644
index 0000000..ab8dc13
--- /dev/null
+++ b/openstackclient/tests/functional/image/v2/test_metadef_resource_type.py
@@ -0,0 +1,55 @@
+# 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.
+
+import uuid
+
+from openstackclient.tests.functional.image import base
+
+
+class ImageMetadefResourceTypeTests(base.BaseImageTests):
+ """Functional tests for image metadef resource type commands."""
+
+ def setUp(self):
+ super().setUp()
+
+ # Create unique namespace name using UUID
+ self.namespace_name = 'test-mdef-ns-' + uuid.uuid4().hex
+ self.resource_type_name = 'test-mdef-rt-' + uuid.uuid4().hex
+
+ # Create namespace
+ self.openstack('image metadef namespace create ' + self.namespace_name)
+ self.addCleanup(
+ self.openstack,
+ 'image metadef namespace delete ' + self.namespace_name,
+ )
+
+ def test_metadef_resource_type(self):
+ """Test image metadef resource type commands"""
+
+ self.openstack(
+ 'image metadef resource type association create '
+ f'{self.namespace_name} {self.resource_type_name}',
+ )
+ self.addCleanup(
+ self.openstack,
+ 'image metadef resource type association delete '
+ f'{self.namespace_name} {self.resource_type_name}',
+ )
+
+ output = self.openstack(
+ 'image metadef resource type list',
+ parse_output=True,
+ )
+
+ self.assertIn(
+ self.resource_type_name, [item['Name'] for item in output]
+ )
diff --git a/openstackclient/tests/functional/volume/v3/test_volume_snapshot.py b/openstackclient/tests/functional/volume/v3/test_volume_snapshot.py
index 2c9b72b..b84bb03 100644
--- a/openstackclient/tests/functional/volume/v3/test_volume_snapshot.py
+++ b/openstackclient/tests/functional/volume/v3/test_volume_snapshot.py
@@ -23,7 +23,7 @@ class VolumeSnapshotTests(common.BaseVolumeTests):
@classmethod
def setUpClass(cls):
super().setUpClass()
- # create a volume for all tests to create snapshot
+ # create a test volume used by all snapshot tests
cmd_output = cls.openstack(
'volume create ' + '--size 1 ' + cls.VOLLY,
parse_output=True,
@@ -40,147 +40,57 @@ class VolumeSnapshotTests(common.BaseVolumeTests):
finally:
super().tearDownClass()
- def test_volume_snapshot_delete(self):
- """Test create, delete multiple"""
- name1 = uuid.uuid4().hex
- cmd_output = self.openstack(
- 'volume snapshot create ' + name1 + ' --volume ' + self.VOLLY,
- parse_output=True,
- )
- self.assertEqual(
- name1,
- cmd_output["name"],
- )
+ def test_volume_snapshot(self):
+ # create volume snapshot
+ name = uuid.uuid4().hex
- name2 = uuid.uuid4().hex
cmd_output = self.openstack(
- 'volume snapshot create ' + name2 + ' --volume ' + self.VOLLY,
+ 'volume snapshot create '
+ + '--volume '
+ + self.VOLLY
+ + ' --description aaaa '
+ + '--property Alpha=a '
+ + name,
parse_output=True,
)
- self.assertEqual(
- name2,
- cmd_output["name"],
- )
-
- self.wait_for_status('volume snapshot', name1, 'available')
- self.wait_for_status('volume snapshot', name2, 'available')
+ snap_id = cmd_output['id']
- del_output = self.openstack(
- 'volume snapshot delete ' + name1 + ' ' + name2
+ self.addCleanup(self.wait_for_delete, 'volume snapshot', snap_id)
+ # delete volume snapshot
+ self.addCleanup(
+ self.openstack,
+ 'volume snapshot delete ' + snap_id,
)
- self.assertOutput('', del_output)
- self.wait_for_delete('volume snapshot', name1)
- self.wait_for_delete('volume snapshot', name2)
+ self.wait_for_status('volume snapshot', snap_id, 'available')
- def test_volume_snapshot_list(self):
- """Test create, list filter"""
- name1 = uuid.uuid4().hex
- cmd_output = self.openstack(
- 'volume snapshot create ' + name1 + ' --volume ' + self.VOLLY,
+ # show volume snapshot
+ snapshot_info = self.openstack(
+ 'volume snapshot show ' + name,
parse_output=True,
)
- self.addCleanup(self.wait_for_delete, 'volume snapshot', name1)
- self.addCleanup(self.openstack, 'volume snapshot delete ' + name1)
- self.assertEqual(
- name1,
- cmd_output["name"],
- )
- self.assertEqual(
- self.VOLUME_ID,
- cmd_output["volume_id"],
- )
- self.assertEqual(
- 1,
- cmd_output["size"],
- )
- self.wait_for_status('volume snapshot', name1, 'available')
- name2 = uuid.uuid4().hex
- cmd_output = self.openstack(
- 'volume snapshot create ' + name2 + ' --volume ' + self.VOLLY,
- parse_output=True,
- )
- self.addCleanup(self.wait_for_delete, 'volume snapshot', name2)
- self.addCleanup(self.openstack, 'volume snapshot delete ' + name2)
- self.assertEqual(
- name2,
- cmd_output["name"],
- )
- self.assertEqual(
- self.VOLUME_ID,
- cmd_output["volume_id"],
- )
- self.assertEqual(
- 1,
- cmd_output["size"],
- )
- self.wait_for_status('volume snapshot', name2, 'available')
- raw_output = self.openstack(
- 'volume snapshot set ' + '--state error ' + name2
- )
- self.assertOutput('', raw_output)
+ self.assertEqual(name, snapshot_info['name'])
+ self.assertEqual('aaaa', snapshot_info["description"])
+ self.assertEqual({'Alpha': 'a'}, snapshot_info["properties"])
- # Test list --long, --status
+ # list volume snapshot --name
cmd_output = self.openstack(
- 'volume snapshot list ' + '--long ' + '--status error',
+ 'volume snapshot list --name ' + name,
parse_output=True,
)
- names = [x["Name"] for x in cmd_output]
- self.assertNotIn(name1, names)
- self.assertIn(name2, names)
+ names = [x['Name'] for x in cmd_output]
+ self.assertIn(name, names)
- # Test list --volume
+ # list volume snapshot --volume
cmd_output = self.openstack(
'volume snapshot list ' + '--volume ' + self.VOLLY,
parse_output=True,
)
names = [x["Name"] for x in cmd_output]
- self.assertIn(name1, names)
- self.assertIn(name2, names)
+ self.assertIn(name, names)
- # Test list --name
- cmd_output = self.openstack(
- 'volume snapshot list ' + '--name ' + name1,
- parse_output=True,
- )
- names = [x["Name"] for x in cmd_output]
- self.assertIn(name1, names)
- self.assertNotIn(name2, names)
-
- def test_volume_snapshot_set(self):
- """Test create, set, unset, show, delete volume snapshot"""
- name = uuid.uuid4().hex
+ # set volume snapshot
new_name = name + "_"
- cmd_output = self.openstack(
- 'volume snapshot create '
- + '--volume '
- + self.VOLLY
- + ' --description aaaa '
- + '--property Alpha=a '
- + name,
- parse_output=True,
- )
- self.addCleanup(self.wait_for_delete, 'volume snapshot', new_name)
- self.addCleanup(self.openstack, 'volume snapshot delete ' + new_name)
- self.assertEqual(
- name,
- cmd_output["name"],
- )
- self.assertEqual(
- 1,
- cmd_output["size"],
- )
- self.assertEqual(
- 'aaaa',
- cmd_output["description"],
- )
- self.assertEqual(
- {'Alpha': 'a'},
- cmd_output["properties"],
- )
- self.wait_for_status('volume snapshot', name, 'available')
-
- # Test volume snapshot set
raw_output = self.openstack(
'volume snapshot set '
+ '--name '
@@ -188,11 +98,10 @@ class VolumeSnapshotTests(common.BaseVolumeTests):
+ ' --description bbbb '
+ '--property Alpha=c '
+ '--property Beta=b '
- + name,
+ + snap_id,
)
self.assertOutput('', raw_output)
- # Show snapshot set result
cmd_output = self.openstack(
'volume snapshot show ' + new_name,
parse_output=True,
@@ -202,10 +111,6 @@ class VolumeSnapshotTests(common.BaseVolumeTests):
cmd_output["name"],
)
self.assertEqual(
- 1,
- cmd_output["size"],
- )
- self.assertEqual(
'bbbb',
cmd_output["description"],
)
@@ -214,7 +119,7 @@ class VolumeSnapshotTests(common.BaseVolumeTests):
cmd_output["properties"],
)
- # Test volume snapshot unset
+ # unset volume snapshot
raw_output = self.openstack(
'volume snapshot unset ' + '--property Alpha ' + new_name,
)
@@ -229,16 +134,25 @@ class VolumeSnapshotTests(common.BaseVolumeTests):
cmd_output["properties"],
)
- # Test volume snapshot set --no-property
+ # set volume snapshot --no-property, --state error
raw_output = self.openstack(
- 'volume snapshot set ' + '--no-property ' + new_name,
+ 'volume snapshot set '
+ + '--no-property '
+ + '--state error '
+ + new_name,
)
self.assertOutput('', raw_output)
+
cmd_output = self.openstack(
'volume snapshot show ' + new_name,
parse_output=True,
)
- self.assertNotIn(
- {'Beta': 'b'},
- cmd_output["properties"],
+ self.assertEqual({}, cmd_output["properties"])
+
+ # list volume snapshot --long --status
+ cmd_output = self.openstack(
+ 'volume snapshot list ' + '--long ' + '--status error',
+ parse_output=True,
)
+ names = [x["Name"] for x in cmd_output]
+ self.assertIn(new_name, names)
diff --git a/openstackclient/tests/unit/common/test_command.py b/openstackclient/tests/unit/common/test_command.py
index 8233f89..1f1efce 100644
--- a/openstackclient/tests/unit/common/test_command.py
+++ b/openstackclient/tests/unit/common/test_command.py
@@ -14,9 +14,9 @@
from unittest import mock
-from osc_lib.command import command
from osc_lib import exceptions
+from openstackclient import command
from openstackclient.tests.unit import fakes as test_fakes
from openstackclient.tests.unit import utils as test_utils
diff --git a/openstackclient/tests/unit/common/test_extension.py b/openstackclient/tests/unit/common/test_extension.py
index 53d9d65..dd68431 100644
--- a/openstackclient/tests/unit/common/test_extension.py
+++ b/openstackclient/tests/unit/common/test_extension.py
@@ -10,7 +10,6 @@
# License for the specific language governing permissions and limitations
# under the License.
-from unittest import mock
from openstackclient.common import extension
from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
@@ -295,8 +294,8 @@ class TestExtensionShow(TestExtension):
self.cmd = extension.ShowExtension(self.app, None)
- self.app.client_manager.network.find_extension = mock.Mock(
- return_value=self.extension_details
+ self.app.client_manager.network.find_extension.return_value = (
+ self.extension_details
)
def test_show_no_options(self):
diff --git a/openstackclient/tests/unit/common/test_logs.py b/openstackclient/tests/unit/common/test_logs.py
deleted file mode 100644
index 234ba42..0000000
--- a/openstackclient/tests/unit/common/test_logs.py
+++ /dev/null
@@ -1,221 +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.
-#
-
-# NOTE(dtroyer): This file is deprecated in Jun 2016, remove after 4.x release
-# or Jun 2017.
-
-import logging
-from unittest import mock
-
-from osc_lib import logs
-
-from openstackclient.tests.unit import utils
-
-
-class TestContext(utils.TestCase):
- def test_log_level_from_options(self):
- opts = mock.Mock()
- opts.verbose_level = 0
- self.assertEqual(logging.ERROR, logs.log_level_from_options(opts))
- opts.verbose_level = 1
- self.assertEqual(logging.WARNING, logs.log_level_from_options(opts))
- opts.verbose_level = 2
- self.assertEqual(logging.INFO, logs.log_level_from_options(opts))
- opts.verbose_level = 3
- self.assertEqual(logging.DEBUG, logs.log_level_from_options(opts))
-
- def test_log_level_from_config(self):
- cfg = {'verbose_level': 0}
- self.assertEqual(logging.ERROR, logs.log_level_from_config(cfg))
- cfg = {'verbose_level': 1}
- self.assertEqual(logging.WARNING, logs.log_level_from_config(cfg))
- cfg = {'verbose_level': 2}
- self.assertEqual(logging.INFO, logs.log_level_from_config(cfg))
- cfg = {'verbose_level': 3}
- self.assertEqual(logging.DEBUG, logs.log_level_from_config(cfg))
- cfg = {'verbose_level': 1, 'log_level': 'critical'}
- self.assertEqual(logging.CRITICAL, logs.log_level_from_config(cfg))
- cfg = {'verbose_level': 1, 'log_level': 'error'}
- self.assertEqual(logging.ERROR, logs.log_level_from_config(cfg))
- cfg = {'verbose_level': 1, 'log_level': 'warning'}
- self.assertEqual(logging.WARNING, logs.log_level_from_config(cfg))
- cfg = {'verbose_level': 1, 'log_level': 'info'}
- self.assertEqual(logging.INFO, logs.log_level_from_config(cfg))
- cfg = {'verbose_level': 1, 'log_level': 'debug'}
- self.assertEqual(logging.DEBUG, logs.log_level_from_config(cfg))
- cfg = {'verbose_level': 1, 'log_level': 'bogus'}
- self.assertEqual(logging.WARNING, logs.log_level_from_config(cfg))
- cfg = {'verbose_level': 1, 'log_level': 'info', 'debug': True}
- self.assertEqual(logging.DEBUG, logs.log_level_from_config(cfg))
-
- @mock.patch('warnings.simplefilter')
- def test_set_warning_filter(self, simplefilter):
- logs.set_warning_filter(logging.ERROR)
- simplefilter.assert_called_with("ignore")
- logs.set_warning_filter(logging.WARNING)
- simplefilter.assert_called_with("ignore")
- logs.set_warning_filter(logging.INFO)
- simplefilter.assert_called_with("once")
-
-
-class TestFileFormatter(utils.TestCase):
- def test_nothing(self):
- formatter = logs._FileFormatter()
- self.assertEqual(
- (
- '%(asctime)s.%(msecs)03d %(process)d %(levelname)s '
- '%(name)s %(message)s'
- ),
- formatter.fmt,
- )
-
- def test_options(self):
- class Opts:
- cloud = 'cloudy'
- os_project_name = 'projecty'
- username = 'usernamey'
-
- options = Opts()
- formatter = logs._FileFormatter(options=options)
- self.assertEqual(
- (
- '%(asctime)s.%(msecs)03d %(process)d %(levelname)s '
- '%(name)s [cloudy usernamey projecty] %(message)s'
- ),
- formatter.fmt,
- )
-
- def test_config(self):
- config = mock.Mock()
- config.config = {'cloud': 'cloudy'}
- config.auth = {'project_name': 'projecty', 'username': 'usernamey'}
- formatter = logs._FileFormatter(config=config)
- self.assertEqual(
- (
- '%(asctime)s.%(msecs)03d %(process)d %(levelname)s '
- '%(name)s [cloudy usernamey projecty] %(message)s'
- ),
- formatter.fmt,
- )
-
-
-class TestLogConfigurator(utils.TestCase):
- def setUp(self):
- super().setUp()
- self.options = mock.Mock()
- self.options.verbose_level = 1
- self.options.log_file = None
- self.options.debug = False
- self.root_logger = mock.Mock()
- self.root_logger.setLevel = mock.Mock()
- self.root_logger.addHandler = mock.Mock()
- self.requests_log = mock.Mock()
- self.requests_log.setLevel = mock.Mock()
- self.cliff_log = mock.Mock()
- self.cliff_log.setLevel = mock.Mock()
- self.stevedore_log = mock.Mock()
- self.stevedore_log.setLevel = mock.Mock()
- self.iso8601_log = mock.Mock()
- self.iso8601_log.setLevel = mock.Mock()
- self.loggers = [
- self.root_logger,
- self.requests_log,
- self.cliff_log,
- self.stevedore_log,
- self.iso8601_log,
- ]
-
- @mock.patch('logging.StreamHandler')
- @mock.patch('logging.getLogger')
- @mock.patch('osc_lib.logs.set_warning_filter')
- def test_init(self, warning_filter, getLogger, handle):
- getLogger.side_effect = self.loggers
- console_logger = mock.Mock()
- console_logger.setFormatter = mock.Mock()
- console_logger.setLevel = mock.Mock()
- handle.return_value = console_logger
-
- configurator = logs.LogConfigurator(self.options)
-
- getLogger.assert_called_with('iso8601') # last call
- warning_filter.assert_called_with(logging.WARNING)
- self.root_logger.setLevel.assert_called_with(logging.DEBUG)
- self.root_logger.addHandler.assert_called_with(console_logger)
- self.requests_log.setLevel.assert_called_with(logging.ERROR)
- self.cliff_log.setLevel.assert_called_with(logging.ERROR)
- self.stevedore_log.setLevel.assert_called_with(logging.ERROR)
- self.iso8601_log.setLevel.assert_called_with(logging.ERROR)
- self.assertFalse(configurator.dump_trace)
-
- @mock.patch('logging.getLogger')
- @mock.patch('osc_lib.logs.set_warning_filter')
- def test_init_no_debug(self, warning_filter, getLogger):
- getLogger.side_effect = self.loggers
- self.options.debug = True
-
- configurator = logs.LogConfigurator(self.options)
-
- warning_filter.assert_called_with(logging.DEBUG)
- self.requests_log.setLevel.assert_called_with(logging.DEBUG)
- self.assertTrue(configurator.dump_trace)
-
- @mock.patch('logging.FileHandler')
- @mock.patch('logging.getLogger')
- @mock.patch('osc_lib.logs.set_warning_filter')
- @mock.patch('osc_lib.logs._FileFormatter')
- def test_init_log_file(self, formatter, warning_filter, getLogger, handle):
- getLogger.side_effect = self.loggers
- self.options.log_file = '/tmp/log_file'
- file_logger = mock.Mock()
- file_logger.setFormatter = mock.Mock()
- file_logger.setLevel = mock.Mock()
- handle.return_value = file_logger
- mock_formatter = mock.Mock()
- formatter.return_value = mock_formatter
-
- logs.LogConfigurator(self.options)
-
- handle.assert_called_with(filename=self.options.log_file)
- self.root_logger.addHandler.assert_called_with(file_logger)
- file_logger.setFormatter.assert_called_with(mock_formatter)
- file_logger.setLevel.assert_called_with(logging.WARNING)
-
- @mock.patch('logging.FileHandler')
- @mock.patch('logging.getLogger')
- @mock.patch('osc_lib.logs.set_warning_filter')
- @mock.patch('osc_lib.logs._FileFormatter')
- def test_configure(self, formatter, warning_filter, getLogger, handle):
- getLogger.side_effect = self.loggers
- configurator = logs.LogConfigurator(self.options)
- cloud_config = mock.Mock()
- config_log = '/tmp/config_log'
- cloud_config.config = {
- 'log_file': config_log,
- 'verbose_level': 1,
- 'log_level': 'info',
- }
- file_logger = mock.Mock()
- file_logger.setFormatter = mock.Mock()
- file_logger.setLevel = mock.Mock()
- handle.return_value = file_logger
- mock_formatter = mock.Mock()
- formatter.return_value = mock_formatter
-
- configurator.configure(cloud_config)
-
- warning_filter.assert_called_with(logging.INFO)
- handle.assert_called_with(filename=config_log)
- self.root_logger.addHandler.assert_called_with(file_logger)
- file_logger.setFormatter.assert_called_with(mock_formatter)
- file_logger.setLevel.assert_called_with(logging.INFO)
- self.assertFalse(configurator.dump_trace)
diff --git a/openstackclient/tests/unit/common/test_module.py b/openstackclient/tests/unit/common/test_module.py
index 476538a..8396203 100644
--- a/openstackclient/tests/unit/common/test_module.py
+++ b/openstackclient/tests/unit/common/test_module.py
@@ -11,7 +11,6 @@
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
-#
"""Test module module"""
@@ -19,10 +18,18 @@ import sys
from unittest import mock
from openstackclient.common import module as osc_module
-from openstackclient.tests.unit import fakes
from openstackclient.tests.unit import utils
+class FakeModule:
+ def __init__(self, name, version):
+ self.name = name
+ self.__version__ = version
+ # Workaround for openstacksdk case
+ self.version = mock.Mock()
+ self.version.__version__ = version
+
+
# NOTE(dtroyer): module_1 must match the version list filter (not --all)
# currently == '*client*'
module_name_1 = 'fakeclient'
@@ -45,11 +52,11 @@ module_version_5 = '0.0.1'
MODULES = {
'sys': sys,
- module_name_1: fakes.FakeModule(module_name_1, module_version_1),
- module_name_2: fakes.FakeModule(module_name_2, module_version_2),
- module_name_3: fakes.FakeModule(module_name_3, module_version_3),
- module_name_4: fakes.FakeModule(module_name_4, module_version_4),
- module_name_5: fakes.FakeModule(module_name_5, module_version_5),
+ module_name_1: FakeModule(module_name_1, module_version_1),
+ module_name_2: FakeModule(module_name_2, module_version_2),
+ module_name_3: FakeModule(module_name_3, module_version_3),
+ module_name_4: FakeModule(module_name_4, module_version_4),
+ module_name_5: FakeModule(module_name_5, module_version_5),
}
diff --git a/openstackclient/tests/unit/common/test_quota.py b/openstackclient/tests/unit/common/test_quota.py
index 53df4da..7bfb2e7 100644
--- a/openstackclient/tests/unit/common/test_quota.py
+++ b/openstackclient/tests/unit/common/test_quota.py
@@ -10,6 +10,7 @@
# License for the specific language governing permissions and limitations
# under the License.
+import copy
from unittest import mock
from openstack.block_storage.v3 import quota_set as _volume_quota_set
@@ -1041,6 +1042,26 @@ class TestQuotaShow(TestQuota):
)
self.assertNotCalled(self.network_client.get_quota_default)
+ def test_quota_show__missing_services(self):
+ self.app.client_manager.compute_endpoint_enabled = False
+ self.app.client_manager.volume_endpoint_enabled = False
+ self.app.client_manager.network_endpoint_enabled = False
+
+ arglist = [
+ self.projects[0].name,
+ ]
+ verifylist = [
+ ('service', 'all'),
+ ('project', self.projects[0].name),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ self.cmd.take_action(parsed_args)
+
+ self.compute_client.get_quota_set.assert_not_called()
+ self.volume_sdk_client.get_quota_set.assert_not_called()
+ self.network_client.get_quota.assert_not_called()
+
def test_quota_show__with_compute(self):
arglist = [
'--compute',
@@ -1102,6 +1123,64 @@ class TestQuotaShow(TestQuota):
)
self.assertNotCalled(self.network_client.get_quota_default)
+ def test_quota_show__with_network_and_usage(self):
+ # ensure we do not interfere with other tests
+ self._network_quota_details = copy.deepcopy(
+ self._network_quota_details
+ )
+ # set a couple of resources
+ self._network_quota_details["floating_ips"].update(
+ limit=30, reserved=20, used=7
+ )
+ self._network_quota_details["security_group_rules"].update(
+ limit=9, reserved=7, used=5
+ )
+
+ arglist = [
+ '--network',
+ '--usage',
+ self.projects[0].name,
+ ]
+ verifylist = [
+ ('service', 'network'),
+ ('project', self.projects[0].name),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ headers, result_gen = self.cmd.take_action(parsed_args)
+
+ self.assertEqual(('Resource', 'Limit', 'In Use', 'Reserved'), headers)
+
+ result = sorted(result_gen)
+
+ self.assertEqual(
+ [
+ ('floating-ips', 30, 7, 20),
+ ('health_monitors', 0, 0, 0),
+ ('l7_policies', 0, 0, 0),
+ ('listeners', 0, 0, 0),
+ ('load_balancers', 0, 0, 0),
+ ('networks', 0, 0, 0),
+ ('pools', 0, 0, 0),
+ ('ports', 0, 0, 0),
+ ('rbac_policies', 0, 0, 0),
+ ('routers', 0, 0, 0),
+ ('secgroup-rules', 9, 5, 7),
+ ('secgroups', 0, 0, 0),
+ ('subnet_pools', 0, 0, 0),
+ ('subnets', 0, 0, 0),
+ ],
+ result,
+ )
+
+ self.compute_client.get_quota_set.assert_not_called()
+ self.volume_sdk_client.get_quota_set.assert_not_called()
+ self.network_client.get_quota.assert_called_once_with(
+ self.projects[0].id,
+ details=True,
+ )
+ self.assertNotCalled(self.network_client.get_quota_default)
+
def test_quota_show__with_default(self):
arglist = [
'--default',
diff --git a/openstackclient/tests/unit/compute/v2/test_aggregate.py b/openstackclient/tests/unit/compute/v2/test_aggregate.py
index 813cbb9..b68e76e 100644
--- a/openstackclient/tests/unit/compute/v2/test_aggregate.py
+++ b/openstackclient/tests/unit/compute/v2/test_aggregate.py
@@ -165,9 +165,11 @@ class TestAggregateDelete(TestAggregate):
sdk_fakes.generate_fake_resources(_aggregate.Aggregate, 2)
)
- self.compute_client.find_aggregate = mock.Mock(
- side_effect=[self.fake_ags[0], self.fake_ags[1]]
- )
+ self.compute_client.find_aggregate.side_effect = [
+ self.fake_ags[0],
+ self.fake_ags[1],
+ ]
+
self.cmd = aggregate.DeleteAggregate(self.app, None)
def test_aggregate_delete(self):
diff --git a/openstackclient/tests/unit/compute/v2/test_console.py b/openstackclient/tests/unit/compute/v2/test_console.py
index 423290c..8d9d36c 100644
--- a/openstackclient/tests/unit/compute/v2/test_console.py
+++ b/openstackclient/tests/unit/compute/v2/test_console.py
@@ -13,7 +13,6 @@
# under the License.
#
-from unittest import mock
from openstack.compute.v2 import server as _server
from openstack.test import fakes as sdk_fakes
@@ -90,9 +89,7 @@ class TestConsoleUrlShow(compute_fakes.TestComputev2):
'protocol': 'fake_protocol',
'type': 'fake_type',
}
- self.compute_client.create_console = mock.Mock(
- return_value=fake_console_data
- )
+ self.compute_client.create_console.return_value = fake_console_data
self.columns = (
'protocol',
diff --git a/openstackclient/tests/unit/compute/v2/test_flavor.py b/openstackclient/tests/unit/compute/v2/test_flavor.py
index 0b3a4ae..25bc8ea 100644
--- a/openstackclient/tests/unit/compute/v2/test_flavor.py
+++ b/openstackclient/tests/unit/compute/v2/test_flavor.py
@@ -680,9 +680,7 @@ class TestFlavorList(TestFlavor):
)
self.compute_client.flavors.side_effect = [[flavor], []]
- self.compute_client.fetch_flavor_extra_specs = mock.Mock(
- return_value=None
- )
+ self.compute_client.fetch_flavor_extra_specs.return_value = None
arglist = [
'--long',
diff --git a/openstackclient/tests/unit/compute/v2/test_hypervisor_stats.py b/openstackclient/tests/unit/compute/v2/test_hypervisor_stats.py
index 045efda..89d4d45 100644
--- a/openstackclient/tests/unit/compute/v2/test_hypervisor_stats.py
+++ b/openstackclient/tests/unit/compute/v2/test_hypervisor_stats.py
@@ -12,20 +12,12 @@
# License for the specific language governing permissions and limitations
# under the License.
#
-from unittest import mock
from openstackclient.compute.v2 import hypervisor_stats
from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
from openstackclient.tests.unit import fakes
-class TestHypervisorStats(compute_fakes.TestComputev2):
- def setUp(self):
- super().setUp()
-
- self.compute_client.get = mock.Mock()
-
-
# Not in fakes.py because hypervisor stats has been deprecated
@@ -61,7 +53,7 @@ def create_one_hypervisor_stats(attrs=None):
return stats_info
-class TestHypervisorStatsShow(TestHypervisorStats):
+class TestHypervisorStatsShow(compute_fakes.TestComputev2):
_stats = create_one_hypervisor_stats()
def setUp(self):
diff --git a/openstackclient/tests/unit/compute/v2/test_server.py b/openstackclient/tests/unit/compute/v2/test_server.py
index 8695136..8da3516 100644
--- a/openstackclient/tests/unit/compute/v2/test_server.py
+++ b/openstackclient/tests/unit/compute/v2/test_server.py
@@ -13,7 +13,6 @@
# under the License.
import base64
-import collections
import getpass
import json
import tempfile
@@ -21,9 +20,11 @@ from unittest import mock
import uuid
import iso8601
+from openstack.compute.v2 import flavor as _flavor
from openstack.compute.v2 import server as _server
from openstack.compute.v2 import server_group as _server_group
from openstack import exceptions as sdk_exceptions
+from openstack.image.v2 import image as _image
from openstack.test import fakes as sdk_fakes
from osc_lib.cli import format_columns
from osc_lib import exceptions
@@ -1212,7 +1213,6 @@ class TestServerCreate(TestServer):
'locked',
'locked_reason',
'name',
- 'pinned_availability_zone',
'progress',
'project_id',
'properties',
@@ -1261,7 +1261,6 @@ class TestServerCreate(TestServer):
None, # locked
None, # locked_reason
self.server.name,
- None, # pinned_availability_zone
None, # progress
None, # project_id
format_columns.DictColumn({}), # properties
@@ -4450,6 +4449,55 @@ class TestServerDelete(compute_fakes.TestComputev2):
)
self.assertIsNone(result)
+ def test_server_delete_multi_servers_with_exceptions(self):
+ servers = compute_fakes.create_servers(count=2)
+ self.compute_client.find_server.side_effect = [
+ servers[0],
+ sdk_exceptions.ResourceNotFound(),
+ servers[1],
+ ]
+
+ arglist = [servers[0].id, 'unexist_server', servers[1].id]
+
+ verifylist = [
+ ('force', False),
+ ('all_projects', False),
+ ('wait', False),
+ (
+ 'server',
+ [servers[0].id, 'unexist_server', servers[1].id],
+ ),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ exc = self.assertRaises(
+ exceptions.CommandError,
+ self.cmd.take_action,
+ parsed_args,
+ )
+ self.assertEqual('1 of 3 servers failed to delete.', str(exc))
+
+ self.compute_client.find_server.assert_has_calls(
+ [
+ mock.call(
+ servers[0].id, ignore_missing=False, all_projects=False
+ ),
+ mock.call(
+ 'unexist_server', ignore_missing=False, all_projects=False
+ ),
+ mock.call(
+ servers[1].id, ignore_missing=False, all_projects=False
+ ),
+ ]
+ )
+
+ self.compute_client.delete_server.assert_has_calls(
+ [
+ mock.call(servers[0], force=False),
+ mock.call(servers[1], force=False),
+ ]
+ )
+
def test_server_delete_with_all_projects(self):
arglist = [
self.server.id,
@@ -4583,10 +4631,8 @@ class _TestServerList(TestServer):
'Flavor Name',
'Flavor ID',
'Availability Zone',
- 'Pinned Availability Zone',
'Host',
'Properties',
- 'Scheduler Hints',
)
columns_all_projects = (
'ID',
@@ -4653,17 +4699,19 @@ class TestServerList(_TestServerList):
def setUp(self):
super().setUp()
- Image = collections.namedtuple('Image', 'id name')
self.image_client.images.return_value = [
- Image(id=s.image['id'], name=self.image.name)
+ sdk_fakes.generate_fake_resource(
+ _image.Image, id=s.image['id'], name=self.image.name
+ )
# Image will be an empty string if boot-from-volume
for s in self.servers
if s.image
]
- Flavor = collections.namedtuple('Flavor', 'id name')
self.compute_client.flavors.return_value = [
- Flavor(id=s.flavor['id'], name=self.flavor.name)
+ sdk_fakes.generate_fake_resource(
+ _flavor.Flavor, id=s.flavor['id'], name=self.flavor.name
+ )
for s in self.servers
]
@@ -4732,10 +4780,8 @@ class TestServerList(_TestServerList):
self.flavor.name,
s.flavor['id'],
getattr(s, 'availability_zone'),
- getattr(s, 'pinned_availability_zone', ''),
server.HostColumn(getattr(s, 'hypervisor_hostname')),
format_columns.DictColumn(s.metadata),
- format_columns.DictListColumn(None),
)
for s in self.servers
)
@@ -4809,13 +4855,9 @@ class TestServerList(_TestServerList):
'-c',
'Availability Zone',
'-c',
- 'Pinned Availability Zone',
- '-c',
'Host',
'-c',
'Properties',
- '-c',
- 'Scheduler Hints',
'--long',
]
verifylist = [
@@ -4835,10 +4877,8 @@ class TestServerList(_TestServerList):
self.assertIn('Image ID', columns)
self.assertIn('Flavor ID', columns)
self.assertIn('Availability Zone', columns)
- self.assertIn('Pinned Availability Zone', columns)
self.assertIn('Host', columns)
self.assertIn('Properties', columns)
- self.assertIn('Scheduler Hints', columns)
self.assertCountEqual(columns, set(columns))
def test_server_list_no_name_lookup_option(self):
@@ -5249,10 +5289,8 @@ class TestServerList(_TestServerList):
self.flavor.name,
s.flavor['id'],
getattr(s, 'availability_zone'),
- getattr(s, 'pinned_availability_zone', ''),
server.HostColumn(getattr(s, 'hypervisor_hostname')),
format_columns.DictColumn(s.metadata),
- format_columns.DictListColumn(s.scheduler_hints),
)
for s in self.servers
)
@@ -5281,9 +5319,10 @@ class TestServerList(_TestServerList):
self.compute_client.servers.return_value = servers
# Make sure the returned image and flavor IDs match the servers.
- Image = collections.namedtuple('Image', 'id name')
self.image_client.images.return_value = [
- Image(id=s.image['id'], name=self.image.name)
+ sdk_fakes.generate_fake_resource(
+ _image.Image, id=s.image['id'], name=self.image.name
+ )
# Image will be an empty string if boot-from-volume
for s in servers
if s.image
@@ -5305,10 +5344,8 @@ class TestServerList(_TestServerList):
self.flavor.name,
s.flavor['id'],
getattr(s, 'availability_zone'),
- getattr(s, 'pinned_availability_zone', ''),
server.HostColumn(getattr(s, 'hypervisor_hostname')),
format_columns.DictColumn(s.metadata),
- format_columns.DictListColumn(s.scheduler_hints),
s.host_status,
)
for s in servers
@@ -5343,7 +5380,6 @@ class TestServerListV273(_TestServerList):
'Image ID',
'Flavor',
'Availability Zone',
- 'Pinned Availability Zone',
'Host',
'Properties',
'Scheduler Hints',
@@ -5368,9 +5404,10 @@ class TestServerListV273(_TestServerList):
self.servers = self.setup_sdk_servers_mock(3)
self.compute_client.servers.return_value = self.servers
- Image = collections.namedtuple('Image', 'id name')
self.image_client.images.return_value = [
- Image(id=s.image['id'], name=self.image.name)
+ sdk_fakes.generate_fake_resource(
+ _image.Image, id=s.image['id'], name=self.image.name
+ )
# Image will be an empty string if boot-from-volume
for s in self.servers
if s.image
@@ -5541,6 +5578,307 @@ class TestServerListV273(_TestServerList):
self.assertEqual(expected_row, partial_server)
+class TestServerListV296(_TestServerList):
+ columns = (
+ 'ID',
+ 'Name',
+ 'Status',
+ 'Networks',
+ 'Image',
+ 'Flavor',
+ )
+ columns_long = (
+ 'ID',
+ 'Name',
+ 'Status',
+ 'Task State',
+ 'Power State',
+ 'Networks',
+ 'Image Name',
+ 'Image ID',
+ 'Flavor',
+ 'Availability Zone',
+ 'Host',
+ 'Properties',
+ 'Pinned Availability Zone',
+ )
+
+ def setUp(self):
+ super().setUp()
+ self.set_compute_api_version('2.96')
+
+ self.image_client.images.return_value = [
+ sdk_fakes.generate_fake_resource(
+ _image.Image, id=s.image['id'], name=self.image.name
+ )
+ # Image will be an empty string if boot-from-volume
+ for s in self.servers
+ if s.image
+ ]
+
+ self.compute_client.flavors.return_value = [
+ sdk_fakes.generate_fake_resource(
+ _flavor.Flavor, id=s.flavor['id'], name=self.flavor.name
+ )
+ for s in self.servers
+ ]
+
+ self.data = tuple(
+ (
+ s.id,
+ s.name,
+ s.status,
+ server.AddressesColumn(s.addresses),
+ # Image will be an empty string if boot-from-volume
+ self.image.name if s.image else server.IMAGE_STRING_FOR_BFV,
+ self.flavor.name,
+ )
+ for s in self.servers
+ )
+
+ def test_server_list_long_option(self):
+ self.data = tuple(
+ (
+ s.id,
+ s.name,
+ s.status,
+ getattr(s, 'task_state'),
+ server.PowerStateColumn(getattr(s, 'power_state')),
+ server.AddressesColumn(s.addresses),
+ # Image will be an empty string if boot-from-volume
+ self.image.name if s.image else server.IMAGE_STRING_FOR_BFV,
+ s.image['id'] if s.image else server.IMAGE_STRING_FOR_BFV,
+ self.flavor.name,
+ getattr(s, 'availability_zone'),
+ server.HostColumn(getattr(s, 'hypervisor_hostname')),
+ format_columns.DictColumn(s.metadata),
+ getattr(s, 'pinned_availability_zone', ''),
+ )
+ for s in self.servers
+ )
+ arglist = [
+ '--long',
+ ]
+ verifylist = [
+ ('all_projects', False),
+ ('long', True),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+ self.compute_client.servers.assert_called_with(**self.kwargs)
+ image_ids = {s.image['id'] for s in self.servers if s.image}
+ self.image_client.images.assert_called_once_with(
+ id=f'in:{",".join(image_ids)}',
+ )
+ self.compute_client.flavors.assert_called_once_with(is_public=None)
+ self.assertEqual(self.columns_long, columns)
+ self.assertEqual(self.data, tuple(data))
+
+ def test_server_list_column_option(self):
+ arglist = [
+ '-c',
+ 'Project ID',
+ '-c',
+ 'User ID',
+ '-c',
+ 'Created At',
+ '-c',
+ 'Security Groups',
+ '-c',
+ 'Task State',
+ '-c',
+ 'Power State',
+ '-c',
+ 'Image ID',
+ '-c',
+ 'Flavor ID',
+ '-c',
+ 'Availability Zone',
+ '-c',
+ 'Host',
+ '-c',
+ 'Properties',
+ '-c',
+ 'Pinned Availability Zone',
+ '--long',
+ ]
+ verifylist = [
+ ('long', True),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+
+ self.compute_client.servers.assert_called_with(**self.kwargs)
+ self.assertIn('Project ID', columns)
+ self.assertIn('User ID', columns)
+ self.assertIn('Created At', columns)
+ self.assertIn('Security Groups', columns)
+ self.assertIn('Task State', columns)
+ self.assertIn('Power State', columns)
+ self.assertIn('Image ID', columns)
+ self.assertIn('Flavor ID', columns)
+ self.assertIn('Availability Zone', columns)
+ self.assertIn('Pinned Availability Zone', columns)
+ self.assertIn('Host', columns)
+ self.assertIn('Properties', columns)
+ self.assertCountEqual(columns, set(columns))
+
+
+class TestServerListV2100(_TestServerList):
+ columns = (
+ 'ID',
+ 'Name',
+ 'Status',
+ 'Networks',
+ 'Image',
+ 'Flavor',
+ )
+ columns_long = (
+ 'ID',
+ 'Name',
+ 'Status',
+ 'Task State',
+ 'Power State',
+ 'Networks',
+ 'Image Name',
+ 'Image ID',
+ 'Flavor',
+ 'Availability Zone',
+ 'Host',
+ 'Properties',
+ 'Pinned Availability Zone',
+ 'Scheduler Hints',
+ )
+
+ def setUp(self):
+ super().setUp()
+ self.set_compute_api_version('2.100')
+
+ self.image_client.images.return_value = [
+ sdk_fakes.generate_fake_resource(
+ _image.Image, id=s.image['id'], name=self.image.name
+ )
+ # Image will be an empty string if boot-from-volume
+ for s in self.servers
+ if s.image
+ ]
+
+ self.compute_client.flavors.return_value = [
+ sdk_fakes.generate_fake_resource(
+ _flavor.Flavor, id=s.flavor['id'], name=self.flavor.name
+ )
+ for s in self.servers
+ ]
+
+ self.data = tuple(
+ (
+ s.id,
+ s.name,
+ s.status,
+ server.AddressesColumn(s.addresses),
+ # Image will be an empty string if boot-from-volume
+ self.image.name if s.image else server.IMAGE_STRING_FOR_BFV,
+ self.flavor.name,
+ )
+ for s in self.servers
+ )
+
+ def test_server_list_long_option(self):
+ self.data = tuple(
+ (
+ s.id,
+ s.name,
+ s.status,
+ getattr(s, 'task_state'),
+ server.PowerStateColumn(getattr(s, 'power_state')),
+ server.AddressesColumn(s.addresses),
+ # Image will be an empty string if boot-from-volume
+ self.image.name if s.image else server.IMAGE_STRING_FOR_BFV,
+ s.image['id'] if s.image else server.IMAGE_STRING_FOR_BFV,
+ self.flavor.name,
+ getattr(s, 'availability_zone'),
+ server.HostColumn(getattr(s, 'hypervisor_hostname')),
+ format_columns.DictColumn(s.metadata),
+ getattr(s, 'pinned_availability_zone', ''),
+ format_columns.DictListColumn(None),
+ )
+ for s in self.servers
+ )
+ arglist = [
+ '--long',
+ ]
+ verifylist = [
+ ('all_projects', False),
+ ('long', True),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+ self.compute_client.servers.assert_called_with(**self.kwargs)
+ image_ids = {s.image['id'] for s in self.servers if s.image}
+ self.image_client.images.assert_called_once_with(
+ id=f'in:{",".join(image_ids)}',
+ )
+ self.compute_client.flavors.assert_called_once_with(is_public=None)
+ self.assertEqual(self.columns_long, columns)
+ self.assertEqual(self.data, tuple(data))
+
+ def test_server_list_column_option(self):
+ arglist = [
+ '-c',
+ 'Project ID',
+ '-c',
+ 'User ID',
+ '-c',
+ 'Created At',
+ '-c',
+ 'Security Groups',
+ '-c',
+ 'Task State',
+ '-c',
+ 'Power State',
+ '-c',
+ 'Image ID',
+ '-c',
+ 'Flavor ID',
+ '-c',
+ 'Availability Zone',
+ '-c',
+ 'Host',
+ '-c',
+ 'Properties',
+ '-c',
+ 'Pinned Availability Zone',
+ '-c',
+ 'Scheduler Hints',
+ '--long',
+ ]
+ verifylist = [
+ ('long', True),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+
+ self.compute_client.servers.assert_called_with(**self.kwargs)
+ self.assertIn('Project ID', columns)
+ self.assertIn('User ID', columns)
+ self.assertIn('Created At', columns)
+ self.assertIn('Security Groups', columns)
+ self.assertIn('Task State', columns)
+ self.assertIn('Power State', columns)
+ self.assertIn('Image ID', columns)
+ self.assertIn('Flavor ID', columns)
+ self.assertIn('Availability Zone', columns)
+ self.assertIn('Pinned Availability Zone', columns)
+ self.assertIn('Host', columns)
+ self.assertIn('Properties', columns)
+ self.assertIn('Scheduler Hints', columns)
+ self.assertCountEqual(columns, set(columns))
+
+
class TestServerAction(compute_fakes.TestComputev2):
def run_method_with_sdk_servers(self, method_name, server_count):
servers = compute_fakes.create_servers(count=server_count)
@@ -7558,15 +7896,13 @@ class TestServerResize(compute_fakes.TestComputev2):
('server', self.server.id),
]
- parsed_args = self.check_parser(self.cmd, arglist, verifylist)
- result = self.cmd.take_action(parsed_args)
-
- self.compute_client.find_server.assert_called_once_with(
- self.server.id, ignore_missing=False
+ self.assertRaises(
+ test_utils.ParserException,
+ self.check_parser,
+ self.cmd,
+ arglist,
+ verifylist,
)
- self.compute_client.find_flavor.assert_not_called()
- self.compute_client.resize_server.assert_not_called()
- self.assertIsNone(result)
def test_server_resize(self):
arglist = [
@@ -8533,7 +8869,6 @@ class TestServerShow(TestServer):
'locked',
'locked_reason',
'name',
- 'pinned_availability_zone',
'progress',
'project_id',
'properties',
@@ -8583,7 +8918,6 @@ class TestServerShow(TestServer):
None, # locked
None, # locked_reason
self.server.name,
- None, # pinned_availability_zone
None, # progress
'tenant-id-xxx', # project_id
format_columns.DictColumn({}), # properties
@@ -9522,7 +9856,6 @@ class TestServerGeneral(TestServer):
'locked': None,
'locked_reason': None,
'name': _server.name,
- 'pinned_availability_zone': None,
'progress': None,
'project_id': 'tenant-id-xxx',
'properties': format_columns.DictColumn({}),
@@ -9609,7 +9942,6 @@ class TestServerGeneral(TestServer):
'locked': None,
'locked_reason': None,
'name': _server.name,
- 'pinned_availability_zone': None,
'progress': None,
'project_id': 'tenant-id-xxx',
'properties': format_columns.DictColumn({}),
diff --git a/openstackclient/tests/unit/compute/v2/test_server_backup.py b/openstackclient/tests/unit/compute/v2/test_server_backup.py
index 0d039d2..cc8acfb 100644
--- a/openstackclient/tests/unit/compute/v2/test_server_backup.py
+++ b/openstackclient/tests/unit/compute/v2/test_server_backup.py
@@ -161,9 +161,7 @@ class TestServerBackupCreate(compute_fakes.TestComputev2):
@mock.patch.object(common_utils, 'wait_for_status', return_value=True)
def test_server_backup_wait_ok(self, mock_wait_for_status):
- self.image_client.get_image = mock.Mock(
- side_effect=self.image,
- )
+ self.image_client.get_image.side_effect = (self.image,)
arglist = [
'--name',
diff --git a/openstackclient/tests/unit/compute/v2/test_service.py b/openstackclient/tests/unit/compute/v2/test_service.py
index c64a2b9..a47ea72 100644
--- a/openstackclient/tests/unit/compute/v2/test_service.py
+++ b/openstackclient/tests/unit/compute/v2/test_service.py
@@ -77,9 +77,7 @@ class TestServiceDelete(compute_fakes.TestComputev2):
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
delete_mock_result = [None, exceptions.CommandError]
- self.compute_client.delete_service = mock.Mock(
- side_effect=delete_mock_result
- )
+ self.compute_client.delete_service.side_effect = delete_mock_result
try:
self.cmd.take_action(parsed_args)
diff --git a/openstackclient/tests/unit/fakes.py b/openstackclient/tests/unit/fakes.py
index 0d378ff..be9d7f2 100644
--- a/openstackclient/tests/unit/fakes.py
+++ b/openstackclient/tests/unit/fakes.py
@@ -12,13 +12,43 @@
# License for the specific language governing permissions and limitations
# under the License.
+# TODO(stephenfin): Remove the contents of this module in favour of the osc_lib
+# version once our min version is bumped to 4.3.0
+
import json
-import sys
from unittest import mock
from keystoneauth1 import fixture
+from osc_lib.tests.fakes import (
+ FakeApp,
+ FakeClientManager as BaseFakeClientManager,
+ FakeLog,
+ FakeOptions,
+ FakeResource as BaseFakeResource,
+ FakeStdout,
+)
import requests
+__all__ = [
+ 'AUTH_TOKEN',
+ 'AUTH_URL',
+ 'INTERFACE',
+ 'PASSWORD',
+ 'PROJECT_NAME',
+ 'REGION_NAME',
+ 'TEST_RESPONSE_DICT',
+ 'TEST_RESPONSE_DICT_V3',
+ 'TEST_VERSIONS',
+ 'USERNAME',
+ 'VERSION',
+ 'FakeApp',
+ 'FakeClientManager',
+ 'FakeLog',
+ 'FakeOptions',
+ 'FakeResource',
+ 'FakeResponse',
+ 'FakeStdout',
+]
AUTH_TOKEN = "foobar"
AUTH_URL = "http://0.0.0.0"
@@ -47,79 +77,15 @@ TEST_RESPONSE_DICT_V3.set_project_scope()
TEST_VERSIONS = fixture.DiscoveryList(href=AUTH_URL)
-class FakeStdout:
- def __init__(self):
- self.content = []
-
- def write(self, text):
- self.content.append(text)
-
- def make_string(self):
- result = ''
- for line in self.content:
- result = result + line
- return result
-
-
-class FakeLog:
- def __init__(self):
- self.messages = {}
-
- def debug(self, msg):
- self.messages['debug'] = msg
-
- def info(self, msg):
- self.messages['info'] = msg
-
- def warning(self, msg):
- self.messages['warning'] = msg
-
- def error(self, msg):
- self.messages['error'] = msg
-
- def critical(self, msg):
- self.messages['critical'] = msg
-
-
-class FakeApp:
- def __init__(self, _stdout, _log):
- self.stdout = _stdout
- self.client_manager = None
- self.api_version = {}
- self.stdin = sys.stdin
- self.stdout = _stdout or sys.stdout
- self.stderr = sys.stderr
- self.log = _log
-
-
-class FakeOptions:
- def __init__(self, **kwargs):
- self.os_beta_command = False
-
-
-class FakeClient:
- def __init__(self, **kwargs):
- self.endpoint = kwargs['endpoint']
- self.token = kwargs['token']
-
-
-class FakeClientManager:
+class FakeClientManager(BaseFakeClientManager):
_api_version = {
'image': '2',
}
def __init__(self):
- self.compute = None
- self.identity = None
- self.image = None
- self.object_store = None
- self.volume = None
- self.network = None
- self.sdk_connection = mock.Mock()
+ super().__init__()
- self.session = None
- self.auth_ref = None
- self.auth_plugin_name = None
+ self.sdk_connection = mock.Mock()
self.network_endpoint_enabled = True
self.compute_endpoint_enabled = True
@@ -158,64 +124,7 @@ class FakeClientManager:
return self.volume_endpoint_enabled
-class FakeModule:
- def __init__(self, name, version):
- self.name = name
- self.__version__ = version
- # Workaround for openstacksdk case
- self.version = mock.Mock()
- self.version.__version__ = version
-
-
-class FakeResource:
- def __init__(self, manager=None, info=None, loaded=False, methods=None):
- """Set attributes and methods for a resource.
-
- :param manager:
- The resource manager
- :param Dictionary info:
- A dictionary with all attributes
- :param bool loaded:
- True if the resource is loaded in memory
- :param Dictionary methods:
- A dictionary with all methods
- """
- info = info or {}
- methods = methods or {}
-
- self.__name__ = type(self).__name__
- self.manager = manager
- self._info = info
- self._add_details(info)
- self._add_methods(methods)
- self._loaded = loaded
-
- def _add_details(self, info):
- for k, v in info.items():
- setattr(self, k, v)
-
- def _add_methods(self, methods):
- """Fake methods with MagicMock objects.
-
- For each <@key, @value> pairs in methods, add an callable MagicMock
- object named @key as an attribute, and set the mock's return_value to
- @value. When users access the attribute with (), @value will be
- returned, which looks like a function call.
- """
- for name, ret in methods.items():
- method = mock.Mock(return_value=ret)
- setattr(self, name, method)
-
- def __repr__(self):
- reprkeys = sorted(
- k for k in self.__dict__.keys() if k[0] != '_' and k != 'manager'
- )
- info = ", ".join(f"{k}={getattr(self, k)}" for k in reprkeys)
- return f"<{self.__class__.__name__} {info}>"
-
- def keys(self):
- return self._info.keys()
-
+class FakeResource(BaseFakeResource):
def to_dict(self):
return self._info
@@ -247,11 +156,3 @@ class FakeResponse(requests.Response):
self._content = json.dumps(data)
if not isinstance(self._content, bytes):
self._content = self._content.encode()
-
-
-class FakeModel(dict):
- def __getattr__(self, key):
- try:
- return self[key]
- except KeyError:
- raise AttributeError(key)
diff --git a/openstackclient/tests/unit/identity/test_common.py b/openstackclient/tests/unit/identity/test_common.py
new file mode 100644
index 0000000..ae85262
--- /dev/null
+++ b/openstackclient/tests/unit/identity/test_common.py
@@ -0,0 +1,100 @@
+# 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 unittest import mock
+
+from openstack import exceptions as sdk_exc
+from openstack.identity.v3 import user as _user
+from openstack.test import fakes as sdk_fakes
+from osc_lib import exceptions
+
+from openstackclient.identity import common
+from openstackclient.tests.unit import utils as test_utils
+
+
+class TestFindSDKId(test_utils.TestCase):
+ def setUp(self):
+ super().setUp()
+ self.user = sdk_fakes.generate_fake_resource(_user.User)
+ self.identity_sdk_client = mock.Mock()
+ self.identity_sdk_client.find_user = mock.Mock()
+
+ def test_find_sdk_id_validate(self):
+ self.identity_sdk_client.find_user.side_effect = [self.user]
+
+ result = common._find_sdk_id(
+ self.identity_sdk_client.find_user,
+ name_or_id=self.user.id,
+ validate_actor_existence=True,
+ )
+ self.assertEqual(self.user.id, result)
+
+ def test_find_sdk_id_no_validate(self):
+ self.identity_sdk_client.find_user.side_effect = [self.user]
+
+ result = common._find_sdk_id(
+ self.identity_sdk_client.find_user,
+ name_or_id=self.user.id,
+ validate_actor_existence=False,
+ )
+ self.assertEqual(self.user.id, result)
+
+ def test_find_sdk_id_not_found_validate(self):
+ self.identity_sdk_client.find_user.side_effect = [
+ sdk_exc.ResourceNotFound,
+ ]
+
+ self.assertRaises(
+ exceptions.CommandError,
+ common._find_sdk_id,
+ self.identity_sdk_client.find_user,
+ name_or_id=self.user.id,
+ validate_actor_existence=True,
+ )
+
+ def test_find_sdk_id_not_found_no_validate(self):
+ self.identity_sdk_client.find_user.side_effect = [
+ sdk_exc.ResourceNotFound,
+ ]
+
+ result = common._find_sdk_id(
+ self.identity_sdk_client.find_user,
+ name_or_id=self.user.id,
+ validate_actor_existence=False,
+ )
+ self.assertEqual(self.user.id, result)
+
+ def test_find_sdk_id_forbidden_validate(self):
+ self.identity_sdk_client.find_user.side_effect = [
+ sdk_exc.ForbiddenException,
+ ]
+
+ result = common._find_sdk_id(
+ self.identity_sdk_client.find_user,
+ name_or_id=self.user.id,
+ validate_actor_existence=True,
+ )
+
+ self.assertEqual(self.user.id, result)
+
+ def test_find_sdk_id_forbidden_no_validate(self):
+ self.identity_sdk_client.find_user.side_effect = [
+ sdk_exc.ForbiddenException,
+ ]
+
+ result = common._find_sdk_id(
+ self.identity_sdk_client.find_user,
+ name_or_id=self.user.id,
+ validate_actor_existence=False,
+ )
+
+ self.assertEqual(self.user.id, result)
diff --git a/openstackclient/tests/unit/identity/v2_0/test_project.py b/openstackclient/tests/unit/identity/v2_0/test_project.py
index 9b203b2..bb6a643 100644
--- a/openstackclient/tests/unit/identity/v2_0/test_project.py
+++ b/openstackclient/tests/unit/identity/v2_0/test_project.py
@@ -195,7 +195,7 @@ class TestProjectCreate(TestProject):
self.fake_project.name,
]
verifylist = [
- ('property', {'fee': 'fi', 'fo': 'fum'}),
+ ('properties', {'fee': 'fi', 'fo': 'fum'}),
('name', self.fake_project.name),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -464,7 +464,7 @@ class TestProjectSet(TestProject):
('description', None),
('enable', False),
('disable', False),
- ('property', None),
+ ('properties', None),
]
self.projects_mock.get.side_effect = exceptions.NotFound(None)
self.projects_mock.find.side_effect = exceptions.NotFound(None)
@@ -588,7 +588,7 @@ class TestProjectSet(TestProject):
self.fake_project.name,
]
verifylist = [
- ('property', {'fee': 'fi', 'fo': 'fum'}),
+ ('properties', {'fee': 'fi', 'fo': 'fum'}),
('project', self.fake_project.name),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -683,7 +683,7 @@ class TestProjectUnset(TestProject):
self.fake_proj.name,
]
verifylist = [
- ('property', ['fee', 'fo']),
+ ('properties', ['fee', 'fo']),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
diff --git a/openstackclient/tests/unit/identity/v3/fakes.py b/openstackclient/tests/unit/identity/v3/fakes.py
index ad5ceb2..c42ed47 100644
--- a/openstackclient/tests/unit/identity/v3/fakes.py
+++ b/openstackclient/tests/unit/identity/v3/fakes.py
@@ -693,6 +693,14 @@ class TestIdentityv3(
): ...
+class FakeModel(dict):
+ def __getattr__(self, key):
+ try:
+ return self[key]
+ except KeyError:
+ raise AttributeError(key)
+
+
# We don't use FakeClientMixin since we want a different fake legacy client
class TestFederatedIdentity(utils.TestCommand):
def setUp(self):
@@ -1075,7 +1083,7 @@ class FakeEndpoint:
# Overwrite default attributes if there are some attributes set
endpoint_filter_info.update(attrs)
- endpoint_filter = fakes.FakeModel(copy.deepcopy(endpoint_filter_info))
+ endpoint_filter = FakeModel(copy.deepcopy(endpoint_filter_info))
return endpoint_filter
@@ -1133,7 +1141,7 @@ class FakeEndpointGroup:
# Overwrite default attributes if there are some attributes set
endpointgroup_filter_info.update(attrs)
- endpointgroup_filter = fakes.FakeModel(
+ endpointgroup_filter = FakeModel(
copy.deepcopy(endpointgroup_filter_info)
)
diff --git a/openstackclient/tests/unit/identity/v3/test_application_credential.py b/openstackclient/tests/unit/identity/v3/test_application_credential.py
index a5fda7c..3a3a80e 100644
--- a/openstackclient/tests/unit/identity/v3/test_application_credential.py
+++ b/openstackclient/tests/unit/identity/v3/test_application_credential.py
@@ -120,7 +120,7 @@ class TestApplicationCredentialCreate(identity_fakes.TestIdentityv3):
verifylist = [
('name', self.application_credential.name),
('secret', 'moresecuresecret'),
- ('role', [self.roles.id]),
+ ('roles', [self.roles.id]),
('expiration', '2024-01-01T00:00:00'),
('description', 'credential for testing'),
]
@@ -302,7 +302,7 @@ class TestApplicationCredentialDelete(identity_fakes.TestIdentityv3):
calls = []
for a in arglist:
- calls.append(call(user_id, a))
+ calls.append(call(user_id, a, ignore_missing=False))
self.identity_sdk_client.find_application_credential.assert_has_calls(
calls
@@ -457,7 +457,7 @@ class TestApplicationCredentialShow(identity_fakes.TestIdentityv3):
columns, data = self.cmd.take_action(parsed_args)
self.identity_sdk_client.find_application_credential.assert_called_with(
- user_id, self.application_credential.id
+ user_id, self.application_credential.id, ignore_missing=False
)
self.assertEqual(self.columns, columns)
diff --git a/openstackclient/tests/unit/identity/v3/test_domain.py b/openstackclient/tests/unit/identity/v3/test_domain.py
index abe8076..cc0593d 100644
--- a/openstackclient/tests/unit/identity/v3/test_domain.py
+++ b/openstackclient/tests/unit/identity/v3/test_domain.py
@@ -520,7 +520,7 @@ class TestDomainShow(identity_fakes.TestIdentityv3):
# data to be shown.
columns, data = self.cmd.take_action(parsed_args)
self.identity_sdk_client.find_domain.assert_called_with(
- self.domain.id,
+ self.domain.id, ignore_missing=False
)
self.assertEqual(self.columns, columns)
diff --git a/openstackclient/tests/unit/identity/v3/test_endpoint.py b/openstackclient/tests/unit/identity/v3/test_endpoint.py
index 84e10e5..ba69317 100644
--- a/openstackclient/tests/unit/identity/v3/test_endpoint.py
+++ b/openstackclient/tests/unit/identity/v3/test_endpoint.py
@@ -678,7 +678,7 @@ class TestEndpointShow(identity_fakes.TestIdentityv3):
# data to be shown.
columns, data = self.cmd.take_action(parsed_args)
self.identity_sdk_client.find_endpoint.assert_called_with(
- self.endpoint.id,
+ self.endpoint.id, ignore_missing=False
)
collist = (
diff --git a/openstackclient/tests/unit/identity/v3/test_group.py b/openstackclient/tests/unit/identity/v3/test_group.py
index d212e45..598402e 100644
--- a/openstackclient/tests/unit/identity/v3/test_group.py
+++ b/openstackclient/tests/unit/identity/v3/test_group.py
@@ -253,7 +253,7 @@ class TestGroupCreate(identity_fakes.TestIdentityv3):
columns, data = self.cmd.take_action(parsed_args)
self.identity_sdk_client.find_group.assert_called_once_with(
- self.group.name
+ self.group.name, ignore_missing=False
)
self.assertEqual(self.columns, columns)
datalist = (
@@ -286,7 +286,9 @@ class TestGroupCreate(identity_fakes.TestIdentityv3):
columns, data = self.cmd.take_action(parsed_args)
self.identity_sdk_client.find_group.assert_called_once_with(
- self.group_with_options.name, domain_id=self.domain.id
+ self.group_with_options.name,
+ domain_id=self.domain.id,
+ ignore_missing=False,
)
self.assertEqual(self.columns, columns)
datalist = (
diff --git a/openstackclient/tests/unit/identity/v3/test_identity_provider.py b/openstackclient/tests/unit/identity/v3/test_identity_provider.py
index 20e7f49..c65e947 100644
--- a/openstackclient/tests/unit/identity/v3/test_identity_provider.py
+++ b/openstackclient/tests/unit/identity/v3/test_identity_provider.py
@@ -127,7 +127,7 @@ class TestIdentityProviderCreate(TestIdentityProvider):
]
verifylist = [
('identity_provider_id', identity_fakes.idp_id),
- ('remote_id', identity_fakes.idp_remote_ids[:1]),
+ ('remote_ids', identity_fakes.idp_remote_ids[:1]),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
@@ -157,7 +157,7 @@ class TestIdentityProviderCreate(TestIdentityProvider):
]
verifylist = [
('identity_provider_id', identity_fakes.idp_id),
- ('remote_id', identity_fakes.idp_remote_ids),
+ ('remote_ids', identity_fakes.idp_remote_ids),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
@@ -561,7 +561,7 @@ class TestIdentityProviderSet(TestIdentityProvider):
('description', new_description),
('enable', False),
('disable', False),
- ('remote_id', None),
+ ('remote_ids', None),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
self.cmd.take_action(parsed_args)
@@ -597,7 +597,7 @@ class TestIdentityProviderSet(TestIdentityProvider):
('description', None),
('enable', False),
('disable', True),
- ('remote_id', identity_fakes.idp_remote_ids),
+ ('remote_ids', identity_fakes.idp_remote_ids),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -637,7 +637,7 @@ class TestIdentityProviderSet(TestIdentityProvider):
('description', None),
('enable', True),
('disable', False),
- ('remote_id', identity_fakes.idp_remote_ids),
+ ('remote_ids', identity_fakes.idp_remote_ids),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -675,7 +675,7 @@ class TestIdentityProviderSet(TestIdentityProvider):
('description', None),
('enable', True),
('disable', False),
- ('remote_id', [self.new_remote_id]),
+ ('remote_ids', [self.new_remote_id]),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -756,7 +756,7 @@ class TestIdentityProviderSet(TestIdentityProvider):
('identity_provider', identity_fakes.idp_id),
('enable', False),
('disable', False),
- ('remote_id', None),
+ ('remote_ids', None),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -776,7 +776,7 @@ class TestIdentityProviderSet(TestIdentityProvider):
('identity_provider', identity_fakes.idp_id),
('enable', False),
('disable', False),
- ('remote_id', None),
+ ('remote_ids', None),
('authorization_ttl', 60),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -800,7 +800,7 @@ class TestIdentityProviderSet(TestIdentityProvider):
('identity_provider', identity_fakes.idp_id),
('enable', False),
('disable', False),
- ('remote_id', None),
+ ('remote_ids', None),
('authorization_ttl', 0),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -816,7 +816,7 @@ class TestIdentityProviderSet(TestIdentityProvider):
('identity_provider', identity_fakes.idp_id),
('enable', False),
('disable', False),
- ('remote_id', None),
+ ('remote_ids', None),
('authorization_ttl', -1),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
diff --git a/openstackclient/tests/unit/identity/v3/test_limit.py b/openstackclient/tests/unit/identity/v3/test_limit.py
index a1d180b..4c2184c 100644
--- a/openstackclient/tests/unit/identity/v3/test_limit.py
+++ b/openstackclient/tests/unit/identity/v3/test_limit.py
@@ -10,87 +10,85 @@
# License for the specific language governing permissions and limitations
# under the License.
-import copy
-
-from keystoneauth1.exceptions import http as ksa_exceptions
+from openstack import exceptions as sdk_exc
+from openstack.identity.v3 import domain as _domain
+from openstack.identity.v3 import limit as _limit
+from openstack.identity.v3 import project as _project
+from openstack.identity.v3 import region as _region
+from openstack.identity.v3 import service as _service
+from openstack.test import fakes as sdk_fakes
from osc_lib import exceptions
from openstackclient.identity.v3 import limit
-from openstackclient.tests.unit import fakes
from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
-class TestLimit(identity_fakes.TestIdentityv3):
+class TestLimitCreate(identity_fakes.TestIdentityv3):
def setUp(self):
super().setUp()
- identity_manager = self.identity_client
-
- self.limit_mock = identity_manager.limits
-
- self.services_mock = identity_manager.services
- self.services_mock.reset_mock()
-
- self.projects_mock = identity_manager.projects
- self.projects_mock.reset_mock()
-
- self.regions_mock = identity_manager.regions
- self.regions_mock.reset_mock()
+ self.domain = sdk_fakes.generate_fake_resource(_domain.Domain)
+ self.project = sdk_fakes.generate_fake_resource(
+ _project.Project, domain_id=self.domain.id
+ )
+ self.region = sdk_fakes.generate_fake_resource(_region.Region)
+ self.service = sdk_fakes.generate_fake_resource(_service.Service)
+ self.resource_limit = 15
-class TestLimitCreate(TestLimit):
- def setUp(self):
- super().setUp()
-
- self.service = fakes.FakeResource(
- None, copy.deepcopy(identity_fakes.SERVICE), loaded=True
- )
- self.services_mock.get.return_value = self.service
+ self.identity_sdk_client.find_service.return_value = self.service
+ self.identity_sdk_client.get_region.return_value = self.region
+ self.identity_sdk_client.find_project.return_value = self.project
+ self.identity_sdk_client.find_domain.return_value = self.domain
- self.project = fakes.FakeResource(
- None, copy.deepcopy(identity_fakes.PROJECT), loaded=True
+ self.limit = sdk_fakes.generate_fake_resource(
+ resource_type=_limit.Limit,
+ project_id=self.project.id,
+ service_id=self.service.id,
+ resource_name='foobars',
+ description=None,
+ resource_limit=self.resource_limit,
+ region_id=None,
)
- self.projects_mock.get.return_value = self.project
-
- self.region = fakes.FakeResource(
- None, copy.deepcopy(identity_fakes.REGION), loaded=True
+ self.limit_with_options = sdk_fakes.generate_fake_resource(
+ resource_type=_limit.Limit,
+ project_id=self.project.id,
+ service_id=self.service.id,
+ resource_limit=self.resource_limit,
+ resource_name='foobars',
+ description='test description',
+ region_id=self.region.id,
)
- self.regions_mock.get.return_value = self.region
self.cmd = limit.CreateLimit(self.app, None)
def test_limit_create_without_options(self):
- self.limit_mock.create.return_value = fakes.FakeResource(
- None, copy.deepcopy(identity_fakes.LIMIT), loaded=True
- )
+ self.identity_sdk_client.create_limit.return_value = self.limit
- resource_limit = 15
arglist = [
'--project',
- identity_fakes.project_id,
+ self.project.id,
'--service',
- identity_fakes.service_id,
+ self.service.id,
'--resource-limit',
- str(resource_limit),
- identity_fakes.limit_resource_name,
+ str(self.resource_limit),
+ self.limit.resource_name,
]
verifylist = [
- ('project', identity_fakes.project_id),
- ('service', identity_fakes.service_id),
- ('resource_name', identity_fakes.limit_resource_name),
- ('resource_limit', resource_limit),
+ ('project', self.project.id),
+ ('service', self.service.id),
+ ('resource_name', self.limit.resource_name),
+ ('resource_limit', self.resource_limit),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
- kwargs = {'description': None, 'region': None}
- self.limit_mock.create.assert_called_with(
- self.project,
- self.service,
- identity_fakes.limit_resource_name,
- resource_limit,
- **kwargs,
+ self.identity_sdk_client.create_limit.assert_called_with(
+ project_id=self.project.id,
+ service_id=self.service.id,
+ resource_name=self.limit.resource_name,
+ resource_limit=self.resource_limit,
)
collist = (
@@ -105,55 +103,58 @@ class TestLimitCreate(TestLimit):
self.assertEqual(collist, columns)
datalist = (
None,
- identity_fakes.limit_id,
- identity_fakes.project_id,
+ self.limit.id,
+ self.project.id,
None,
- resource_limit,
- identity_fakes.limit_resource_name,
- identity_fakes.service_id,
+ self.resource_limit,
+ self.limit.resource_name,
+ self.service.id,
)
self.assertEqual(datalist, data)
def test_limit_create_with_options(self):
- self.limit_mock.create.return_value = fakes.FakeResource(
- None, copy.deepcopy(identity_fakes.LIMIT_OPTIONS), loaded=True
+ self.identity_sdk_client.create_limit.return_value = (
+ self.limit_with_options
)
resource_limit = 15
arglist = [
'--project',
- identity_fakes.project_id,
+ self.project.id,
+ '--project-domain',
+ self.domain.name,
'--service',
- identity_fakes.service_id,
+ self.service.id,
'--resource-limit',
str(resource_limit),
'--region',
- identity_fakes.region_id,
+ self.region.id,
'--description',
- identity_fakes.limit_description,
- identity_fakes.limit_resource_name,
+ self.limit_with_options.description,
+ self.limit_with_options.resource_name,
]
verifylist = [
- ('project', identity_fakes.project_id),
- ('service', identity_fakes.service_id),
- ('resource_name', identity_fakes.limit_resource_name),
+ ('project', self.project.id),
+ ('project_domain', self.domain.name),
+ ('service', self.service.id),
+ ('resource_name', self.limit_with_options.resource_name),
('resource_limit', resource_limit),
- ('region', identity_fakes.region_id),
- ('description', identity_fakes.limit_description),
+ ('region', self.region.id),
+ ('description', self.limit_with_options.description),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
kwargs = {
- 'description': identity_fakes.limit_description,
- 'region': self.region,
+ 'project_id': self.project.id,
+ 'service_id': self.service.id,
+ 'region_id': self.region.id,
+ 'resource_name': self.limit_with_options.resource_name,
+ 'resource_limit': resource_limit,
+ 'description': self.limit_with_options.description,
}
- self.limit_mock.create.assert_called_with(
- self.project,
- self.service,
- identity_fakes.limit_resource_name,
- resource_limit,
+ self.identity_sdk_client.create_limit.assert_called_with(
**kwargs,
)
@@ -168,37 +169,41 @@ class TestLimitCreate(TestLimit):
)
self.assertEqual(collist, columns)
datalist = (
- identity_fakes.limit_description,
- identity_fakes.limit_id,
- identity_fakes.project_id,
- identity_fakes.region_id,
+ self.limit_with_options.description,
+ self.limit_with_options.id,
+ self.project.id,
+ self.region.id,
resource_limit,
- identity_fakes.limit_resource_name,
- identity_fakes.service_id,
+ self.limit_with_options.resource_name,
+ self.service.id,
)
self.assertEqual(datalist, data)
-class TestLimitDelete(TestLimit):
+class TestLimitDelete(identity_fakes.TestIdentityv3):
def setUp(self):
super().setUp()
self.cmd = limit.DeleteLimit(self.app, None)
def test_limit_delete(self):
- self.limit_mock.delete.return_value = None
+ self.limit = sdk_fakes.generate_fake_resource(
+ resource_type=_limit.Limit
+ )
+ self.identity_sdk_client.delete_limit.return_value = None
- arglist = [identity_fakes.limit_id]
- verifylist = [('limit_id', [identity_fakes.limit_id])]
+ arglist = [self.limit.id]
+ verifylist = [('limit_id', [self.limit.id])]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
result = self.cmd.take_action(parsed_args)
- self.limit_mock.delete.assert_called_with(identity_fakes.limit_id)
+ self.identity_sdk_client.delete_limit.assert_called_with(self.limit.id)
self.assertIsNone(result)
def test_limit_delete_with_exception(self):
- return_value = ksa_exceptions.NotFound()
- self.limit_mock.delete.side_effect = return_value
+ self.identity_sdk_client.delete_limit.side_effect = (
+ sdk_exc.ResourceNotFound
+ )
arglist = ['fake-limit-id']
verifylist = [('limit_id', ['fake-limit-id'])]
@@ -211,24 +216,42 @@ class TestLimitDelete(TestLimit):
self.assertEqual('1 of 1 limits failed to delete.', str(e))
-class TestLimitShow(TestLimit):
+class TestLimitShow(identity_fakes.TestIdentityv3):
def setUp(self):
super().setUp()
- self.limit_mock.get.return_value = fakes.FakeResource(
- None, copy.deepcopy(identity_fakes.LIMIT), loaded=True
+ self.project = sdk_fakes.generate_fake_resource(_project.Project)
+ self.region = sdk_fakes.generate_fake_resource(_region.Region)
+ self.service = sdk_fakes.generate_fake_resource(_service.Service)
+
+ self.resource_limit = 15
+
+ self.identity_sdk_client.find_service.return_value = self.service
+ self.identity_sdk_client.get_region.return_value = self.region
+ self.identity_sdk_client.find_project.return_value = self.project
+
+ self.limit = sdk_fakes.generate_fake_resource(
+ resource_type=_limit.Limit,
+ project_id=self.project.id,
+ service_id=self.service.id,
+ resource_name='foobars',
+ description=None,
+ resource_limit=self.resource_limit,
+ region_id=None,
)
+ self.identity_sdk_client.get_limit.return_value = self.limit
+
self.cmd = limit.ShowLimit(self.app, None)
def test_limit_show(self):
- arglist = [identity_fakes.limit_id]
- verifylist = [('limit_id', identity_fakes.limit_id)]
+ arglist = [self.limit.id]
+ verifylist = [('limit_id', self.limit.id)]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
- self.limit_mock.get.assert_called_with(identity_fakes.limit_id)
+ self.identity_sdk_client.get_limit.assert_called_with(self.limit.id)
collist = (
'description',
@@ -242,45 +265,61 @@ class TestLimitShow(TestLimit):
self.assertEqual(collist, columns)
datalist = (
None,
- identity_fakes.limit_id,
- identity_fakes.project_id,
+ self.limit.id,
+ self.project.id,
None,
- identity_fakes.limit_resource_limit,
- identity_fakes.limit_resource_name,
- identity_fakes.service_id,
+ self.resource_limit,
+ self.limit.resource_name,
+ self.service.id,
)
self.assertEqual(datalist, data)
-class TestLimitSet(TestLimit):
+class TestLimitSet(identity_fakes.TestIdentityv3):
def setUp(self):
super().setUp()
+
+ self.project = sdk_fakes.generate_fake_resource(_project.Project)
+ self.region = sdk_fakes.generate_fake_resource(_region.Region)
+ self.service = sdk_fakes.generate_fake_resource(_service.Service)
+
+ self.resource_limit = 15
+
+ self.identity_sdk_client.find_service.return_value = self.service
+ self.identity_sdk_client.get_region.return_value = self.region
+ self.identity_sdk_client.find_project.return_value = self.project
+
self.cmd = limit.SetLimit(self.app, None)
def test_limit_set_description(self):
- limit = copy.deepcopy(identity_fakes.LIMIT)
- limit['description'] = identity_fakes.limit_description
- self.limit_mock.update.return_value = fakes.FakeResource(
- None, limit, loaded=True
+ description = 'limit of foobars'
+ limit = sdk_fakes.generate_fake_resource(
+ resource_type=_limit.Limit,
+ project_id=self.project.id,
+ service_id=self.service.id,
+ resource_name='foobars',
+ description=description,
+ resource_limit=self.resource_limit,
+ region_id=None,
)
+ self.identity_sdk_client.update_limit.return_value = limit
arglist = [
'--description',
- identity_fakes.limit_description,
- identity_fakes.limit_id,
+ description,
+ limit.id,
]
verifylist = [
- ('description', identity_fakes.limit_description),
- ('limit_id', identity_fakes.limit_id),
+ ('description', description),
+ ('limit_id', limit.id),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
- self.limit_mock.update.assert_called_with(
- identity_fakes.limit_id,
- description=identity_fakes.limit_description,
- resource_limit=None,
+ self.identity_sdk_client.update_limit.assert_called_with(
+ limit.id,
+ description=description,
)
collist = (
@@ -294,40 +333,44 @@ class TestLimitSet(TestLimit):
)
self.assertEqual(collist, columns)
datalist = (
- identity_fakes.limit_description,
- identity_fakes.limit_id,
- identity_fakes.project_id,
+ description,
+ limit.id,
+ self.project.id,
None,
- identity_fakes.limit_resource_limit,
- identity_fakes.limit_resource_name,
- identity_fakes.service_id,
+ limit.resource_limit,
+ limit.resource_name,
+ self.service.id,
)
self.assertEqual(datalist, data)
def test_limit_set_resource_limit(self):
resource_limit = 20
- limit = copy.deepcopy(identity_fakes.LIMIT)
- limit['resource_limit'] = resource_limit
- self.limit_mock.update.return_value = fakes.FakeResource(
- None, limit, loaded=True
+ limit = sdk_fakes.generate_fake_resource(
+ resource_type=_limit.Limit,
+ project_id=self.project.id,
+ service_id=self.service.id,
+ resource_name='foobars',
+ description=None,
+ resource_limit=resource_limit,
+ region_id=None,
)
+ self.identity_sdk_client.update_limit.return_value = limit
arglist = [
'--resource-limit',
str(resource_limit),
- identity_fakes.limit_id,
+ limit.id,
]
verifylist = [
('resource_limit', resource_limit),
- ('limit_id', identity_fakes.limit_id),
+ ('limit_id', limit.id),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
- self.limit_mock.update.assert_called_with(
- identity_fakes.limit_id,
- description=None,
+ self.identity_sdk_client.update_limit.assert_called_with(
+ limit.id,
resource_limit=resource_limit,
)
@@ -343,25 +386,36 @@ class TestLimitSet(TestLimit):
self.assertEqual(collist, columns)
datalist = (
None,
- identity_fakes.limit_id,
- identity_fakes.project_id,
+ limit.id,
+ self.project.id,
None,
resource_limit,
- identity_fakes.limit_resource_name,
- identity_fakes.service_id,
+ limit.resource_name,
+ self.service.id,
)
self.assertEqual(datalist, data)
-class TestLimitList(TestLimit):
+class TestLimitList(identity_fakes.TestIdentityv3):
def setUp(self):
super().setUp()
- self.limit_mock.list.return_value = [
- fakes.FakeResource(
- None, copy.deepcopy(identity_fakes.LIMIT), loaded=True
- )
- ]
+ self.project = sdk_fakes.generate_fake_resource(_project.Project)
+ self.region = sdk_fakes.generate_fake_resource(_region.Region)
+ self.service = sdk_fakes.generate_fake_resource(_service.Service)
+
+ self.resource_limit = 15
+
+ self.limit = sdk_fakes.generate_fake_resource(
+ resource_type=_limit.Limit,
+ project_id=self.project.id,
+ service_id=self.service.id,
+ resource_name='foobars',
+ description=None,
+ resource_limit=self.resource_limit,
+ region_id=None,
+ )
+ self.identity_sdk_client.limits.return_value = [self.limit]
self.cmd = limit.ListLimit(self.app, None)
@@ -372,9 +426,7 @@ class TestLimitList(TestLimit):
columns, data = self.cmd.take_action(parsed_args)
- self.limit_mock.list.assert_called_with(
- service=None, resource_name=None, region=None, project=None
- )
+ self.identity_sdk_client.limits.assert_called_with()
collist = (
'ID',
@@ -388,11 +440,11 @@ class TestLimitList(TestLimit):
self.assertEqual(collist, columns)
datalist = (
(
- identity_fakes.limit_id,
- identity_fakes.project_id,
- identity_fakes.service_id,
- identity_fakes.limit_resource_name,
- identity_fakes.limit_resource_limit,
+ self.limit.id,
+ self.project.id,
+ self.service.id,
+ self.limit.resource_name,
+ self.limit.resource_limit,
None,
None,
),
diff --git a/openstackclient/tests/unit/identity/v3/test_oauth.py b/openstackclient/tests/unit/identity/v3/test_oauth.py
index 576f8b2..9dcf0be 100644
--- a/openstackclient/tests/unit/identity/v3/test_oauth.py
+++ b/openstackclient/tests/unit/identity/v3/test_oauth.py
@@ -109,7 +109,7 @@ class TestRequestTokenAuthorize(TestOAuth1):
]
verifylist = [
('request_key', identity_fakes.request_token_id),
- ('role', [identity_fakes.role_name]),
+ ('roles', [identity_fakes.role_name]),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
diff --git a/openstackclient/tests/unit/identity/v3/test_project.py b/openstackclient/tests/unit/identity/v3/test_project.py
index 024b74f..dae1aeb 100644
--- a/openstackclient/tests/unit/identity/v3/test_project.py
+++ b/openstackclient/tests/unit/identity/v3/test_project.py
@@ -13,31 +13,20 @@
# under the License.
from unittest import mock
-from unittest.mock import call
+from openstack import exceptions as sdk_exc
+from openstack.identity.v3 import domain as _domain
+from openstack.identity.v3 import project as _project
+from openstack.identity.v3 import user as _user
+from openstack.test import fakes as sdk_fakes
from osc_lib import exceptions
-from osc_lib import utils
-from openstackclient.identity import common
from openstackclient.identity.v3 import project
from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
-class TestProject(identity_fakes.TestIdentityv3):
- def setUp(self):
- super().setUp()
-
- # Get a shortcut to the DomainManager Mock
- self.domains_mock = self.identity_client.domains
- self.domains_mock.reset_mock()
-
- # Get a shortcut to the ProjectManager Mock
- self.projects_mock = self.identity_client.projects
- self.projects_mock.reset_mock()
-
-
-class TestProjectCreate(TestProject):
- domain = identity_fakes.FakeDomain.create_one_domain()
+class TestProjectCreate(identity_fakes.TestIdentityv3):
+ domain = sdk_fakes.generate_fake_resource(_domain.Domain)
columns = (
'description',
@@ -46,39 +35,41 @@ class TestProjectCreate(TestProject):
'id',
'is_domain',
'name',
+ 'options',
'parent_id',
'tags',
)
+ project_kwargs_no_options = {
+ 'description': None,
+ 'domain_id': None,
+ 'enabled': True,
+ 'is_domain': False,
+ 'parent_id': None,
+ 'tags': [],
+ }
+
def setUp(self):
super().setUp()
- self.project = identity_fakes.FakeProject.create_one_project(
- attrs={'domain_id': self.domain.id}
- )
- self.domains_mock.get.return_value = self.domain
- self.projects_mock.create.return_value = self.project
- self.datalist = (
- self.project.description,
- self.project.domain_id,
- True,
- self.project.id,
- False,
- self.project.name,
- self.project.parent_id,
- self.project.tags,
- )
+ self.identity_sdk_client.find_domain.return_value = self.domain
+
# Get the command object to test
self.cmd = project.CreateProject(self.app, None)
def test_project_create_no_options(self):
+ project = sdk_fakes.generate_fake_resource(
+ _project.Project, **self.project_kwargs_no_options
+ )
+ self.identity_sdk_client.create_project.return_value = project
+
arglist = [
- self.project.name,
+ project.name,
]
verifylist = [
('parent', None),
('enabled', True),
- ('name', self.project.name),
+ ('name', project.name),
('tags', []),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -88,53 +79,43 @@ class TestProjectCreate(TestProject):
# data to be shown.
columns, data = self.cmd.take_action(parsed_args)
- # Set expected values
kwargs = {
- 'name': self.project.name,
- 'domain': None,
- 'description': None,
- 'enabled': True,
- 'parent': None,
- 'tags': [],
- 'options': {},
+ 'name': project.name,
+ 'is_enabled': True,
}
- # ProjectManager.create(name=, domain=, description=,
- # enabled=, **kwargs)
- self.projects_mock.create.assert_called_with(**kwargs)
+ self.identity_sdk_client.create_project.assert_called_with(**kwargs)
+
+ self.assertEqual(self.columns, columns)
- collist = (
- 'description',
- 'domain_id',
- 'enabled',
- 'id',
- 'is_domain',
- 'name',
- 'parent_id',
- 'tags',
- )
- self.assertEqual(collist, columns)
datalist = (
- self.project.description,
- self.project.domain_id,
+ None,
+ None,
True,
- self.project.id,
+ project.id,
False,
- self.project.name,
- self.project.parent_id,
- self.project.tags,
+ project.name,
+ {},
+ None,
+ [],
)
self.assertEqual(datalist, data)
def test_project_create_description(self):
+ project = sdk_fakes.generate_fake_resource(
+ _project.Project,
+ **dict(self.project_kwargs_no_options, description='new desc'),
+ )
+ self.identity_sdk_client.create_project.return_value = project
+
arglist = [
'--description',
'new desc',
- self.project.name,
+ project.name,
]
verifylist = [
('description', 'new desc'),
('enabled', True),
- ('name', self.project.name),
+ ('name', project.name),
('parent', None),
('tags', []),
]
@@ -145,33 +126,43 @@ class TestProjectCreate(TestProject):
# data to be shown.
columns, data = self.cmd.take_action(parsed_args)
- # Set expected values
kwargs = {
- 'name': self.project.name,
- 'domain': None,
+ 'name': project.name,
'description': 'new desc',
- 'enabled': True,
- 'parent': None,
- 'tags': [],
- 'options': {},
+ 'is_enabled': True,
}
- # ProjectManager.create(name=, domain=, description=,
- # enabled=, **kwargs)
- self.projects_mock.create.assert_called_with(**kwargs)
+ self.identity_sdk_client.create_project.assert_called_with(**kwargs)
self.assertEqual(self.columns, columns)
- self.assertEqual(self.datalist, data)
+ datalist = (
+ 'new desc',
+ None,
+ True,
+ project.id,
+ False,
+ project.name,
+ {},
+ None,
+ [],
+ )
+ self.assertEqual(datalist, data)
def test_project_create_domain(self):
+ project = sdk_fakes.generate_fake_resource(
+ _project.Project,
+ **dict(self.project_kwargs_no_options, domain_id=self.domain.id),
+ )
+ self.identity_sdk_client.create_project.return_value = project
+
arglist = [
'--domain',
- self.project.domain_id,
- self.project.name,
+ project.domain_id,
+ project.name,
]
verifylist = [
- ('domain', self.project.domain_id),
+ ('domain', project.domain_id),
('enabled', True),
- ('name', self.project.name),
+ ('name', project.name),
('parent', None),
('tags', []),
]
@@ -184,63 +175,90 @@ class TestProjectCreate(TestProject):
# Set expected values
kwargs = {
- 'name': self.project.name,
- 'domain': self.project.domain_id,
- 'description': None,
- 'enabled': True,
- 'parent': None,
- 'tags': [],
- 'options': {},
+ 'name': project.name,
+ 'domain_id': project.domain_id,
+ 'is_enabled': True,
}
- # ProjectManager.create(name=, domain=, description=,
- # enabled=, **kwargs)
- self.projects_mock.create.assert_called_with(**kwargs)
+ self.identity_sdk_client.create_project.assert_called_with(**kwargs)
self.assertEqual(self.columns, columns)
- self.assertEqual(self.datalist, data)
+ datalist = (
+ None,
+ self.domain.id,
+ True,
+ project.id,
+ False,
+ project.name,
+ {},
+ None,
+ [],
+ )
+ self.assertEqual(datalist, data)
def test_project_create_domain_no_perms(self):
+ project = sdk_fakes.generate_fake_resource(
+ _project.Project,
+ **dict(self.project_kwargs_no_options, domain_id=self.domain.id),
+ )
+ self.identity_sdk_client.create_project.return_value = project
+
arglist = [
'--domain',
- self.project.domain_id,
- self.project.name,
+ project.domain_id,
+ project.name,
]
verifylist = [
- ('domain', self.project.domain_id),
+ ('domain', project.domain_id),
('enabled', True),
- ('name', self.project.name),
+ ('name', project.name),
('parent', None),
('tags', []),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
- mocker = mock.Mock()
- mocker.return_value = None
- with mock.patch("osc_lib.utils.find_resource", mocker):
- columns, data = self.cmd.take_action(parsed_args)
+ self.identity_sdk_client.find_domain.side_effect = (
+ sdk_exc.ForbiddenException
+ )
+ self.identity_sdk_client.find_domain.return_value = None
+
+ columns, data = self.cmd.take_action(parsed_args)
# Set expected values
kwargs = {
- 'name': self.project.name,
- 'domain': self.project.domain_id,
- 'description': None,
- 'enabled': True,
- 'parent': None,
- 'tags': [],
- 'options': {},
+ 'name': project.name,
+ 'domain_id': project.domain_id,
+ 'is_enabled': True,
}
- self.projects_mock.create.assert_called_with(**kwargs)
+ self.identity_sdk_client.create_project.assert_called_with(**kwargs)
+
self.assertEqual(self.columns, columns)
- self.assertEqual(self.datalist, data)
+ datalist = (
+ None,
+ self.domain.id,
+ True,
+ project.id,
+ False,
+ project.name,
+ {},
+ None,
+ [],
+ )
+ self.assertEqual(datalist, data)
def test_project_create_enable(self):
+ project = sdk_fakes.generate_fake_resource(
+ _project.Project,
+ **dict(self.project_kwargs_no_options, enabled=True),
+ )
+ self.identity_sdk_client.create_project.return_value = project
+
arglist = [
'--enable',
- self.project.name,
+ project.name,
]
verifylist = [
('enabled', True),
- ('name', self.project.name),
+ ('name', project.name),
('parent', None),
('tags', []),
]
@@ -253,29 +271,39 @@ class TestProjectCreate(TestProject):
# Set expected values
kwargs = {
- 'name': self.project.name,
- 'domain': None,
- 'description': None,
- 'enabled': True,
- 'parent': None,
- 'tags': [],
- 'options': {},
+ 'name': project.name,
+ 'is_enabled': True,
}
- # ProjectManager.create(name=, domain=, description=,
- # enabled=, **kwargs)
- self.projects_mock.create.assert_called_with(**kwargs)
+ self.identity_sdk_client.create_project.assert_called_with(**kwargs)
self.assertEqual(self.columns, columns)
- self.assertEqual(self.datalist, data)
+ datalist = (
+ None,
+ None,
+ True,
+ project.id,
+ False,
+ project.name,
+ {},
+ None,
+ [],
+ )
+ self.assertEqual(datalist, data)
def test_project_create_disable(self):
+ project = sdk_fakes.generate_fake_resource(
+ _project.Project,
+ **dict(self.project_kwargs_no_options, enabled=False),
+ )
+ self.identity_sdk_client.create_project.return_value = project
+
arglist = [
'--disable',
- self.project.name,
+ project.name,
]
verifylist = [
('enabled', False),
- ('name', self.project.name),
+ ('name', project.name),
('parent', None),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -287,32 +315,42 @@ class TestProjectCreate(TestProject):
# Set expected values
kwargs = {
- 'name': self.project.name,
- 'domain': None,
- 'description': None,
- 'enabled': False,
- 'parent': None,
- 'tags': [],
- 'options': {},
+ 'name': project.name,
+ 'is_enabled': False,
}
- # ProjectManager.create(name=, domain=,
- # description=, enabled=, **kwargs)
- self.projects_mock.create.assert_called_with(**kwargs)
+ self.identity_sdk_client.create_project.assert_called_with(**kwargs)
self.assertEqual(self.columns, columns)
- self.assertEqual(self.datalist, data)
+ datalist = (
+ None,
+ None,
+ False,
+ project.id,
+ False,
+ project.name,
+ {},
+ None,
+ [],
+ )
+ self.assertEqual(datalist, data)
def test_project_create_property(self):
+ project = sdk_fakes.generate_fake_resource(
+ _project.Project,
+ **dict(self.project_kwargs_no_options, fee='fi', fo='fum'),
+ )
+ self.identity_sdk_client.create_project.return_value = project
+
arglist = [
'--property',
'fee=fi',
'--property',
'fo=fum',
- self.project.name,
+ project.name,
]
verifylist = [
+ ('name', project.name),
('properties', {'fee': 'fi', 'fo': 'fum'}),
- ('name', self.project.name),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -323,36 +361,62 @@ class TestProjectCreate(TestProject):
# Set expected values
kwargs = {
- 'name': self.project.name,
- 'domain': None,
- 'description': None,
- 'enabled': True,
- 'parent': None,
+ 'name': project.name,
+ 'is_enabled': True,
'fee': 'fi',
'fo': 'fum',
- 'tags': [],
- 'options': {},
}
- # ProjectManager.create(name=, domain=, description=,
- # enabled=, **kwargs)
- self.projects_mock.create.assert_called_with(**kwargs)
+ self.identity_sdk_client.create_project.assert_called_with(**kwargs)
- self.assertEqual(self.columns, columns)
- self.assertEqual(self.datalist, data)
+ self.assertEqual(
+ (
+ 'description',
+ 'domain_id',
+ 'enabled',
+ 'fee',
+ 'fo',
+ 'id',
+ 'is_domain',
+ 'name',
+ 'options',
+ 'parent_id',
+ 'tags',
+ ),
+ columns,
+ )
+ datalist = (
+ None,
+ None,
+ True,
+ 'fi',
+ 'fum',
+ project.id,
+ False,
+ project.name,
+ {},
+ None,
+ [],
+ )
+ self.assertEqual(datalist, data)
def test_project_create_is_domain_false_property(self):
+ project = sdk_fakes.generate_fake_resource(
+ _project.Project,
+ **dict(self.project_kwargs_no_options, is_domain=False),
+ )
+ self.identity_sdk_client.create_project.return_value = project
+
arglist = [
'--property',
'is_domain=false',
- self.project.name,
+ project.name,
]
verifylist = [
('parent', None),
('enabled', True),
- ('name', self.project.name),
+ ('name', project.name),
('tags', []),
('properties', {'is_domain': 'false'}),
- ('name', self.project.name),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -364,33 +428,44 @@ class TestProjectCreate(TestProject):
# Set expected values
kwargs = {
- 'name': self.project.name,
- 'domain': None,
- 'description': None,
- 'enabled': True,
- 'parent': None,
+ 'name': project.name,
+ 'is_enabled': True,
'is_domain': False,
- 'tags': [],
- 'options': {},
}
- self.projects_mock.create.assert_called_with(**kwargs)
+ self.identity_sdk_client.create_project.assert_called_with(**kwargs)
self.assertEqual(self.columns, columns)
- self.assertEqual(self.datalist, data)
+ datalist = (
+ None,
+ None,
+ True,
+ project.id,
+ False,
+ project.name,
+ {},
+ None,
+ [],
+ )
+ self.assertEqual(datalist, data)
def test_project_create_is_domain_true_property(self):
+ project = sdk_fakes.generate_fake_resource(
+ _project.Project,
+ **dict(self.project_kwargs_no_options, is_domain=True),
+ )
+ self.identity_sdk_client.create_project.return_value = project
+
arglist = [
'--property',
'is_domain=true',
- self.project.name,
+ project.name,
]
verifylist = [
('parent', None),
('enabled', True),
- ('name', self.project.name),
+ ('name', project.name),
('tags', []),
('properties', {'is_domain': 'true'}),
- ('name', self.project.name),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -402,33 +477,44 @@ class TestProjectCreate(TestProject):
# Set expected values
kwargs = {
- 'name': self.project.name,
- 'domain': None,
- 'description': None,
- 'enabled': True,
- 'parent': None,
+ 'name': project.name,
+ 'is_enabled': True,
'is_domain': True,
- 'tags': [],
- 'options': {},
}
- self.projects_mock.create.assert_called_with(**kwargs)
+ self.identity_sdk_client.create_project.assert_called_with(**kwargs)
self.assertEqual(self.columns, columns)
- self.assertEqual(self.datalist, data)
+ datalist = (
+ None,
+ None,
+ True,
+ project.id,
+ True,
+ project.name,
+ {},
+ None,
+ [],
+ )
+ self.assertEqual(datalist, data)
def test_project_create_is_domain_none_property(self):
+ project = sdk_fakes.generate_fake_resource(
+ _project.Project,
+ **dict(self.project_kwargs_no_options, is_domain=None),
+ )
+ self.identity_sdk_client.create_project.return_value = project
+
arglist = [
'--property',
'is_domain=none',
- self.project.name,
+ project.name,
]
verifylist = [
('parent', None),
('enabled', True),
- ('name', self.project.name),
+ ('name', project.name),
('tags', []),
('properties', {'is_domain': 'none'}),
- ('name', self.project.name),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -440,40 +526,51 @@ class TestProjectCreate(TestProject):
# Set expected values
kwargs = {
- 'name': self.project.name,
- 'domain': None,
- 'description': None,
- 'enabled': True,
- 'parent': None,
+ 'name': project.name,
+ 'is_enabled': True,
'is_domain': None,
- 'tags': [],
- 'options': {},
}
- self.projects_mock.create.assert_called_with(**kwargs)
+ self.identity_sdk_client.create_project.assert_called_with(**kwargs)
self.assertEqual(self.columns, columns)
- self.assertEqual(self.datalist, data)
+ datalist = (
+ None,
+ None,
+ True,
+ project.id,
+ None,
+ project.name,
+ {},
+ None,
+ [],
+ )
+ self.assertEqual(datalist, data)
def test_project_create_parent(self):
- self.parent = identity_fakes.FakeProject.create_one_project()
- self.project = identity_fakes.FakeProject.create_one_project(
- attrs={'domain_id': self.domain.id, 'parent_id': self.parent.id}
+ parent = sdk_fakes.generate_fake_resource(_project.Project)
+ project = sdk_fakes.generate_fake_resource(
+ _project.Project,
+ **dict(
+ self.project_kwargs_no_options,
+ domain_id=self.domain.id,
+ parent_id=parent.id,
+ ),
)
- self.projects_mock.get.return_value = self.parent
- self.projects_mock.create.return_value = self.project
+ self.identity_sdk_client.find_project.return_value = parent
+ self.identity_sdk_client.create_project.return_value = project
arglist = [
'--domain',
- self.project.domain_id,
+ project.domain_id,
'--parent',
- self.parent.name,
- self.project.name,
+ parent.name,
+ project.name,
]
verifylist = [
- ('domain', self.project.domain_id),
- ('parent', self.parent.name),
+ ('domain', project.domain_id),
+ ('parent', parent.name),
('enabled', True),
- ('name', self.project.name),
+ ('name', project.name),
('tags', []),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -481,61 +578,52 @@ class TestProjectCreate(TestProject):
columns, data = self.cmd.take_action(parsed_args)
kwargs = {
- 'name': self.project.name,
- 'domain': self.project.domain_id,
- 'parent': self.parent.id,
- 'description': None,
- 'enabled': True,
- 'tags': [],
- 'options': {},
+ 'name': project.name,
+ 'domain_id': project.domain_id,
+ 'parent_id': parent.id,
+ 'is_enabled': True,
}
+ self.identity_sdk_client.create_project.assert_called_with(**kwargs)
- self.projects_mock.create.assert_called_with(**kwargs)
-
- collist = (
- 'description',
- 'domain_id',
- 'enabled',
- 'id',
- 'is_domain',
- 'name',
- 'parent_id',
- 'tags',
- )
- self.assertEqual(columns, collist)
+ self.assertEqual(self.columns, columns)
datalist = (
- self.project.description,
- self.project.domain_id,
- self.project.enabled,
- self.project.id,
- self.project.is_domain,
- self.project.name,
- self.parent.id,
- self.project.tags,
+ None,
+ self.domain.id,
+ True,
+ project.id,
+ False,
+ project.name,
+ {},
+ parent.id,
+ [],
)
self.assertEqual(data, datalist)
def test_project_create_invalid_parent(self):
- self.projects_mock.resource_class.__name__ = 'Project'
- self.projects_mock.get.side_effect = exceptions.NotFound(
- 'Invalid parent'
+ self.identity_sdk_client.find_project.side_effect = (
+ sdk_exc.ResourceNotFound
)
- self.projects_mock.find.side_effect = exceptions.NotFound(
- 'Invalid parent'
+ project = sdk_fakes.generate_fake_resource(
+ _project.Project,
+ **dict(
+ self.project_kwargs_no_options,
+ domain_id=self.domain.id,
+ parent_id='invalid',
+ ),
)
arglist = [
'--domain',
- self.project.domain_id,
+ project.domain_id,
'--parent',
'invalid',
- self.project.name,
+ project.name,
]
verifylist = [
- ('domain', self.project.domain_id),
+ ('domain', project.domain_id),
('parent', 'invalid'),
('enabled', True),
- ('name', self.project.name),
+ ('name', project.name),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -546,17 +634,27 @@ class TestProjectCreate(TestProject):
)
def test_project_create_with_tags(self):
+ project = sdk_fakes.generate_fake_resource(
+ _project.Project,
+ **dict(
+ self.project_kwargs_no_options,
+ domain_id=self.domain.id,
+ tags=['foo'],
+ ),
+ )
+ self.identity_sdk_client.create_project.return_value = project
+
arglist = [
'--domain',
- self.project.domain_id,
+ project.domain_id,
'--tag',
'foo',
- self.project.name,
+ project.name,
]
verifylist = [
- ('domain', self.project.domain_id),
+ ('domain', project.domain_id),
('enabled', True),
- ('name', self.project.name),
+ ('name', project.name),
('parent', None),
('tags', ['foo']),
]
@@ -569,29 +667,45 @@ class TestProjectCreate(TestProject):
# Set expected values
kwargs = {
- 'name': self.project.name,
- 'domain': self.project.domain_id,
- 'description': None,
- 'enabled': True,
- 'parent': None,
+ 'name': project.name,
+ 'domain_id': project.domain_id,
+ 'is_enabled': True,
'tags': ['foo'],
- 'options': {},
}
- self.projects_mock.create.assert_called_with(**kwargs)
+ self.identity_sdk_client.create_project.assert_called_with(**kwargs)
self.assertEqual(self.columns, columns)
- self.assertEqual(self.datalist, data)
+ datalist = (
+ None,
+ self.domain.id,
+ True,
+ project.id,
+ False,
+ project.name,
+ {},
+ None,
+ ['foo'],
+ )
+ self.assertEqual(datalist, data)
def test_project_create_with_immutable_option(self):
+ project = sdk_fakes.generate_fake_resource(
+ _project.Project,
+ **dict(
+ self.project_kwargs_no_options, options={'immutable': True}
+ ),
+ )
+ self.identity_sdk_client.create_project.return_value = project
+
arglist = [
'--immutable',
- self.project.name,
+ project.name,
]
verifylist = [
('immutable', True),
('description', None),
('enabled', True),
- ('name', self.project.name),
+ ('name', project.name),
('parent', None),
('tags', []),
]
@@ -604,31 +718,44 @@ class TestProjectCreate(TestProject):
# Set expected values
kwargs = {
- 'name': self.project.name,
- 'domain': None,
- 'description': None,
- 'enabled': True,
- 'parent': None,
- 'tags': [],
+ 'name': project.name,
+ 'is_enabled': True,
'options': {'immutable': True},
}
- # ProjectManager.create(name=, domain=, description=,
- # enabled=, **kwargs)
- self.projects_mock.create.assert_called_with(**kwargs)
+ self.identity_sdk_client.create_project.assert_called_with(**kwargs)
self.assertEqual(self.columns, columns)
- self.assertEqual(self.datalist, data)
+ datalist = (
+ None,
+ None,
+ True,
+ project.id,
+ False,
+ project.name,
+ {'immutable': True},
+ None,
+ [],
+ )
+ self.assertEqual(datalist, data)
def test_project_create_with_no_immutable_option(self):
+ project = sdk_fakes.generate_fake_resource(
+ _project.Project,
+ **dict(
+ self.project_kwargs_no_options, options={'immutable': False}
+ ),
+ )
+ self.identity_sdk_client.create_project.return_value = project
+
arglist = [
'--no-immutable',
- self.project.name,
+ project.name,
]
verifylist = [
('immutable', False),
('description', None),
('enabled', True),
- ('name', self.project.name),
+ ('name', project.name),
('parent', None),
('tags', []),
]
@@ -641,36 +768,121 @@ class TestProjectCreate(TestProject):
# Set expected values
kwargs = {
- 'name': self.project.name,
- 'domain': None,
- 'description': None,
- 'enabled': True,
- 'parent': None,
- 'tags': [],
+ 'name': project.name,
+ 'is_enabled': True,
'options': {'immutable': False},
}
- # ProjectManager.create(name=, domain=, description=,
- # enabled=, **kwargs)
- self.projects_mock.create.assert_called_with(**kwargs)
+ self.identity_sdk_client.create_project.assert_called_with(**kwargs)
self.assertEqual(self.columns, columns)
- self.assertEqual(self.datalist, data)
+ datalist = (
+ None,
+ None,
+ True,
+ project.id,
+ False,
+ project.name,
+ {'immutable': False},
+ None,
+ [],
+ )
+ self.assertEqual(datalist, data)
+ def test_project_create_conflict_with_or_show(self):
+ project = sdk_fakes.generate_fake_resource(
+ _project.Project, **self.project_kwargs_no_options
+ )
+ self.identity_sdk_client.create_project.side_effect = (
+ sdk_exc.ConflictException
+ )
+ self.identity_sdk_client.find_project.return_value = project
+
+ arglist = [
+ '--or-show',
+ project.name,
+ ]
+ verifylist = [
+ ('or_show', True),
+ ('description', None),
+ ('enabled', True),
+ ('name', project.name),
+ ('parent', None),
+ ('tags', []),
+ ]
+
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+
+ kwargs = {
+ 'name': project.name,
+ 'is_enabled': True,
+ }
+ self.identity_sdk_client.create_project.assert_called_with(**kwargs)
+
+ self.assertEqual(self.columns, columns)
+ datalist = (
+ None,
+ None,
+ True,
+ project.id,
+ False,
+ project.name,
+ {},
+ None,
+ [],
+ )
+ self.assertEqual(datalist, data)
+
+ def test_project_create_conflict_without_or_show(self):
+ self.identity_sdk_client.create_project.side_effect = (
+ sdk_exc.ConflictException
+ )
+ project = sdk_fakes.generate_fake_resource(
+ _project.Project, **self.project_kwargs_no_options
+ )
-class TestProjectDelete(TestProject):
- project = identity_fakes.FakeProject.create_one_project()
+ arglist = [
+ project.name,
+ ]
+ verifylist = [
+ ('or_show', False),
+ ('description', None),
+ ('enabled', True),
+ ('name', project.name),
+ ('parent', None),
+ ('tags', []),
+ ]
+
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ self.assertRaises(
+ sdk_exc.ConflictException,
+ self.cmd.take_action,
+ parsed_args,
+ )
+
+
+class TestProjectDelete(identity_fakes.TestIdentityv3):
+ domain = sdk_fakes.generate_fake_resource(_domain.Domain)
def setUp(self):
super().setUp()
- # This is the return value for utils.find_resource()
- self.projects_mock.get.return_value = self.project
- self.projects_mock.delete.return_value = None
+ self.project = sdk_fakes.generate_fake_resource(_project.Project)
+ self.project_with_domain = sdk_fakes.generate_fake_resource(
+ _project.Project,
+ name=self.project.name,
+ domain_id=self.domain.id,
+ )
+ self.identity_sdk_client.delete_project.return_value = None
# Get the command object to test
self.cmd = project.DeleteProject(self.app, None)
def test_project_delete_no_options(self):
+ self.identity_sdk_client.find_project.return_value = self.project
+
arglist = [
self.project.id,
]
@@ -681,16 +893,72 @@ class TestProjectDelete(TestProject):
result = self.cmd.take_action(parsed_args)
- self.projects_mock.delete.assert_called_with(
+ self.identity_sdk_client.delete_project.assert_called_with(
self.project.id,
)
self.assertIsNone(result)
- @mock.patch.object(utils, 'find_resource')
- def test_delete_multi_projects_with_exception(self, find_mock):
- find_mock.side_effect = [self.project, exceptions.CommandError]
+ def test_project_multi_delete(self):
+ self.identity_sdk_client.find_project.side_effect = [
+ self.project,
+ self.project_with_domain,
+ ]
+ arglist = [self.project.id, self.project_with_domain.id]
+ verifylist = [
+ ('projects', arglist),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ result = self.cmd.take_action(parsed_args)
+
+ self.identity_sdk_client.delete_project.assert_has_calls(
+ [
+ mock.call(self.project.id),
+ mock.call(self.project_with_domain.id),
+ ]
+ )
+ self.assertIsNone(result)
+
+ def test_project_delete_with_forbidden_domain(self):
+ self.identity_sdk_client.find_domain.side_effect = [
+ sdk_exc.ForbiddenException
+ ]
+ self.identity_sdk_client.find_project.return_value = (
+ self.project_with_domain
+ )
+
+ arglist = [
+ '--domain',
+ self.project_with_domain.domain_id,
+ self.project_with_domain.name,
+ ]
+ verifylist = [
+ ('domain', self.domain.id),
+ ('projects', [self.project_with_domain.name]),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ result = self.cmd.take_action(parsed_args)
+ self.identity_sdk_client.find_project.assert_called_with(
+ name_or_id=self.project_with_domain.name,
+ ignore_missing=False,
+ domain_id=self.domain.id,
+ )
+ self.identity_sdk_client.delete_project.assert_called_once_with(
+ self.project_with_domain.id
+ )
+ self.assertIsNone(result)
+
+ def test_delete_multi_projects_with_exception(self):
+ self.identity_sdk_client.find_project.side_effect = [
+ self.project,
+ self.project_with_domain,
+ sdk_exc.NotFoundException,
+ ]
+
arglist = [
self.project.id,
+ self.project_with_domain.id,
'unexist_project',
]
verifylist = [
@@ -702,21 +970,36 @@ class TestProjectDelete(TestProject):
self.cmd.take_action(parsed_args)
self.fail('CommandError should be raised.')
except exceptions.CommandError as e:
- self.assertEqual('1 of 2 projects failed to delete.', str(e))
+ self.assertEqual('1 of 3 projects failed to delete.', str(e))
- find_mock.assert_any_call(self.projects_mock, self.project.id)
- find_mock.assert_any_call(self.projects_mock, 'unexist_project')
+ self.identity_sdk_client.find_project.assert_has_calls(
+ [
+ mock.call(name_or_id=self.project.id, ignore_missing=False),
+ mock.call(
+ name_or_id=self.project_with_domain.id,
+ ignore_missing=False,
+ ),
+ mock.call(name_or_id='unexist_project', ignore_missing=False),
+ ]
+ )
- self.assertEqual(2, find_mock.call_count)
- self.projects_mock.delete.assert_called_once_with(self.project.id)
+ self.assertEqual(3, self.identity_sdk_client.find_project.call_count)
+ self.identity_sdk_client.delete_project.assert_has_calls(
+ [
+ mock.call(self.project.id),
+ mock.call(self.project_with_domain.id),
+ ]
+ )
-class TestProjectList(TestProject):
- domain = identity_fakes.FakeDomain.create_one_domain()
- project = identity_fakes.FakeProject.create_one_project(
- attrs={'domain_id': domain.id}
+class TestProjectList(identity_fakes.TestIdentityv3):
+ domain = sdk_fakes.generate_fake_resource(_domain.Domain)
+ project = sdk_fakes.generate_fake_resource(
+ _project.Project, domain_id=domain.id
+ )
+ projects = list(
+ sdk_fakes.generate_fake_resources(_project.Project, count=2)
)
- projects = identity_fakes.FakeProject.create_projects()
columns = (
'ID',
@@ -746,12 +1029,12 @@ class TestProjectList(TestProject):
def setUp(self):
super().setUp()
- self.projects_mock.list.return_value = [self.project]
-
# Get the command object to test
self.cmd = project.ListProject(self.app, None)
def test_project_list_no_options(self):
+ self.identity_sdk_client.projects.return_value = [self.project]
+
arglist = []
verifylist = []
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -760,12 +1043,14 @@ class TestProjectList(TestProject):
# returns a tuple containing the column names and an iterable
# containing the data to be listed.
columns, data = self.cmd.take_action(parsed_args)
- self.projects_mock.list.assert_called_with()
+ self.identity_sdk_client.projects.assert_called_with()
self.assertEqual(self.columns, columns)
self.assertEqual(self.datalist, tuple(data))
def test_project_list_long(self):
+ self.identity_sdk_client.projects.return_value = [self.project]
+
arglist = [
'--long',
]
@@ -778,7 +1063,7 @@ class TestProjectList(TestProject):
# returns a tuple containing the column names and an iterable
# containing the data to be listed.
columns, data = self.cmd.take_action(parsed_args)
- self.projects_mock.list.assert_called_with()
+ self.identity_sdk_client.projects.assert_called_with()
collist = ('ID', 'Name', 'Domain ID', 'Description', 'Enabled')
self.assertEqual(collist, columns)
@@ -794,6 +1079,8 @@ class TestProjectList(TestProject):
self.assertEqual(datalist, tuple(data))
def test_project_list_domain(self):
+ self.identity_sdk_client.projects.return_value = [self.project]
+
arglist = [
'--domain',
self.project.domain_id,
@@ -802,7 +1089,7 @@ class TestProjectList(TestProject):
('domain', self.project.domain_id),
]
- self.domains_mock.get.return_value = self.domain
+ self.identity_sdk_client.find_domain.return_value = self.domain
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -810,14 +1097,16 @@ class TestProjectList(TestProject):
# returns a tuple containing the column names and an iterable
# containing the data to be listed.
columns, data = self.cmd.take_action(parsed_args)
- self.projects_mock.list.assert_called_with(
- domain=self.project.domain_id
+ self.identity_sdk_client.projects.assert_called_with(
+ domain_id=self.project.domain_id
)
self.assertEqual(self.columns, columns)
self.assertEqual(self.datalist, tuple(data))
def test_project_list_domain_no_perms(self):
+ self.identity_sdk_client.projects.return_value = [self.project]
+
arglist = [
'--domain',
self.project.domain_id,
@@ -826,23 +1115,30 @@ class TestProjectList(TestProject):
('domain', self.project.domain_id),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
- mocker = mock.Mock()
- mocker.return_value = None
- with mock.patch("osc_lib.utils.find_resource", mocker):
- columns, data = self.cmd.take_action(parsed_args)
+ self.identity_sdk_client.find_project.side_effect = (
+ sdk_exc.ResourceNotFound
+ )
+ self.identity_sdk_client.find_domain.return_value = self.domain
+
+ columns, data = self.cmd.take_action(parsed_args)
- self.projects_mock.list.assert_called_with(
- domain=self.project.domain_id
+ self.identity_sdk_client.projects.assert_called_with(
+ domain_id=self.project.domain_id
)
self.assertEqual(self.columns, columns)
self.assertEqual(self.datalist, tuple(data))
def test_project_list_parent(self):
- self.parent = identity_fakes.FakeProject.create_one_project()
- self.project = identity_fakes.FakeProject.create_one_project(
- attrs={'domain_id': self.domain.id, 'parent_id': self.parent.id}
+ self.parent = sdk_fakes.generate_fake_resource(_project.Project)
+ self.project = sdk_fakes.generate_fake_resource(
+ _project.Project,
+ id=self.project.id,
+ name=self.project.name,
+ domain_id=self.domain.id,
+ parent_id=self.parent.id,
)
+ self.identity_sdk_client.projects.return_value = [self.project]
arglist = [
'--parent',
@@ -852,18 +1148,48 @@ class TestProjectList(TestProject):
('parent', self.parent.id),
]
- self.projects_mock.get.return_value = self.parent
+ self.identity_sdk_client.find_project.return_value = self.parent
+
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+ self.identity_sdk_client.projects.assert_called_with(
+ parent_id=self.parent.id
+ )
+
+ self.assertEqual(self.columns, columns)
+ self.assertEqual(self.datalist, tuple(data))
+
+ def test_project_list_user(self):
+ self.user = sdk_fakes.generate_fake_resource(_user.User)
+ self.project = sdk_fakes.generate_fake_resource(
+ _project.UserProject,
+ id=self.project.id,
+ name=self.project.name,
+ user_id=self.user.id,
+ )
+ self.identity_sdk_client.user_projects.return_value = [self.project]
+
+ arglist = [
+ '--user',
+ self.user.id,
+ ]
+ verifylist = [
+ ('user', self.user.id),
+ ]
+
+ self.identity_sdk_client.find_user.return_value = self.user
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
- self.projects_mock.list.assert_called_with(parent=self.parent.id)
+ self.identity_sdk_client.user_projects.assert_called_with(self.user.id)
self.assertEqual(self.columns, columns)
self.assertEqual(self.datalist, tuple(data))
def test_project_list_sort(self):
- self.projects_mock.list.return_value = self.projects
+ self.identity_sdk_client.projects.return_value = self.projects
arglist = [
'--sort',
@@ -877,7 +1203,7 @@ class TestProjectList(TestProject):
# returns a tuple containing the column names and an iterable
# containing the data to be listed.
(columns, data) = self.cmd.take_action(parsed_args)
- self.projects_mock.list.assert_called_with()
+ self.identity_sdk_client.projects.assert_called_with()
collist = ('ID', 'Name')
self.assertEqual(collist, columns)
@@ -896,6 +1222,8 @@ class TestProjectList(TestProject):
self.assertEqual(datalists, tuple(data))
def test_project_list_my_projects(self):
+ self.identity_sdk_client.user_projects.return_value = [self.project]
+
auth_ref = identity_fakes.fake_auth_ref(
identity_fakes.TOKEN_WITH_PROJECT_ID,
)
@@ -913,8 +1241,8 @@ class TestProjectList(TestProject):
# returns a tuple containing the column names and an iterable
# containing the data to be listed.
columns, data = self.cmd.take_action(parsed_args)
- self.projects_mock.list.assert_called_with(
- user=self.app.client_manager.auth_ref.user_id
+ self.identity_sdk_client.user_projects.assert_called_with(
+ self.app.client_manager.auth_ref.user_id
)
collist = ('ID', 'Name')
@@ -928,6 +1256,8 @@ class TestProjectList(TestProject):
self.assertEqual(datalist, tuple(data))
def test_project_list_with_option_enabled(self):
+ self.identity_sdk_client.projects.return_value = [self.project]
+
arglist = ['--enabled']
verifylist = [('is_enabled', True)]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -938,25 +1268,28 @@ class TestProjectList(TestProject):
columns, data = self.cmd.take_action(parsed_args)
kwargs = {'is_enabled': True}
- self.projects_mock.list.assert_called_with(**kwargs)
+ self.identity_sdk_client.projects.assert_called_with(**kwargs)
self.assertEqual(self.columns, columns)
self.assertEqual(self.datalist, tuple(data))
-class TestProjectSet(TestProject):
- domain = identity_fakes.FakeDomain.create_one_domain()
- project = identity_fakes.FakeProject.create_one_project(
- attrs={'domain_id': domain.id, 'tags': ['tag1', 'tag2', 'tag3']}
+class TestProjectSet(identity_fakes.TestIdentityv3):
+ domain = sdk_fakes.generate_fake_resource(_domain.Domain)
+
+ project_kwargs_no_options = {
+ 'domain_id': domain.id,
+ 'tags': ['tag1', 'tag2', 'tag3'],
+ }
+ project = sdk_fakes.generate_fake_resource(
+ _project.Project, **project_kwargs_no_options
)
def setUp(self):
super().setUp()
- self.domains_mock.get.return_value = self.domain
-
- self.projects_mock.get.return_value = self.project
- self.projects_mock.update.return_value = self.project
+ self.identity_sdk_client.find_domain.return_value = self.domain
+ self.identity_sdk_client.find_project.return_value = self.project
# Get the command object to test
self.cmd = project.SetProject(self.app, None)
@@ -997,9 +1330,10 @@ class TestProjectSet(TestProject):
kwargs = {
'name': 'qwerty',
}
- # ProjectManager.update(project, name=, domain=, description=,
- # enabled=, **kwargs)
- self.projects_mock.update.assert_called_with(self.project.id, **kwargs)
+
+ self.identity_sdk_client.update_project.assert_called_with(
+ self.project.id, **kwargs
+ )
self.assertIsNone(result)
def test_project_set_description(self):
@@ -1024,7 +1358,9 @@ class TestProjectSet(TestProject):
kwargs = {
'description': 'new desc',
}
- self.projects_mock.update.assert_called_with(self.project.id, **kwargs)
+ self.identity_sdk_client.update_project.assert_called_with(
+ self.project.id, **kwargs
+ )
self.assertIsNone(result)
def test_project_set_enable(self):
@@ -1047,7 +1383,9 @@ class TestProjectSet(TestProject):
kwargs = {
'enabled': True,
}
- self.projects_mock.update.assert_called_with(self.project.id, **kwargs)
+ self.identity_sdk_client.update_project.assert_called_with(
+ self.project.id, **kwargs
+ )
self.assertIsNone(result)
def test_project_set_disable(self):
@@ -1070,7 +1408,9 @@ class TestProjectSet(TestProject):
kwargs = {
'enabled': False,
}
- self.projects_mock.update.assert_called_with(self.project.id, **kwargs)
+ self.identity_sdk_client.update_project.assert_called_with(
+ self.project.id, **kwargs
+ )
self.assertIsNone(result)
def test_project_set_property(self):
@@ -1097,7 +1437,9 @@ class TestProjectSet(TestProject):
'fee': 'fi',
'fo': 'fum',
}
- self.projects_mock.update.assert_called_with(self.project.id, **kwargs)
+ self.identity_sdk_client.update_project.assert_called_with(
+ self.project.id, **kwargs
+ )
self.assertIsNone(result)
def test_project_set_tags(self):
@@ -1112,7 +1454,7 @@ class TestProjectSet(TestProject):
]
verifylist = [
('name', 'qwerty'),
- ('domain', self.project.domain_id),
+ ('domain', self.domain.id),
('enabled', None),
('project', self.project.name),
('tags', ['foo']),
@@ -1126,9 +1468,9 @@ class TestProjectSet(TestProject):
'name': 'qwerty',
'tags': sorted({'tag1', 'tag2', 'tag3', 'foo'}),
}
- # ProjectManager.update(project, name=, domain=, description=,
- # enabled=, **kwargs)
- self.projects_mock.update.assert_called_with(self.project.id, **kwargs)
+ self.identity_sdk_client.update_project.assert_called_with(
+ self.project.id, **kwargs
+ )
self.assertIsNone(result)
def test_project_remove_tags(self):
@@ -1142,14 +1484,16 @@ class TestProjectSet(TestProject):
verifylist = [
('enabled', None),
('project', self.project.name),
- ('remove_tag', ['tag1', 'tag2']),
+ ('remove_tags', ['tag1', 'tag2']),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
result = self.cmd.take_action(parsed_args)
kwargs = {'tags': list({'tag3'})}
- self.projects_mock.update.assert_called_with(self.project.id, **kwargs)
+ self.identity_sdk_client.update_project.assert_called_with(
+ self.project.id, **kwargs
+ )
self.assertIsNone(result)
def test_project_set_with_immutable_option(self):
@@ -1173,7 +1517,9 @@ class TestProjectSet(TestProject):
kwargs = {
'options': {'immutable': True},
}
- self.projects_mock.update.assert_called_with(self.project.id, **kwargs)
+ self.identity_sdk_client.update_project.assert_called_with(
+ self.project.id, **kwargs
+ )
self.assertIsNone(result)
def test_project_set_with_no_immutable_option(self):
@@ -1197,114 +1543,108 @@ class TestProjectSet(TestProject):
kwargs = {
'options': {'immutable': False},
}
- self.projects_mock.update.assert_called_with(self.project.id, **kwargs)
+ self.identity_sdk_client.update_project.assert_called_with(
+ self.project.id, **kwargs
+ )
self.assertIsNone(result)
-class TestProjectShow(TestProject):
- domain = identity_fakes.FakeDomain.create_one_domain()
+class TestProjectShow(identity_fakes.TestIdentityv3):
+ domain = sdk_fakes.generate_fake_resource(_domain.Domain)
+
+ columns = (
+ 'description',
+ 'domain_id',
+ 'enabled',
+ 'id',
+ 'is_domain',
+ 'name',
+ 'options',
+ 'parent_id',
+ 'tags',
+ )
+
+ project_kwargs_no_options = {
+ 'description': None,
+ 'domain_id': None,
+ 'enabled': True,
+ 'is_domain': False,
+ 'parent_id': None,
+ 'tags': [],
+ }
def setUp(self):
super().setUp()
- self.project = identity_fakes.FakeProject.create_one_project(
- attrs={'domain_id': self.domain.id}
- )
-
# Get the command object to test
self.cmd = project.ShowProject(self.app, None)
def test_project_show(self):
- self.projects_mock.get.return_value = self.project
+ project = sdk_fakes.generate_fake_resource(
+ _project.Project, **self.project_kwargs_no_options
+ )
+ self.identity_sdk_client.find_project.return_value = project
arglist = [
- self.project.id,
+ project.id,
]
verifylist = [
- ('project', self.project.id),
+ ('project', project.id),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
- self.identity_client.tokens.get_token_data.return_value = {
- 'token': {
- 'project': {
- 'domain': {},
- 'name': parsed_args.project,
- 'id': parsed_args.project,
- }
- }
- }
-
# In base command class ShowOne in cliff, abstract method take_action()
# returns a two-part tuple with a tuple of column names and a tuple of
# data to be shown.
columns, data = self.cmd.take_action(parsed_args)
- self.projects_mock.get.assert_called_once_with(self.project.id)
-
- collist = (
- 'description',
- 'domain_id',
- 'enabled',
- 'id',
- 'is_domain',
- 'name',
- 'parent_id',
- 'tags',
+ self.identity_sdk_client.find_project.assert_called_with(
+ project.id, ignore_missing=False
)
- self.assertEqual(collist, columns)
+
+ self.assertEqual(self.columns, columns)
datalist = (
- self.project.description,
- self.project.domain_id,
+ None,
+ None,
True,
- self.project.id,
+ project.id,
False,
- self.project.name,
- self.project.parent_id,
- self.project.tags,
+ project.name,
+ {},
+ None,
+ [],
)
self.assertEqual(datalist, data)
def test_project_show_parents(self):
- self.project = identity_fakes.FakeProject.create_one_project(
- attrs={
- 'parent_id': self.project.parent_id,
- 'parents': [{'project': {'id': self.project.parent_id}}],
- }
+ parent = sdk_fakes.generate_fake_resource(
+ _project.Project, parent_id='default'
+ )
+ project = sdk_fakes.generate_fake_resource(
+ _project.Project,
+ **dict(
+ self.project_kwargs_no_options,
+ parent_id=parent.id,
+ parents={parent.id: {parent.parent_id: None}},
+ ),
)
- self.projects_mock.get.return_value = self.project
+ self.identity_sdk_client.find_project.return_value = project
arglist = [
- self.project.id,
+ project.id,
'--parents',
]
verifylist = [
- ('project', self.project.id),
+ ('project', project.id),
('parents', True),
('children', False),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
- self.identity_client.tokens.get_token_data.return_value = {
- 'token': {
- 'project': {
- 'domain': {},
- 'name': parsed_args.project,
- 'id': parsed_args.project,
- }
- }
- }
columns, data = self.cmd.take_action(parsed_args)
- self.projects_mock.get.assert_has_calls(
- [
- call(self.project.id),
- call(
- self.project.id,
- parents_as_ids=True,
- subtree_as_ids=False,
- ),
- ]
+ self.identity_sdk_client.find_project.assert_called_with(
+ project.id, parents_as_ids=True, ignore_missing=False
)
collist = (
@@ -1314,63 +1654,51 @@ class TestProjectShow(TestProject):
'id',
'is_domain',
'name',
+ 'options',
'parent_id',
'parents',
'tags',
)
- self.assertEqual(columns, collist)
+ self.assertEqual(collist, columns)
datalist = (
- self.project.description,
- self.project.domain_id,
- self.project.enabled,
- self.project.id,
- self.project.is_domain,
- self.project.name,
- self.project.parent_id,
- [{'project': {'id': self.project.parent_id}}],
- self.project.tags,
+ None,
+ None,
+ True,
+ project.id,
+ False,
+ project.name,
+ {},
+ parent.id,
+ {parent.id: {'default': None}},
+ [],
)
- self.assertEqual(data, datalist)
+ self.assertEqual(datalist, data)
def test_project_show_subtree(self):
- self.project = identity_fakes.FakeProject.create_one_project(
- attrs={
- 'parent_id': self.project.parent_id,
- 'subtree': [{'project': {'id': 'children-id'}}],
- }
+ child = sdk_fakes.generate_fake_resource(
+ _project.Project, subtree=None
+ )
+ project = sdk_fakes.generate_fake_resource(
+ _project.Project,
+ **dict(self.project_kwargs_no_options, subtree={child.id: None}),
)
- self.projects_mock.get.return_value = self.project
+ self.identity_sdk_client.find_project.return_value = project
arglist = [
- self.project.id,
+ project.id,
'--children',
]
verifylist = [
- ('project', self.project.id),
+ ('project', project.id),
('parents', False),
('children', True),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
- self.identity_client.tokens.get_token_data.return_value = {
- 'token': {
- 'project': {
- 'domain': {},
- 'name': parsed_args.project,
- 'id': parsed_args.project,
- }
- }
- }
columns, data = self.cmd.take_action(parsed_args)
- self.projects_mock.get.assert_has_calls(
- [
- call(self.project.id),
- call(
- self.project.id,
- parents_as_ids=False,
- subtree_as_ids=True,
- ),
- ]
+
+ self.identity_sdk_client.find_project.assert_called_with(
+ project.id, subtree_as_ids=True, ignore_missing=False
)
collist = (
@@ -1380,65 +1708,63 @@ class TestProjectShow(TestProject):
'id',
'is_domain',
'name',
+ 'options',
'parent_id',
'subtree',
'tags',
)
- self.assertEqual(columns, collist)
+ self.assertEqual(collist, columns)
datalist = (
- self.project.description,
- self.project.domain_id,
- self.project.enabled,
- self.project.id,
- self.project.is_domain,
- self.project.name,
- self.project.parent_id,
- [{'project': {'id': 'children-id'}}],
- self.project.tags,
+ None,
+ None,
+ True,
+ project.id,
+ False,
+ project.name,
+ {},
+ None,
+ {child.id: None},
+ [],
)
- self.assertEqual(data, datalist)
+ self.assertEqual(datalist, data)
def test_project_show_parents_and_children(self):
- self.project = identity_fakes.FakeProject.create_one_project(
- attrs={
- 'parent_id': self.project.parent_id,
- 'parents': [{'project': {'id': self.project.parent_id}}],
- 'subtree': [{'project': {'id': 'children-id'}}],
- }
+ parent = sdk_fakes.generate_fake_resource(
+ _project.Project, parent_id='default'
+ )
+ child = sdk_fakes.generate_fake_resource(
+ _project.Project, subtree=None
)
- self.projects_mock.get.return_value = self.project
+ project = sdk_fakes.generate_fake_resource(
+ _project.Project,
+ **dict(
+ self.project_kwargs_no_options,
+ parent_id=parent.id,
+ parents={parent.id: {parent.parent_id: None}},
+ subtree={child.id: None},
+ ),
+ )
+ self.identity_sdk_client.find_project.return_value = project
arglist = [
- self.project.id,
+ project.id,
'--parents',
'--children',
]
verifylist = [
- ('project', self.project.id),
+ ('project', project.id),
('parents', True),
('children', True),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
- self.identity_client.tokens.get_token_data.return_value = {
- 'token': {
- 'project': {
- 'domain': {},
- 'name': parsed_args.project,
- 'id': parsed_args.project,
- }
- }
- }
columns, data = self.cmd.take_action(parsed_args)
- self.projects_mock.get.assert_has_calls(
- [
- call(self.project.id),
- call(
- self.project.id,
- parents_as_ids=True,
- subtree_as_ids=True,
- ),
- ]
+
+ self.identity_sdk_client.find_project.assert_called_with(
+ project.id,
+ parents_as_ids=True,
+ subtree_as_ids=True,
+ ignore_missing=False,
)
collist = (
@@ -1448,42 +1774,36 @@ class TestProjectShow(TestProject):
'id',
'is_domain',
'name',
+ 'options',
'parent_id',
'parents',
'subtree',
'tags',
)
- self.assertEqual(columns, collist)
+ self.assertEqual(collist, columns)
datalist = (
- self.project.description,
- self.project.domain_id,
- self.project.enabled,
- self.project.id,
- self.project.is_domain,
- self.project.name,
- self.project.parent_id,
- [{'project': {'id': self.project.parent_id}}],
- [{'project': {'id': 'children-id'}}],
- self.project.tags,
+ None,
+ None,
+ True,
+ project.id,
+ False,
+ project.name,
+ {},
+ parent.id,
+ {parent.id: {'default': None}},
+ {child.id: None},
+ [],
)
- self.assertEqual(data, datalist)
+ self.assertEqual(datalist, data)
def test_project_show_with_domain(self):
- project = identity_fakes.FakeProject.create_one_project(
- {"name": self.project.name}
- )
-
- self.identity_client.tokens.get_token_data.return_value = {
- 'token': {
- 'project': {
- 'domain': {"id": self.project.domain_id},
- 'name': self.project.name,
- 'id': self.project.id,
- }
- }
- }
+ project = sdk_fakes.generate_fake_resource(
+ _project.Project,
+ **dict(self.project_kwargs_no_options, domain_id=self.domain.id),
+ )
+ self.identity_sdk_client.find_domain.return_value = self.domain
+ self.identity_sdk_client.find_project.return_value = project
- identity_client = self.identity_client
arglist = [
"--domain",
self.domain.id,
@@ -1495,23 +1815,22 @@ class TestProjectShow(TestProject):
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
- project_str = common._get_token_resource(
- identity_client, 'project', parsed_args.project, parsed_args.domain
+ columns, data = self.cmd.take_action(parsed_args)
+
+ self.identity_sdk_client.find_project.assert_called_with(
+ project.id, domain_id=self.domain.id, ignore_missing=False
)
- self.assertEqual(self.project.id, project_str)
- arglist = [
- "--domain",
- project.domain_id,
+ self.assertEqual(self.columns, columns)
+ datalist = (
+ None,
+ self.domain.id,
+ True,
+ project.id,
+ False,
project.name,
- ]
- verifylist = [
- ('domain', project.domain_id),
- ('project', project.name),
- ]
- parsed_args = self.check_parser(self.cmd, arglist, verifylist)
-
- project_str = common._get_token_resource(
- identity_client, 'project', parsed_args.project, parsed_args.domain
+ {},
+ None,
+ [],
)
- self.assertEqual(project.name, project_str)
+ self.assertEqual(datalist, data)
diff --git a/openstackclient/tests/unit/identity/v3/test_protocol.py b/openstackclient/tests/unit/identity/v3/test_protocol.py
index c856996..4ac77d6 100644
--- a/openstackclient/tests/unit/identity/v3/test_protocol.py
+++ b/openstackclient/tests/unit/identity/v3/test_protocol.py
@@ -12,202 +12,211 @@
# License for the specific language governing permissions and limitations
# under the License.
-import copy
-
+from openstack.identity.v3 import federation_protocol as _federation_protocol
+from openstack.identity.v3 import mapping as _mapping
+from openstack.test import fakes as sdk_fakes
from openstackclient.identity.v3 import federation_protocol
-from openstackclient.tests.unit import fakes
from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
-class TestProtocol(identity_fakes.TestFederatedIdentity):
- def setUp(self):
- super().setUp()
-
- federation_lib = self.identity_client.federation
- self.protocols_mock = federation_lib.protocols
- self.protocols_mock.reset_mock()
-
-
-class TestProtocolCreate(TestProtocol):
+class TestProtocolCreate(identity_fakes.TestFederatedIdentity):
def setUp(self):
super().setUp()
- proto = copy.deepcopy(identity_fakes.PROTOCOL_OUTPUT)
- resource = fakes.FakeResource(None, proto, loaded=True)
- self.protocols_mock.create.return_value = resource
+ self.proto = sdk_fakes.generate_fake_resource(
+ _federation_protocol.FederationProtocol
+ )
+ self.identity_sdk_client.create_federation_protocol.return_value = (
+ self.proto
+ )
self.cmd = federation_protocol.CreateProtocol(self.app, None)
def test_create_protocol(self):
argslist = [
- identity_fakes.protocol_id,
+ self.proto.name,
'--identity-provider',
- identity_fakes.idp_id,
+ self.proto.idp_id,
'--mapping',
- identity_fakes.mapping_id,
+ self.proto.mapping_id,
]
verifylist = [
- ('federation_protocol', identity_fakes.protocol_id),
- ('identity_provider', identity_fakes.idp_id),
- ('mapping', identity_fakes.mapping_id),
+ ('federation_protocol', self.proto.name),
+ ('identity_provider', self.proto.idp_id),
+ ('mapping', self.proto.mapping_id),
]
parsed_args = self.check_parser(self.cmd, argslist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
- self.protocols_mock.create.assert_called_with(
- protocol_id=identity_fakes.protocol_id,
- identity_provider=identity_fakes.idp_id,
- mapping=identity_fakes.mapping_id,
+ self.identity_sdk_client.create_federation_protocol.assert_called_with(
+ name=self.proto.id,
+ idp_id=self.proto.idp_id,
+ mapping_id=self.proto.mapping_id,
)
collist = ('id', 'identity_provider', 'mapping')
self.assertEqual(collist, columns)
datalist = (
- identity_fakes.protocol_id,
- identity_fakes.idp_id,
- identity_fakes.mapping_id,
+ self.proto.id,
+ self.proto.idp_id,
+ self.proto.mapping_id,
)
self.assertEqual(datalist, data)
-class TestProtocolDelete(TestProtocol):
+class TestProtocolDelete(identity_fakes.TestFederatedIdentity):
def setUp(self):
super().setUp()
- # This is the return value for utils.find_resource()
- self.protocols_mock.get.return_value = fakes.FakeResource(
- None,
- copy.deepcopy(identity_fakes.PROTOCOL_OUTPUT),
- loaded=True,
+ self.proto = sdk_fakes.generate_fake_resource(
+ _federation_protocol.FederationProtocol
)
-
- self.protocols_mock.delete.return_value = None
+ self.identity_sdk_client.delete_federation_protocol.return_value = None
self.cmd = federation_protocol.DeleteProtocol(self.app, None)
- def test_delete_identity_provider(self):
+ def test_delete_protocol(self):
arglist = [
'--identity-provider',
- identity_fakes.idp_id,
- identity_fakes.protocol_id,
+ self.proto.idp_id,
+ self.proto.name,
]
verifylist = [
- ('federation_protocol', [identity_fakes.protocol_id]),
- ('identity_provider', identity_fakes.idp_id),
+ ('federation_protocol', [self.proto.id]),
+ ('identity_provider', self.proto.idp_id),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
result = self.cmd.take_action(parsed_args)
- self.protocols_mock.delete.assert_called_with(
- identity_fakes.idp_id, identity_fakes.protocol_id
+ self.identity_sdk_client.delete_federation_protocol.assert_called_with(
+ idp_id=self.proto.idp_id,
+ protocol=self.proto.id,
+ ignore_missing=False,
)
self.assertIsNone(result)
-class TestProtocolList(TestProtocol):
+class TestProtocolList(identity_fakes.TestFederatedIdentity):
def setUp(self):
super().setUp()
- self.protocols_mock.get.return_value = fakes.FakeResource(
- None, identity_fakes.PROTOCOL_ID_MAPPING, loaded=True
+ self.proto1 = sdk_fakes.generate_fake_resource(
+ _federation_protocol.FederationProtocol
)
-
- self.protocols_mock.list.return_value = [
- fakes.FakeResource(
- None, identity_fakes.PROTOCOL_ID_MAPPING, loaded=True
- )
+ self.proto2 = sdk_fakes.generate_fake_resource(
+ _federation_protocol.FederationProtocol, idp_id=self.proto1
+ )
+ self.identity_sdk_client.federation_protocols.return_value = [
+ self.proto1,
+ self.proto2,
]
-
self.cmd = federation_protocol.ListProtocols(self.app, None)
def test_list_protocols(self):
- arglist = ['--identity-provider', identity_fakes.idp_id]
- verifylist = [('identity_provider', identity_fakes.idp_id)]
+ arglist = ['--identity-provider', self.proto1.idp_id]
+ verifylist = [('identity_provider', self.proto1.idp_id)]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
- self.protocols_mock.list.assert_called_with(identity_fakes.idp_id)
+ self.identity_sdk_client.federation_protocols.assert_called_with(
+ self.proto1.idp_id
+ )
+ self.assertEqual(columns, ('id', 'mapping'))
+ datalist = (
+ (
+ self.proto1.name,
+ self.proto1.mapping_id,
+ ),
+ (
+ self.proto2.name,
+ self.proto2.mapping_id,
+ ),
+ )
+ self.assertEqual(datalist, tuple(data))
-class TestProtocolSet(TestProtocol):
+
+class TestProtocolSet(identity_fakes.TestFederatedIdentity):
def setUp(self):
super().setUp()
- self.protocols_mock.get.return_value = fakes.FakeResource(
- None, identity_fakes.PROTOCOL_OUTPUT, loaded=True
+ self.proto = sdk_fakes.generate_fake_resource(
+ _federation_protocol.FederationProtocol
)
- self.protocols_mock.update.return_value = fakes.FakeResource(
- None, identity_fakes.PROTOCOL_OUTPUT_UPDATED, loaded=True
+ self.mapping = sdk_fakes.generate_fake_resource(_mapping.Mapping)
+ self.identity_sdk_client.update_federation_protocol.return_value = (
+ self.proto
)
-
self.cmd = federation_protocol.SetProtocol(self.app, None)
def test_set_new_mapping(self):
arglist = [
- identity_fakes.protocol_id,
+ self.proto.name,
'--identity-provider',
- identity_fakes.idp_id,
+ self.proto.idp_id,
'--mapping',
- identity_fakes.mapping_id,
+ self.mapping.name,
]
verifylist = [
- ('identity_provider', identity_fakes.idp_id),
- ('federation_protocol', identity_fakes.protocol_id),
- ('mapping', identity_fakes.mapping_id),
+ ('identity_provider', self.proto.idp_id),
+ ('federation_protocol', self.proto.name),
+ ('mapping', self.mapping.name),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
- self.protocols_mock.update.assert_called_with(
- identity_fakes.idp_id,
- identity_fakes.protocol_id,
- identity_fakes.mapping_id,
+ self.identity_sdk_client.update_federation_protocol.assert_called_with(
+ idp_id=self.proto.idp_id,
+ name=self.proto.name,
+ mapping_id=self.mapping.id,
)
collist = ('id', 'identity_provider', 'mapping')
self.assertEqual(collist, columns)
datalist = (
- identity_fakes.protocol_id,
- identity_fakes.idp_id,
- identity_fakes.mapping_id_updated,
+ self.proto.name,
+ self.proto.idp_id,
+ self.proto.mapping_id,
)
self.assertEqual(datalist, data)
-class TestProtocolShow(TestProtocol):
+class TestProtocolShow(identity_fakes.TestFederatedIdentity):
def setUp(self):
super().setUp()
- self.protocols_mock.get.return_value = fakes.FakeResource(
- None, identity_fakes.PROTOCOL_OUTPUT, loaded=False
+ self.proto = sdk_fakes.generate_fake_resource(
+ _federation_protocol.FederationProtocol
+ )
+ self.identity_sdk_client.get_federation_protocol.return_value = (
+ self.proto
)
-
self.cmd = federation_protocol.ShowProtocol(self.app, None)
def test_show_protocol(self):
arglist = [
- identity_fakes.protocol_id,
+ self.proto.name,
'--identity-provider',
- identity_fakes.idp_id,
+ self.proto.idp_id,
]
verifylist = [
- ('federation_protocol', identity_fakes.protocol_id),
- ('identity_provider', identity_fakes.idp_id),
+ ('federation_protocol', self.proto.name),
+ ('identity_provider', self.proto.idp_id),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
- self.protocols_mock.get.assert_called_with(
- identity_fakes.idp_id, identity_fakes.protocol_id
+ self.identity_sdk_client.get_federation_protocol.assert_called_with(
+ idp_id=self.proto.idp_id, protocol=self.proto.name
)
collist = ('id', 'identity_provider', 'mapping')
self.assertEqual(collist, columns)
datalist = (
- identity_fakes.protocol_id,
- identity_fakes.idp_id,
- identity_fakes.mapping_id,
+ self.proto.name,
+ self.proto.idp_id,
+ self.proto.mapping_id,
)
self.assertEqual(datalist, data)
diff --git a/openstackclient/tests/unit/identity/v3/test_registered_limit.py b/openstackclient/tests/unit/identity/v3/test_registered_limit.py
index 792096c..1864914 100644
--- a/openstackclient/tests/unit/identity/v3/test_registered_limit.py
+++ b/openstackclient/tests/unit/identity/v3/test_registered_limit.py
@@ -10,72 +10,79 @@
# License for the specific language governing permissions and limitations
# under the License.
-import copy
-
-from keystoneauth1.exceptions import http as ksa_exceptions
+from openstack import exceptions as sdk_exc
+from openstack.identity.v3 import region as _region
+from openstack.identity.v3 import registered_limit as _registered_limit
+from openstack.identity.v3 import service as _service
+from openstack.test import fakes as sdk_fakes
from osc_lib import exceptions
from openstackclient.identity.v3 import registered_limit
-from openstackclient.tests.unit import fakes
from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
-class TestRegisteredLimit(identity_fakes.TestIdentityv3):
+class TestRegisteredLimitCreate(identity_fakes.TestIdentityv3):
def setUp(self):
super().setUp()
- self.registered_limit_mock = self.identity_client.registered_limits
-
- self.services_mock = self.identity_client.services
- self.services_mock.reset_mock()
-
- self.regions_mock = self.identity_client.regions
- self.regions_mock.reset_mock()
+ self.service = sdk_fakes.generate_fake_resource(_service.Service)
+ self.region = sdk_fakes.generate_fake_resource(_region.Region)
+ self.description = 'default limit of foobars'
+ self.default_limit = 10
+ self.resource_name = 'foobars'
-class TestRegisteredLimitCreate(TestRegisteredLimit):
- def setUp(self):
- super().setUp()
+ self.identity_sdk_client.find_service.return_value = self.service
+ self.identity_sdk_client.get_region.return_value = self.region
- self.service = fakes.FakeResource(
- None, copy.deepcopy(identity_fakes.SERVICE), loaded=True
+ self.registered_limit = sdk_fakes.generate_fake_resource(
+ resource_type=_registered_limit.RegisteredLimit,
+ description=None,
+ region_id=None,
+ service_id=self.service.id,
+ default_limit=self.default_limit,
+ resource_name=self.resource_name,
)
- self.services_mock.get.return_value = self.service
-
- self.region = fakes.FakeResource(
- None, copy.deepcopy(identity_fakes.REGION), loaded=True
+ self.registered_limit_with_options = sdk_fakes.generate_fake_resource(
+ resource_type=_registered_limit.RegisteredLimit,
+ description=self.description,
+ region_id=self.region.id,
+ service_id=self.service.id,
+ default_limit=self.default_limit,
+ resource_name=self.resource_name,
)
- self.regions_mock.get.return_value = self.region
self.cmd = registered_limit.CreateRegisteredLimit(self.app, None)
def test_registered_limit_create_without_options(self):
- self.registered_limit_mock.create.return_value = fakes.FakeResource(
- None, copy.deepcopy(identity_fakes.REGISTERED_LIMIT), loaded=True
+ self.identity_sdk_client.create_registered_limit.return_value = (
+ self.registered_limit
)
- resource_name = identity_fakes.registered_limit_resource_name
- default_limit = identity_fakes.registered_limit_default_limit
arglist = [
'--service',
- identity_fakes.service_id,
+ self.service.id,
'--default-limit',
- '10',
- resource_name,
+ str(self.default_limit),
+ self.resource_name,
]
verifylist = [
- ('service', identity_fakes.service_id),
- ('default_limit', default_limit),
- ('resource_name', resource_name),
+ ('service', self.service.id),
+ ('default_limit', self.default_limit),
+ ('resource_name', self.resource_name),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
- kwargs = {'description': None, 'region': None}
- self.registered_limit_mock.create.assert_called_with(
- self.service, resource_name, default_limit, **kwargs
+ kwargs = {
+ 'service_id': self.service.id,
+ 'default_limit': self.default_limit,
+ 'resource_name': self.resource_name,
+ }
+ self.identity_sdk_client.create_registered_limit.assert_called_with(
+ **kwargs
)
collist = (
@@ -89,51 +96,52 @@ class TestRegisteredLimitCreate(TestRegisteredLimit):
self.assertEqual(collist, columns)
datalist = (
- identity_fakes.registered_limit_default_limit,
+ self.default_limit,
None,
- identity_fakes.registered_limit_id,
+ self.registered_limit.id,
None,
- identity_fakes.registered_limit_resource_name,
- identity_fakes.service_id,
+ self.resource_name,
+ self.service.id,
)
self.assertEqual(datalist, data)
def test_registered_limit_create_with_options(self):
- self.registered_limit_mock.create.return_value = fakes.FakeResource(
- None,
- copy.deepcopy(identity_fakes.REGISTERED_LIMIT_OPTIONS),
- loaded=True,
+ self.identity_sdk_client.create_registered_limit.return_value = (
+ self.registered_limit_with_options
)
- resource_name = identity_fakes.registered_limit_resource_name
- default_limit = identity_fakes.registered_limit_default_limit
- description = identity_fakes.registered_limit_description
arglist = [
'--region',
- identity_fakes.region_id,
+ self.region.id,
'--description',
- description,
+ self.description,
'--service',
- identity_fakes.service_id,
+ self.service.id,
'--default-limit',
- '10',
- resource_name,
+ str(self.default_limit),
+ self.resource_name,
]
verifylist = [
- ('region', identity_fakes.region_id),
- ('description', description),
- ('service', identity_fakes.service_id),
- ('default_limit', default_limit),
- ('resource_name', resource_name),
+ ('region', self.region.id),
+ ('description', self.description),
+ ('service', self.service.id),
+ ('default_limit', self.default_limit),
+ ('resource_name', self.resource_name),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
- kwargs = {'description': description, 'region': self.region}
- self.registered_limit_mock.create.assert_called_with(
- self.service, resource_name, default_limit, **kwargs
+ kwargs = {
+ 'description': self.description,
+ 'region_id': self.region.id,
+ 'service_id': self.service.id,
+ 'default_limit': self.default_limit,
+ 'resource_name': self.resource_name,
+ }
+ self.identity_sdk_client.create_registered_limit.assert_called_with(
+ **kwargs
)
collist = (
@@ -147,44 +155,47 @@ class TestRegisteredLimitCreate(TestRegisteredLimit):
self.assertEqual(collist, columns)
datalist = (
- identity_fakes.registered_limit_default_limit,
- description,
- identity_fakes.registered_limit_id,
- identity_fakes.region_id,
- identity_fakes.registered_limit_resource_name,
- identity_fakes.service_id,
+ self.default_limit,
+ self.description,
+ self.registered_limit_with_options.id,
+ self.region.id,
+ self.resource_name,
+ self.service.id,
)
self.assertEqual(datalist, data)
-class TestRegisteredLimitDelete(TestRegisteredLimit):
+class TestRegisteredLimitDelete(identity_fakes.TestIdentityv3):
def setUp(self):
super().setUp()
self.cmd = registered_limit.DeleteRegisteredLimit(self.app, None)
def test_registered_limit_delete(self):
- self.registered_limit_mock.delete.return_value = None
+ self.registered_limit = sdk_fakes.generate_fake_resource(
+ resource_type=_registered_limit.RegisteredLimit,
+ )
+ self.identity_sdk_client.delete_registered_limit.return_value = None
- arglist = [identity_fakes.registered_limit_id]
- verifylist = [
- ('registered_limit_id', [identity_fakes.registered_limit_id])
- ]
+ arglist = [self.registered_limit.id]
+ verifylist = [('registered_limits', [self.registered_limit.id])]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
result = self.cmd.take_action(parsed_args)
- self.registered_limit_mock.delete.assert_called_with(
- identity_fakes.registered_limit_id
+ self.identity_sdk_client.delete_registered_limit.assert_called_with(
+ self.registered_limit.id,
+ ignore_missing=False,
)
self.assertIsNone(result)
def test_registered_limit_delete_with_exception(self):
- return_value = ksa_exceptions.NotFound()
- self.registered_limit_mock.delete.side_effect = return_value
+ self.identity_sdk_client.delete_registered_limit.side_effect = (
+ sdk_exc.ResourceNotFound
+ )
arglist = ['fake-registered-limit-id']
- verifylist = [('registered_limit_id', ['fake-registered-limit-id'])]
+ verifylist = [('registered_limits', ['fake-registered-limit-id'])]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
try:
@@ -196,27 +207,52 @@ class TestRegisteredLimitDelete(TestRegisteredLimit):
)
-class TestRegisteredLimitShow(TestRegisteredLimit):
+class TestRegisteredLimitShow(identity_fakes.TestIdentityv3):
def setUp(self):
super().setUp()
- self.registered_limit_mock.get.return_value = fakes.FakeResource(
- None, copy.deepcopy(identity_fakes.REGISTERED_LIMIT), loaded=True
+ self.service = sdk_fakes.generate_fake_resource(_service.Service)
+ self.region = sdk_fakes.generate_fake_resource(_region.Region)
+
+ self.description = 'default limit of foobars'
+ self.default_limit = 10
+ self.resource_name = 'foobars'
+
+ self.identity_sdk_client.find_service.return_value = self.service
+ self.identity_sdk_client.get_region.return_value = self.region
+
+ self.registered_limit = sdk_fakes.generate_fake_resource(
+ resource_type=_registered_limit.RegisteredLimit,
+ description=None,
+ region_id=None,
+ service_id=self.service.id,
+ default_limit=self.default_limit,
+ resource_name=self.resource_name,
+ )
+ self.registered_limit_with_options = sdk_fakes.generate_fake_resource(
+ resource_type=_registered_limit.RegisteredLimit,
+ description=self.description,
+ region_id=self.region.id,
+ service_id=self.service.id,
+ default_limit=self.default_limit,
+ resource_name=self.resource_name,
)
self.cmd = registered_limit.ShowRegisteredLimit(self.app, None)
def test_registered_limit_show(self):
- arglist = [identity_fakes.registered_limit_id]
- verifylist = [
- ('registered_limit_id', identity_fakes.registered_limit_id)
- ]
+ self.identity_sdk_client.get_registered_limit.return_value = (
+ self.registered_limit
+ )
+
+ arglist = [self.registered_limit.id]
+ verifylist = [('registered_limit_id', self.registered_limit.id)]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
- self.registered_limit_mock.get.assert_called_with(
- identity_fakes.registered_limit_id
+ self.identity_sdk_client.get_registered_limit.assert_called_with(
+ self.registered_limit.id
)
collist = (
@@ -229,50 +265,107 @@ class TestRegisteredLimitShow(TestRegisteredLimit):
)
self.assertEqual(collist, columns)
datalist = (
- identity_fakes.registered_limit_default_limit,
+ self.default_limit,
None,
- identity_fakes.registered_limit_id,
+ self.registered_limit.id,
None,
- identity_fakes.registered_limit_resource_name,
- identity_fakes.service_id,
+ self.resource_name,
+ self.service.id,
+ )
+ self.assertEqual(datalist, data)
+
+ def test_registered_limit_show_with_options(self):
+ self.identity_sdk_client.get_registered_limit.return_value = (
+ self.registered_limit_with_options
+ )
+
+ arglist = [self.registered_limit_with_options.id]
+ verifylist = [
+ ('registered_limit_id', self.registered_limit_with_options.id)
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+
+ self.identity_sdk_client.get_registered_limit.assert_called_with(
+ self.registered_limit_with_options.id
+ )
+
+ collist = (
+ 'default_limit',
+ 'description',
+ 'id',
+ 'region_id',
+ 'resource_name',
+ 'service_id',
+ )
+ self.assertEqual(collist, columns)
+ datalist = (
+ self.default_limit,
+ self.description,
+ self.registered_limit_with_options.id,
+ self.region.id,
+ self.resource_name,
+ self.service.id,
)
self.assertEqual(datalist, data)
-class TestRegisteredLimitSet(TestRegisteredLimit):
+class TestRegisteredLimitSet(identity_fakes.TestIdentityv3):
def setUp(self):
super().setUp()
+
+ self.service = sdk_fakes.generate_fake_resource(_service.Service)
+ self.region = sdk_fakes.generate_fake_resource(_region.Region)
+
+ self.default_limit = 10
+ self.resource_name = 'foobars'
+
+ self.identity_sdk_client.find_service.return_value = self.service
+ self.identity_sdk_client.get_region.return_value = self.region
+
+ self.registered_limit = sdk_fakes.generate_fake_resource(
+ resource_type=_registered_limit.RegisteredLimit,
+ description=None,
+ region_id=None,
+ service_id=self.service.id,
+ default_limit=self.default_limit,
+ resource_name=self.resource_name,
+ )
+
self.cmd = registered_limit.SetRegisteredLimit(self.app, None)
def test_registered_limit_set_description(self):
- registered_limit = copy.deepcopy(identity_fakes.REGISTERED_LIMIT)
- registered_limit['description'] = (
- identity_fakes.registered_limit_description
+ updated_description = 'default limit of foobars'
+ updated_registered_limit = sdk_fakes.generate_fake_resource(
+ resource_type=_registered_limit.RegisteredLimit,
+ id=self.registered_limit.id,
+ description=updated_description,
+ region_id=None,
+ service_id=self.service.id,
+ default_limit=self.default_limit,
+ resource_name=self.resource_name,
)
- self.registered_limit_mock.update.return_value = fakes.FakeResource(
- None, registered_limit, loaded=True
+ self.identity_sdk_client.update_registered_limit.return_value = (
+ updated_registered_limit
)
arglist = [
'--description',
- identity_fakes.registered_limit_description,
- identity_fakes.registered_limit_id,
+ updated_description,
+ self.registered_limit.id,
]
verifylist = [
- ('description', identity_fakes.registered_limit_description),
- ('registered_limit_id', identity_fakes.registered_limit_id),
+ ('description', updated_description),
+ ('registered_limit_id', self.registered_limit.id),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
- self.registered_limit_mock.update.assert_called_with(
- identity_fakes.registered_limit_id,
- service=None,
- resource_name=None,
- default_limit=None,
- description=identity_fakes.registered_limit_description,
- region=None,
+ self.identity_sdk_client.update_registered_limit.assert_called_with(
+ self.registered_limit.id,
+ description=updated_description,
)
collist = (
@@ -285,43 +378,46 @@ class TestRegisteredLimitSet(TestRegisteredLimit):
)
self.assertEqual(collist, columns)
datalist = (
- identity_fakes.registered_limit_default_limit,
- identity_fakes.registered_limit_description,
- identity_fakes.registered_limit_id,
+ self.default_limit,
+ updated_description,
+ self.registered_limit.id,
None,
- identity_fakes.registered_limit_resource_name,
- identity_fakes.service_id,
+ self.resource_name,
+ self.service.id,
)
self.assertEqual(datalist, data)
def test_registered_limit_set_default_limit(self):
- registered_limit = copy.deepcopy(identity_fakes.REGISTERED_LIMIT)
- default_limit = 20
- registered_limit['default_limit'] = default_limit
- self.registered_limit_mock.update.return_value = fakes.FakeResource(
- None, registered_limit, loaded=True
+ updated_default_limit = 20
+ updated_registered_limit = sdk_fakes.generate_fake_resource(
+ resource_type=_registered_limit.RegisteredLimit,
+ id=self.registered_limit.id,
+ description=None,
+ region_id=None,
+ service_id=self.service.id,
+ default_limit=updated_default_limit,
+ resource_name=self.resource_name,
+ )
+ self.identity_sdk_client.update_registered_limit.return_value = (
+ updated_registered_limit
)
arglist = [
'--default-limit',
- str(default_limit),
- identity_fakes.registered_limit_id,
+ str(updated_default_limit),
+ self.registered_limit.id,
]
verifylist = [
- ('default_limit', default_limit),
- ('registered_limit_id', identity_fakes.registered_limit_id),
+ ('default_limit', updated_default_limit),
+ ('registered_limit_id', self.registered_limit.id),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
- self.registered_limit_mock.update.assert_called_with(
- identity_fakes.registered_limit_id,
- service=None,
- resource_name=None,
- default_limit=default_limit,
- description=None,
- region=None,
+ self.identity_sdk_client.update_registered_limit.assert_called_with(
+ self.registered_limit.id,
+ default_limit=updated_default_limit,
)
collist = (
@@ -334,43 +430,46 @@ class TestRegisteredLimitSet(TestRegisteredLimit):
)
self.assertEqual(collist, columns)
datalist = (
- default_limit,
+ updated_default_limit,
None,
- identity_fakes.registered_limit_id,
+ self.registered_limit.id,
None,
- identity_fakes.registered_limit_resource_name,
- identity_fakes.service_id,
+ self.resource_name,
+ self.service.id,
)
self.assertEqual(datalist, data)
def test_registered_limit_set_resource_name(self):
- registered_limit = copy.deepcopy(identity_fakes.REGISTERED_LIMIT)
- resource_name = 'volumes'
- registered_limit['resource_name'] = resource_name
- self.registered_limit_mock.update.return_value = fakes.FakeResource(
- None, registered_limit, loaded=True
+ updated_resource_name = 'volumes'
+ updated_registered_limit = sdk_fakes.generate_fake_resource(
+ resource_type=_registered_limit.RegisteredLimit,
+ id=self.registered_limit.id,
+ description=None,
+ region_id=None,
+ service_id=self.service.id,
+ default_limit=self.default_limit,
+ resource_name=updated_resource_name,
+ )
+ self.identity_sdk_client.update_registered_limit.return_value = (
+ updated_registered_limit
)
arglist = [
'--resource-name',
- resource_name,
- identity_fakes.registered_limit_id,
+ updated_resource_name,
+ self.registered_limit.id,
]
verifylist = [
- ('resource_name', resource_name),
- ('registered_limit_id', identity_fakes.registered_limit_id),
+ ('resource_name', updated_resource_name),
+ ('registered_limit_id', self.registered_limit.id),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
- self.registered_limit_mock.update.assert_called_with(
- identity_fakes.registered_limit_id,
- service=None,
- resource_name=resource_name,
- default_limit=None,
- description=None,
- region=None,
+ self.identity_sdk_client.update_registered_limit.assert_called_with(
+ self.registered_limit.id,
+ resource_name=updated_resource_name,
)
collist = (
@@ -383,40 +482,43 @@ class TestRegisteredLimitSet(TestRegisteredLimit):
)
self.assertEqual(collist, columns)
datalist = (
- identity_fakes.registered_limit_default_limit,
+ self.default_limit,
None,
- identity_fakes.registered_limit_id,
+ self.registered_limit.id,
None,
- resource_name,
- identity_fakes.service_id,
+ updated_resource_name,
+ self.service.id,
)
self.assertEqual(datalist, data)
def test_registered_limit_set_service(self):
- registered_limit = copy.deepcopy(identity_fakes.REGISTERED_LIMIT)
- service = identity_fakes.FakeService.create_one_service()
- registered_limit['service_id'] = service.id
- self.registered_limit_mock.update.return_value = fakes.FakeResource(
- None, registered_limit, loaded=True
+ updated_service = sdk_fakes.generate_fake_resource(_service.Service)
+ self.identity_sdk_client.find_service.return_value = updated_service
+ updated_registered_limit = sdk_fakes.generate_fake_resource(
+ resource_type=_registered_limit.RegisteredLimit,
+ id=self.registered_limit.id,
+ description=None,
+ region_id=None,
+ service_id=updated_service.id,
+ default_limit=self.default_limit,
+ resource_name=self.resource_name,
+ )
+ self.identity_sdk_client.update_registered_limit.return_value = (
+ updated_registered_limit
)
- self.services_mock.get.return_value = service
- arglist = ['--service', service.id, identity_fakes.registered_limit_id]
+ arglist = ['--service', updated_service.id, self.registered_limit.id]
verifylist = [
- ('service', service.id),
- ('registered_limit_id', identity_fakes.registered_limit_id),
+ ('service', updated_service.id),
+ ('registered_limit_id', self.registered_limit.id),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
- self.registered_limit_mock.update.assert_called_with(
- identity_fakes.registered_limit_id,
- service=service,
- resource_name=None,
- default_limit=None,
- description=None,
- region=None,
+ self.identity_sdk_client.update_registered_limit.assert_called_with(
+ self.registered_limit.id,
+ service_id=updated_service.id,
)
collist = (
@@ -429,42 +531,43 @@ class TestRegisteredLimitSet(TestRegisteredLimit):
)
self.assertEqual(collist, columns)
datalist = (
- identity_fakes.registered_limit_default_limit,
+ self.default_limit,
None,
- identity_fakes.registered_limit_id,
+ self.registered_limit.id,
None,
- identity_fakes.registered_limit_resource_name,
- service.id,
+ self.resource_name,
+ updated_service.id,
)
self.assertEqual(datalist, data)
def test_registered_limit_set_region(self):
- registered_limit = copy.deepcopy(identity_fakes.REGISTERED_LIMIT)
- region = identity_fakes.REGION
- region['id'] = 'RegionTwo'
- region = fakes.FakeResource(None, copy.deepcopy(region), loaded=True)
- registered_limit['region_id'] = region.id
- self.registered_limit_mock.update.return_value = fakes.FakeResource(
- None, registered_limit, loaded=True
+ updated_region = sdk_fakes.generate_fake_resource(_region.Region)
+ self.identity_sdk_client.get_region.return_value = updated_region
+ updated_registered_limit = sdk_fakes.generate_fake_resource(
+ resource_type=_registered_limit.RegisteredLimit,
+ id=self.registered_limit.id,
+ description=None,
+ region_id=updated_region.id,
+ service_id=self.service.id,
+ default_limit=self.default_limit,
+ resource_name=self.resource_name,
+ )
+ self.identity_sdk_client.update_registered_limit.return_value = (
+ updated_registered_limit
)
- self.regions_mock.get.return_value = region
- arglist = ['--region', region.id, identity_fakes.registered_limit_id]
+ arglist = ['--region', updated_region.id, self.registered_limit.id]
verifylist = [
- ('region', region.id),
- ('registered_limit_id', identity_fakes.registered_limit_id),
+ ('region', updated_region.id),
+ ('registered_limit_id', self.registered_limit.id),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
- self.registered_limit_mock.update.assert_called_with(
- identity_fakes.registered_limit_id,
- service=None,
- resource_name=None,
- default_limit=None,
- description=None,
- region=region,
+ self.identity_sdk_client.update_registered_limit.assert_called_with(
+ self.registered_limit.id,
+ region_id=updated_region.id,
)
collist = (
@@ -477,54 +580,86 @@ class TestRegisteredLimitSet(TestRegisteredLimit):
)
self.assertEqual(collist, columns)
datalist = (
- identity_fakes.registered_limit_default_limit,
+ self.default_limit,
None,
- identity_fakes.registered_limit_id,
- region.id,
- identity_fakes.registered_limit_resource_name,
- identity_fakes.service_id,
+ self.registered_limit.id,
+ updated_region.id,
+ self.resource_name,
+ self.service.id,
)
self.assertEqual(datalist, data)
-class TestRegisteredLimitList(TestRegisteredLimit):
+class TestRegisteredLimitList(identity_fakes.TestIdentityv3):
def setUp(self):
super().setUp()
- self.registered_limit_mock.get.return_value = fakes.FakeResource(
- None, copy.deepcopy(identity_fakes.REGISTERED_LIMIT), loaded=True
- )
+ self.service = sdk_fakes.generate_fake_resource(_service.Service)
+ self.region = sdk_fakes.generate_fake_resource(_region.Region)
- self.cmd = registered_limit.ShowRegisteredLimit(self.app, None)
+ self.description = 'default limit of foobars'
+ self.default_limit = 10
+ self.resource_name = 'foobars'
- def test_limit_show(self):
- arglist = [identity_fakes.registered_limit_id]
- verifylist = [
- ('registered_limit_id', identity_fakes.registered_limit_id)
+ self.identity_sdk_client.find_service.return_value = self.service
+ self.identity_sdk_client.get_region.return_value = self.region
+
+ self.registered_limit = sdk_fakes.generate_fake_resource(
+ resource_type=_registered_limit.RegisteredLimit,
+ description=None,
+ region_id=None,
+ service_id=self.service.id,
+ default_limit=self.default_limit,
+ resource_name=self.resource_name,
+ )
+ self.registered_limit_with_options = sdk_fakes.generate_fake_resource(
+ resource_type=_registered_limit.RegisteredLimit,
+ description=self.description,
+ region_id=self.region.id,
+ service_id=self.service.id,
+ default_limit=self.default_limit,
+ resource_name=self.resource_name,
+ )
+ self.identity_sdk_client.registered_limits.return_value = [
+ self.registered_limit,
+ self.registered_limit_with_options,
]
+
+ self.cmd = registered_limit.ListRegisteredLimit(self.app, None)
+
+ def test_registered_limit_list(self):
+ arglist = []
+ verifylist = []
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
- self.registered_limit_mock.get.assert_called_with(
- identity_fakes.registered_limit_id
- )
-
+ self.identity_sdk_client.registered_limits.assert_called_with()
collist = (
- 'default_limit',
- 'description',
- 'id',
- 'region_id',
- 'resource_name',
- 'service_id',
+ "ID",
+ "Service ID",
+ "Resource Name",
+ "Default Limit",
+ "Description",
+ "Region ID",
)
self.assertEqual(collist, columns)
datalist = (
- identity_fakes.registered_limit_default_limit,
- None,
- identity_fakes.registered_limit_id,
- None,
- identity_fakes.registered_limit_resource_name,
- identity_fakes.service_id,
- )
- self.assertEqual(datalist, data)
+ (
+ self.registered_limit.id,
+ self.service.id,
+ self.resource_name,
+ self.default_limit,
+ None,
+ None,
+ ),
+ (
+ self.registered_limit_with_options.id,
+ self.service.id,
+ self.resource_name,
+ self.default_limit,
+ self.description,
+ self.region.id,
+ ),
+ )
+ self.assertEqual(datalist, tuple(data))
diff --git a/openstackclient/tests/unit/identity/v3/test_role.py b/openstackclient/tests/unit/identity/v3/test_role.py
index 3ed1d44..90b2d71 100644
--- a/openstackclient/tests/unit/identity/v3/test_role.py
+++ b/openstackclient/tests/unit/identity/v3/test_role.py
@@ -15,8 +15,6 @@
from unittest import mock
-from osc_lib import exceptions
-
from openstack import exceptions as sdk_exc
from openstack.identity.v3 import domain as _domain
from openstack.identity.v3 import group as _group
@@ -25,10 +23,10 @@ from openstack.identity.v3 import role as _role
from openstack.identity.v3 import system as _system
from openstack.identity.v3 import user as _user
from openstack.test import fakes as sdk_fakes
+from osc_lib import exceptions
from openstackclient.identity.v3 import role
from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
-from openstackclient.tests.unit import utils as test_utils
class TestRoleInherited(identity_fakes.TestIdentityv3):
@@ -36,85 +34,6 @@ class TestRoleInherited(identity_fakes.TestIdentityv3):
return True
-class TestFindSDKId(test_utils.TestCase):
- def setUp(self):
- super().setUp()
- self.user = sdk_fakes.generate_fake_resource(_user.User)
- self.identity_sdk_client = mock.Mock()
- self.identity_sdk_client.find_user = mock.Mock()
-
- def test_find_sdk_id_validate(self):
- self.identity_sdk_client.find_user.side_effect = [self.user]
-
- result = role._find_sdk_id(
- self.identity_sdk_client.find_user,
- name_or_id=self.user.id,
- validate_actor_existence=True,
- )
- self.assertEqual(self.user.id, result)
-
- def test_find_sdk_id_no_validate(self):
- self.identity_sdk_client.find_user.side_effect = [self.user]
-
- result = role._find_sdk_id(
- self.identity_sdk_client.find_user,
- name_or_id=self.user.id,
- validate_actor_existence=False,
- )
- self.assertEqual(self.user.id, result)
-
- def test_find_sdk_id_not_found_validate(self):
- self.identity_sdk_client.find_user.side_effect = [
- sdk_exc.ResourceNotFound,
- ]
-
- self.assertRaises(
- exceptions.CommandError,
- role._find_sdk_id,
- self.identity_sdk_client.find_user,
- name_or_id=self.user.id,
- validate_actor_existence=True,
- )
-
- def test_find_sdk_id_not_found_no_validate(self):
- self.identity_sdk_client.find_user.side_effect = [
- sdk_exc.ResourceNotFound,
- ]
-
- result = role._find_sdk_id(
- self.identity_sdk_client.find_user,
- name_or_id=self.user.id,
- validate_actor_existence=False,
- )
- self.assertEqual(self.user.id, result)
-
- def test_find_sdk_id_forbidden_validate(self):
- self.identity_sdk_client.find_user.side_effect = [
- sdk_exc.ForbiddenException,
- ]
-
- result = role._find_sdk_id(
- self.identity_sdk_client.find_user,
- name_or_id=self.user.id,
- validate_actor_existence=True,
- )
-
- self.assertEqual(self.user.id, result)
-
- def test_find_sdk_id_forbidden_no_validate(self):
- self.identity_sdk_client.find_user.side_effect = [
- sdk_exc.ForbiddenException,
- ]
-
- result = role._find_sdk_id(
- self.identity_sdk_client.find_user,
- name_or_id=self.user.id,
- validate_actor_existence=False,
- )
-
- self.assertEqual(self.user.id, result)
-
-
class TestRoleAdd(identity_fakes.TestIdentityv3):
def _is_inheritance_testcase(self):
return False
diff --git a/openstackclient/tests/unit/identity/v3/test_user.py b/openstackclient/tests/unit/identity/v3/test_user.py
index 1236b86..134ba5a 100644
--- a/openstackclient/tests/unit/identity/v3/test_user.py
+++ b/openstackclient/tests/unit/identity/v3/test_user.py
@@ -94,7 +94,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
kwargs = {
'name': self.user.name,
'is_enabled': True,
- 'password': None,
}
self.identity_sdk_client.create_user.assert_called_with(**kwargs)
@@ -138,7 +137,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
self.user.name,
]
verifylist = [
- ('password', None),
('password_prompt', True),
('enable', False),
('disable', False),
@@ -171,7 +169,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
self.user.name,
]
verifylist = [
- ('password', None),
('password_prompt', True),
('enable', False),
('disable', False),
@@ -236,7 +233,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
'name': self.user.name,
'email': 'barney@example.com',
'is_enabled': True,
- 'password': None,
}
self.identity_sdk_client.create_user.assert_called_with(**kwargs)
@@ -267,7 +263,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
'name': self.user.name,
'default_project_id': self.project.id,
'is_enabled': True,
- 'password': None,
}
self.identity_sdk_client.create_user.assert_called_with(**kwargs)
@@ -312,7 +307,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
'name': self.user.name,
'default_project_id': self.project.id,
'is_enabled': True,
- 'password': None,
}
self.identity_sdk_client.create_user.assert_called_once_with(**kwargs)
self.identity_sdk_client.find_domain.assert_called_once_with(
@@ -357,7 +351,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
'name': self.user.name,
'domain_id': self.domain.id,
'is_enabled': True,
- 'password': None,
}
self.identity_sdk_client.create_user.assert_called_with(**kwargs)
@@ -385,7 +378,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
kwargs = {
'name': self.user.name,
'is_enabled': True,
- 'password': None,
}
self.identity_sdk_client.create_user.assert_called_with(**kwargs)
@@ -413,7 +405,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
kwargs = {
'name': self.user.name,
'is_enabled': False,
- 'password': None,
}
self.identity_sdk_client.create_user.assert_called_with(**kwargs)
@@ -443,7 +434,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
'name': self.user.name,
'is_enabled': True,
'options': {'ignore_lockout_failure_attempts': True},
- 'password': None,
}
self.identity_sdk_client.create_user.assert_called_with(**kwargs)
@@ -473,7 +463,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
'name': self.user.name,
'is_enabled': True,
'options': {'ignore_lockout_failure_attempts': False},
- 'password': None,
}
self.identity_sdk_client.create_user.assert_called_with(**kwargs)
@@ -503,7 +492,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
'name': self.user.name,
'is_enabled': True,
'options': {'ignore_password_expiry': True},
- 'password': None,
}
self.identity_sdk_client.create_user.assert_called_with(**kwargs)
@@ -533,7 +521,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
'name': self.user.name,
'is_enabled': True,
'options': {'ignore_password_expiry': False},
- 'password': None,
}
self.identity_sdk_client.create_user.assert_called_with(**kwargs)
@@ -563,7 +550,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
'name': self.user.name,
'is_enabled': True,
'options': {'ignore_change_password_upon_first_use': True},
- 'password': None,
}
self.identity_sdk_client.create_user.assert_called_with(**kwargs)
@@ -593,7 +579,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
'name': self.user.name,
'is_enabled': True,
'options': {'ignore_change_password_upon_first_use': False},
- 'password': None,
}
self.identity_sdk_client.create_user.assert_called_with(**kwargs)
@@ -623,7 +608,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
'name': self.user.name,
'is_enabled': True,
'options': {'lock_password': True},
- 'password': None,
}
self.identity_sdk_client.create_user.assert_called_with(**kwargs)
@@ -653,7 +637,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
'name': self.user.name,
'is_enabled': True,
'options': {'lock_password': False},
- 'password': None,
}
self.identity_sdk_client.create_user.assert_called_with(**kwargs)
@@ -683,7 +666,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
'name': self.user.name,
'is_enabled': True,
'options': {'multi_factor_auth_enabled': True},
- 'password': None,
}
self.identity_sdk_client.create_user.assert_called_with(**kwargs)
@@ -713,7 +695,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
'name': self.user.name,
'is_enabled': True,
'options': {'multi_factor_auth_enabled': False},
- 'password': None,
}
self.identity_sdk_client.create_user.assert_called_with(**kwargs)
@@ -730,7 +711,7 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
]
verifylist = [
(
- 'multi_factor_auth_rule',
+ 'multi_factor_auth_rules',
[identity_fakes.mfa_opt1, identity_fakes.mfa_opt2],
),
('enable', False),
@@ -751,7 +732,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
'options': {
'multi_factor_auth_rules': [["password", "totp"], ["password"]]
},
- 'password': None,
}
self.identity_sdk_client.create_user.assert_called_with(**kwargs)
@@ -769,7 +749,7 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
verifylist = [
('ignore_password_expiry', True),
('disable_multi_factor_auth', True),
- ('multi_factor_auth_rule', [identity_fakes.mfa_opt1]),
+ ('multi_factor_auth_rules', [identity_fakes.mfa_opt1]),
('enable', False),
('disable', False),
('name', self.user.name),
@@ -790,7 +770,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
'multi_factor_auth_enabled': False,
'multi_factor_auth_rules': [["password", "totp"]],
},
- 'password': None,
}
self.identity_sdk_client.create_user.assert_called_with(**kwargs)
@@ -891,7 +870,7 @@ class TestUserList(identity_fakes.TestIdentityv3):
self.identity_sdk_client.find_domain.return_value = self.domain
self.identity_sdk_client.find_group.return_value = self.group
self.identity_sdk_client.find_project.return_value = self.project
- self.identity_sdk_client.role_assignments_filter.return_value = [
+ self.identity_sdk_client.role_assignments.return_value = [
self.role_assignment
]
@@ -1029,12 +1008,10 @@ class TestUserList(identity_fakes.TestIdentityv3):
columns, data = self.cmd.take_action(parsed_args)
kwargs = {
- 'project': self.project.id,
+ 'scope_project_id': self.project.id,
}
- self.identity_sdk_client.role_assignments_filter.assert_called_with(
- **kwargs
- )
+ self.identity_sdk_client.role_assignments.assert_called_with(**kwargs)
self.assertEqual(self.columns, columns)
self.assertEqual(self.datalist, tuple(data))
@@ -1086,7 +1063,6 @@ class TestUserSet(identity_fakes.TestIdentityv3):
]
verifylist = [
('name', None),
- ('password', None),
('email', None),
('project', None),
('enable', False),
@@ -1107,7 +1083,6 @@ class TestUserSet(identity_fakes.TestIdentityv3):
]
verifylist = [
('name', 'qwerty'),
- ('password', None),
('email', None),
('project', None),
('enable', False),
@@ -1138,7 +1113,6 @@ class TestUserSet(identity_fakes.TestIdentityv3):
]
verifylist = [
('name', 'qwerty'),
- ('password', None),
('domain', self.domain.id),
('email', None),
('project', None),
@@ -1194,7 +1168,6 @@ class TestUserSet(identity_fakes.TestIdentityv3):
]
verifylist = [
('name', None),
- ('password', None),
('password_prompt', True),
('email', None),
('project', None),
@@ -1227,7 +1200,6 @@ class TestUserSet(identity_fakes.TestIdentityv3):
]
verifylist = [
('name', None),
- ('password', None),
('email', 'barney@example.com'),
('project', None),
('enable', False),
@@ -1256,7 +1228,6 @@ class TestUserSet(identity_fakes.TestIdentityv3):
]
verifylist = [
('name', None),
- ('password', None),
('email', None),
('project', self.project.id),
('enable', False),
@@ -1298,7 +1269,6 @@ class TestUserSet(identity_fakes.TestIdentityv3):
]
verifylist = [
('name', None),
- ('password', None),
('email', None),
('project', self.project.id),
('project_domain', self.project.domain_id),
@@ -1332,7 +1302,6 @@ class TestUserSet(identity_fakes.TestIdentityv3):
]
verifylist = [
('name', None),
- ('password', None),
('email', None),
('project', None),
('enable', True),
@@ -1359,7 +1328,6 @@ class TestUserSet(identity_fakes.TestIdentityv3):
]
verifylist = [
('name', None),
- ('password', None),
('email', None),
('project', None),
('enable', False),
@@ -1386,7 +1354,6 @@ class TestUserSet(identity_fakes.TestIdentityv3):
]
verifylist = [
('name', None),
- ('password', None),
('email', None),
('ignore_lockout_failure_attempts', True),
('project', None),
@@ -1414,7 +1381,6 @@ class TestUserSet(identity_fakes.TestIdentityv3):
]
verifylist = [
('name', None),
- ('password', None),
('email', None),
('no_ignore_lockout_failure_attempts', True),
('project', None),
@@ -1442,7 +1408,6 @@ class TestUserSet(identity_fakes.TestIdentityv3):
]
verifylist = [
('name', None),
- ('password', None),
('email', None),
('ignore_password_expiry', True),
('project', None),
@@ -1470,7 +1435,6 @@ class TestUserSet(identity_fakes.TestIdentityv3):
]
verifylist = [
('name', None),
- ('password', None),
('email', None),
('no_ignore_password_expiry', True),
('project', None),
@@ -1498,7 +1462,6 @@ class TestUserSet(identity_fakes.TestIdentityv3):
]
verifylist = [
('name', None),
- ('password', None),
('email', None),
('ignore_change_password_upon_first_use', True),
('project', None),
@@ -1526,7 +1489,6 @@ class TestUserSet(identity_fakes.TestIdentityv3):
]
verifylist = [
('name', None),
- ('password', None),
('email', None),
('no_ignore_change_password_upon_first_use', True),
('project', None),
@@ -1554,7 +1516,6 @@ class TestUserSet(identity_fakes.TestIdentityv3):
]
verifylist = [
('name', None),
- ('password', None),
('email', None),
('enable_lock_password', True),
('project', None),
@@ -1582,7 +1543,6 @@ class TestUserSet(identity_fakes.TestIdentityv3):
]
verifylist = [
('name', None),
- ('password', None),
('email', None),
('disable_lock_password', True),
('project', None),
@@ -1610,7 +1570,6 @@ class TestUserSet(identity_fakes.TestIdentityv3):
]
verifylist = [
('name', None),
- ('password', None),
('email', None),
('enable_multi_factor_auth', True),
('project', None),
@@ -1638,7 +1597,6 @@ class TestUserSet(identity_fakes.TestIdentityv3):
]
verifylist = [
('name', None),
- ('password', None),
('email', None),
('disable_multi_factor_auth', True),
('project', None),
@@ -1667,9 +1625,8 @@ class TestUserSet(identity_fakes.TestIdentityv3):
]
verifylist = [
('name', None),
- ('password', None),
('email', None),
- ('multi_factor_auth_rule', [identity_fakes.mfa_opt1]),
+ ('multi_factor_auth_rules', [identity_fakes.mfa_opt1]),
('project', None),
('enable', False),
('disable', False),
@@ -1699,11 +1656,10 @@ class TestUserSet(identity_fakes.TestIdentityv3):
]
verifylist = [
('name', None),
- ('password', None),
('email', None),
('ignore_password_expiry', True),
('enable_multi_factor_auth', True),
- ('multi_factor_auth_rule', [identity_fakes.mfa_opt1]),
+ ('multi_factor_auth_rules', [identity_fakes.mfa_opt1]),
('project', None),
('enable', False),
('disable', False),
diff --git a/openstackclient/tests/unit/image/v2/test_image.py b/openstackclient/tests/unit/image/v2/test_image.py
index 7eb7331..c9a273b 100644
--- a/openstackclient/tests/unit/image/v2/test_image.py
+++ b/openstackclient/tests/unit/image/v2/test_image.py
@@ -1295,6 +1295,117 @@ class TestImageSet(TestImage):
# the 'update membership' route.
self.image_client.update_image.assert_called_with(self._image.id)
+ def test_image_set_membership_accept_with_project_no_owner_change(self):
+ """Test that --project with --accept doesn't change image owner."""
+ membership = image_fakes.create_one_image_member(
+ attrs={
+ 'image_id': '0f41529e-7c12-4de8-be2d-181abb825b3c',
+ 'member_id': self.project.id,
+ }
+ )
+ self.image_client.update_member.return_value = membership
+
+ arglist = [
+ '--project',
+ self.project.name,
+ '--accept',
+ self._image.id,
+ ]
+ verifylist = [
+ ('project', self.project.name),
+ ('membership', 'accepted'),
+ ('image', self._image.id),
+ ]
+
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+ self.cmd.take_action(parsed_args)
+
+ self.image_client.update_member.assert_called_once_with(
+ image=self._image.id,
+ member=self.project.id,
+ status='accepted',
+ )
+
+ self.image_client.update_image.assert_called()
+ call_args = self.image_client.update_image.call_args
+ if call_args:
+ args, kwargs = call_args
+ self.assertNotIn('owner_id', kwargs)
+
+ def test_image_set_membership_reject_with_project_no_owner_change(self):
+ """Test that --project with --reject doesn't change image owner."""
+ membership = image_fakes.create_one_image_member(
+ attrs={
+ 'image_id': '0f41529e-7c12-4de8-be2d-181abb825b3c',
+ 'member_id': self.project.id,
+ }
+ )
+ self.image_client.update_member.return_value = membership
+
+ arglist = [
+ '--project',
+ self.project.name,
+ '--reject',
+ self._image.id,
+ ]
+ verifylist = [
+ ('project', self.project.name),
+ ('membership', 'rejected'),
+ ('image', self._image.id),
+ ]
+
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+ self.cmd.take_action(parsed_args)
+
+ self.image_client.update_member.assert_called_once_with(
+ image=self._image.id,
+ member=self.project.id,
+ status='rejected',
+ )
+
+ self.image_client.update_image.assert_called()
+ call_args = self.image_client.update_image.call_args
+ if call_args:
+ args, kwargs = call_args
+ self.assertNotIn('owner_id', kwargs)
+
+ def test_image_set_membership_pending_with_project_no_owner_change(self):
+ """Test that --project with --pending doesn't change image owner."""
+ membership = image_fakes.create_one_image_member(
+ attrs={
+ 'image_id': '0f41529e-7c12-4de8-be2d-181abb825b3c',
+ 'member_id': self.project.id,
+ }
+ )
+ self.image_client.update_member.return_value = membership
+
+ arglist = [
+ '--project',
+ self.project.name,
+ '--pending',
+ self._image.id,
+ ]
+ verifylist = [
+ ('project', self.project.name),
+ ('membership', 'pending'),
+ ('image', self._image.id),
+ ]
+
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+ self.cmd.take_action(parsed_args)
+
+ self.image_client.update_member.assert_called_once_with(
+ image=self._image.id,
+ member=self.project.id,
+ status='pending',
+ )
+
+ self.image_client.update_image.assert_called()
+ call_args = self.image_client.update_image.call_args
+ if call_args:
+ args, kwargs = call_args
+ self.assertNotIn('owner_id', kwargs)
+
def test_image_set_options(self):
arglist = [
'--name',
@@ -1974,7 +2085,7 @@ class TestImageImport(TestImage):
remote_image_id=None,
remote_service_interface=None,
stores=None,
- all_stores=None,
+ all_stores=False,
all_stores_must_succeed=False,
)
@@ -2004,7 +2115,7 @@ class TestImageImport(TestImage):
remote_image_id=None,
remote_service_interface=None,
stores=None,
- all_stores=None,
+ all_stores=False,
all_stores_must_succeed=False,
)
@@ -2142,7 +2253,7 @@ class TestImageImport(TestImage):
remote_image_id=None,
remote_service_interface=None,
stores=['fast'],
- all_stores=None,
+ all_stores=False,
all_stores_must_succeed=False,
)
@@ -2174,7 +2285,7 @@ class TestImageImport(TestImage):
remote_image_id=None,
remote_service_interface=None,
stores=['fast'],
- all_stores=None,
+ all_stores=False,
all_stores_must_succeed=True,
)
@@ -2209,7 +2320,7 @@ class TestImageImport(TestImage):
remote_image_id='remote-image-id',
remote_service_interface='private',
stores=None,
- all_stores=None,
+ all_stores=False,
all_stores_must_succeed=False,
)
diff --git a/openstackclient/tests/unit/network/test_common.py b/openstackclient/tests/unit/network/test_common.py
index c1ad9b2..cc84c8b 100644
--- a/openstackclient/tests/unit/network/test_common.py
+++ b/openstackclient/tests/unit/network/test_common.py
@@ -126,17 +126,13 @@ class TestNetworkAndCompute(utils.TestCommand):
# Create client mocks. Note that we intentionally do not use specced
# mocks since we want to test fake methods.
- self.app.client_manager.network = mock.Mock()
- self.network_client = self.app.client_manager.network
- self.network_client.network_action = mock.Mock(
- return_value='take_action_network'
- )
+ self.app.client_manager.network = mock.Mock() # noqa: O401
+ self.network_client = self.app.client_manager.network # noqa: O401
+ self.network_client.network_action.return_value = 'take_action_network'
- self.app.client_manager.compute = mock.Mock()
- self.compute_client = self.app.client_manager.compute
- self.compute_client.compute_action = mock.Mock(
- return_value='take_action_compute'
- )
+ self.app.client_manager.compute = mock.Mock() # noqa: O401
+ self.compute_client = self.app.client_manager.compute # noqa: O401
+ self.compute_client.compute_action.return_value = 'take_action_compute'
self.cmd = FakeNetworkAndComputeCommand(self.app, None)
@@ -205,9 +201,9 @@ class TestNeutronCommandWithExtraArgs(utils.TestCommand):
# Create client mocks. Note that we intentionally do not use specced
# mocks since we want to test fake methods.
- self.app.client_manager.network = mock.Mock()
- self.network_client = self.app.client_manager.network
- self.network_client.test_create_action = mock.Mock()
+ self.app.client_manager.network = mock.Mock() # noqa: O401
+ self.network_client = self.app.client_manager.network # noqa: O401
+ self.network_client.test_create_action = mock.Mock() # noqa: O402
# Subclasses can override the command object to test.
self.cmd = FakeCreateNeutronCommandWithExtraArgs(self.app, None)
diff --git a/openstackclient/tests/unit/network/v2/taas/__init__.py b/openstackclient/tests/unit/network/v2/taas/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/openstackclient/tests/unit/network/v2/taas/__init__.py
diff --git a/openstackclient/tests/unit/network/v2/taas/test_osc_tap_flow.py b/openstackclient/tests/unit/network/v2/taas/test_osc_tap_flow.py
new file mode 100644
index 0000000..8e4f185
--- /dev/null
+++ b/openstackclient/tests/unit/network/v2/taas/test_osc_tap_flow.py
@@ -0,0 +1,276 @@
+# All Rights Reserved 2020
+#
+# 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.
+
+import copy
+import operator
+import uuid
+
+from openstack.network.v2 import tap_flow as _tap_flow
+from openstack.network.v2 import tap_service as _tap_service
+from openstack.test import fakes as sdk_fakes
+from osc_lib import utils as osc_utils
+from osc_lib.utils import columns as column_util
+
+from openstackclient.network.v2.taas import tap_flow as osc_tap_flow
+from openstackclient.network.v2.taas import tap_service as osc_tap_service
+from openstackclient.tests.unit.network.v2 import fakes as network_fakes
+
+
+columns_long = tuple(
+ col
+ for col, _, listing_mode in osc_tap_flow._attr_map
+ if listing_mode in (column_util.LIST_BOTH, column_util.LIST_LONG_ONLY)
+)
+headers_long = tuple(
+ head
+ for _, head, listing_mode in osc_tap_flow._attr_map
+ if listing_mode in (column_util.LIST_BOTH, column_util.LIST_LONG_ONLY)
+)
+sorted_attr_map = sorted(osc_tap_flow._attr_map, key=operator.itemgetter(1))
+sorted_columns = tuple(col for col, _, _ in sorted_attr_map)
+sorted_headers = tuple(head for _, head, _ in sorted_attr_map)
+
+
+def _get_data(attrs, columns=sorted_columns):
+ return osc_utils.get_dict_properties(attrs, columns)
+
+
+class TestCreateTapFlow(network_fakes.TestNetworkV2):
+ columns = (
+ 'description',
+ 'direction',
+ 'id',
+ 'name',
+ 'project_id',
+ 'source_port',
+ 'status',
+ 'tap_service_id',
+ )
+
+ def setUp(self):
+ super().setUp()
+ self.cmd = osc_tap_flow.CreateTapFlow(self.app, None)
+
+ def test_create_tap_flow(self):
+ """Test Create Tap Flow."""
+ fake_tap_service = sdk_fakes.generate_fake_resource(
+ _tap_service.TapService
+ )
+ port_id = str(uuid.uuid4())
+ fake_port = network_fakes.create_one_port(attrs={'id': port_id})
+ fake_tap_flow = sdk_fakes.generate_fake_resource(
+ _tap_flow.TapFlow,
+ **{
+ 'source_port': port_id,
+ 'tap_service_id': fake_tap_service['id'],
+ 'direction': 'BOTH',
+ },
+ )
+ self.app.client_manager.network.create_tap_flow.return_value = (
+ fake_tap_flow
+ )
+ self.app.client_manager.network.find_port.return_value = fake_port
+ self.app.client_manager.network.find_tap_service.return_value = (
+ fake_tap_service
+ )
+ arg_list = [
+ '--name',
+ fake_tap_flow['name'],
+ '--port',
+ fake_tap_flow['source_port'],
+ '--tap-service',
+ fake_tap_flow['tap_service_id'],
+ '--direction',
+ fake_tap_flow['direction'],
+ ]
+
+ verify_list = [
+ ('name', fake_tap_flow['name']),
+ ('port', fake_tap_flow['source_port']),
+ ('tap_service', fake_tap_flow['tap_service_id']),
+ ]
+
+ parsed_args = self.check_parser(self.cmd, arg_list, verify_list)
+ columns, data = self.cmd.take_action(parsed_args)
+ mock_create_t_f = self.app.client_manager.network.create_tap_flow
+ mock_create_t_f.assert_called_once_with(
+ **{
+ 'name': fake_tap_flow['name'],
+ 'source_port': fake_tap_flow['source_port'],
+ 'tap_service_id': fake_tap_flow['tap_service_id'],
+ 'direction': fake_tap_flow['direction'],
+ }
+ )
+ self.assertEqual(self.columns, columns)
+ fake_data = _get_data(
+ fake_tap_flow, osc_tap_service._get_columns(fake_tap_flow)[1]
+ )
+ self.assertEqual(fake_data, data)
+
+
+class TestListTapFlow(network_fakes.TestNetworkV2):
+ def setUp(self):
+ super().setUp()
+ self.cmd = osc_tap_flow.ListTapFlow(self.app, None)
+
+ def test_list_tap_flows(self):
+ """Test List Tap Flow."""
+ fake_tap_flows = list(
+ sdk_fakes.generate_fake_resources(_tap_flow.TapFlow, count=2)
+ )
+ self.app.client_manager.network.tap_flows.return_value = fake_tap_flows
+ arg_list = []
+ verify_list = []
+
+ parsed_args = self.check_parser(self.cmd, arg_list, verify_list)
+
+ headers, data = self.cmd.take_action(parsed_args)
+
+ self.app.client_manager.network.tap_flows.assert_called_once()
+ self.assertEqual(headers, list(headers_long))
+ self.assertCountEqual(
+ list(data),
+ [
+ _get_data(fake_tap_flow, columns_long)
+ for fake_tap_flow in fake_tap_flows
+ ],
+ )
+
+
+class TestDeleteTapFlow(network_fakes.TestNetworkV2):
+ def setUp(self):
+ super().setUp()
+ self.app.client_manager.network.find_tap_flow.side_effect = (
+ lambda name_or_id, ignore_missing: _tap_flow.TapFlow(id=name_or_id)
+ )
+ self.cmd = osc_tap_flow.DeleteTapFlow(self.app, None)
+
+ def test_delete_tap_flow(self):
+ """Test Delete tap flow."""
+
+ fake_tap_flow = sdk_fakes.generate_fake_resource(_tap_flow.TapFlow)
+ arg_list = [
+ fake_tap_flow['id'],
+ ]
+ verify_list = [
+ (osc_tap_flow.TAP_FLOW, [fake_tap_flow['id']]),
+ ]
+
+ parsed_args = self.check_parser(self.cmd, arg_list, verify_list)
+
+ result = self.cmd.take_action(parsed_args)
+
+ mock_delete_tap_flow = self.app.client_manager.network.delete_tap_flow
+ mock_delete_tap_flow.assert_called_once_with(fake_tap_flow['id'])
+ self.assertIsNone(result)
+
+
+class TestShowTapFlow(network_fakes.TestNetworkV2):
+ columns = (
+ 'description',
+ 'direction',
+ 'id',
+ 'name',
+ 'project_id',
+ 'source_port',
+ 'status',
+ 'tap_service_id',
+ )
+
+ def setUp(self):
+ super().setUp()
+ self.app.client_manager.network.find_tap_flow.side_effect = (
+ lambda name_or_id, ignore_missing: _tap_flow.TapFlow(id=name_or_id)
+ )
+ self.cmd = osc_tap_flow.ShowTapFlow(self.app, None)
+
+ def test_show_tap_flow(self):
+ """Test Show tap flow."""
+ fake_tap_flow = sdk_fakes.generate_fake_resource(_tap_flow.TapFlow)
+ self.app.client_manager.network.get_tap_flow.return_value = (
+ fake_tap_flow
+ )
+ arg_list = [
+ fake_tap_flow['id'],
+ ]
+ verify_list = [
+ (osc_tap_flow.TAP_FLOW, fake_tap_flow['id']),
+ ]
+
+ parsed_args = self.check_parser(self.cmd, arg_list, verify_list)
+
+ headers, data = self.cmd.take_action(parsed_args)
+
+ self.app.client_manager.network.get_tap_flow.assert_called_once_with(
+ fake_tap_flow['id']
+ )
+ self.assertEqual(self.columns, headers)
+ fake_data = _get_data(
+ fake_tap_flow, osc_tap_service._get_columns(fake_tap_flow)[1]
+ )
+ self.assertEqual(fake_data, data)
+
+
+class TestUpdateTapFlow(network_fakes.TestNetworkV2):
+ _new_name = 'new_name'
+
+ # NOTE(mtomaska): The Resource class from which TapFlow inherits from
+ # returns duplicate `ID and `Name` keys.
+ columns = (
+ 'Direction',
+ 'ID',
+ 'ID',
+ 'Name',
+ 'Name',
+ 'Status',
+ 'Tenant',
+ 'description',
+ 'location',
+ 'project_id',
+ 'source_port',
+ 'tap_service_id',
+ )
+
+ def setUp(self):
+ super().setUp()
+ self.cmd = osc_tap_flow.UpdateTapFlow(self.app, None)
+ self.app.client_manager.network.find_tap_flow.side_effect = (
+ lambda name_or_id, ignore_missing: _tap_flow.TapFlow(id=name_or_id)
+ )
+
+ def test_update_tap_flow(self):
+ """Test update tap service"""
+ fake_tap_flow = sdk_fakes.generate_fake_resource(_tap_flow.TapFlow)
+ new_tap_flow = copy.deepcopy(fake_tap_flow)
+ new_tap_flow['name'] = self._new_name
+
+ self.app.client_manager.network.update_tap_flow.return_value = (
+ new_tap_flow
+ )
+
+ arg_list = [
+ fake_tap_flow['id'],
+ '--name',
+ self._new_name,
+ ]
+ verify_list = [('name', self._new_name)]
+
+ parsed_args = self.check_parser(self.cmd, arg_list, verify_list)
+ columns, data = self.cmd.take_action(parsed_args)
+ attrs = {'name': self._new_name}
+
+ mock_update_t_f = self.app.client_manager.network.update_tap_flow
+ mock_update_t_f.assert_called_once_with(new_tap_flow['id'], **attrs)
+ self.assertEqual(self.columns, columns)
+ self.assertEqual(_get_data(new_tap_flow, self.columns), data)
diff --git a/openstackclient/tests/unit/network/v2/taas/test_osc_tap_mirror.py b/openstackclient/tests/unit/network/v2/taas/test_osc_tap_mirror.py
new file mode 100644
index 0000000..10f3251
--- /dev/null
+++ b/openstackclient/tests/unit/network/v2/taas/test_osc_tap_mirror.py
@@ -0,0 +1,288 @@
+# 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.
+
+import copy
+import operator
+import uuid
+
+from openstack.network.v2 import tap_mirror
+from openstack.test import fakes as sdk_fakes
+from osc_lib import utils as osc_utils
+from osc_lib.utils import columns as column_util
+
+from openstackclient.network.v2.taas import tap_mirror as osc_tap_mirror
+from openstackclient.tests.unit.network.v2 import fakes as network_fakes
+
+
+columns_long = tuple(
+ col
+ for col, _, listing_mode in osc_tap_mirror._attr_map
+ if listing_mode in (column_util.LIST_BOTH, column_util.LIST_LONG_ONLY)
+)
+headers_long = tuple(
+ head
+ for _, head, listing_mode in osc_tap_mirror._attr_map
+ if listing_mode in (column_util.LIST_BOTH, column_util.LIST_LONG_ONLY)
+)
+sorted_attr_map = sorted(osc_tap_mirror._attr_map, key=operator.itemgetter(1))
+sorted_columns = tuple(col for col, _, _ in sorted_attr_map)
+sorted_headers = tuple(head for _, head, _ in sorted_attr_map)
+
+
+def _get_data(attrs, columns=sorted_columns):
+ return osc_utils.get_dict_properties(attrs, columns)
+
+
+class TestCreateTapMirror(network_fakes.TestNetworkV2):
+ columns = (
+ 'description',
+ 'directions',
+ 'id',
+ 'mirror_type',
+ 'name',
+ 'port_id',
+ 'project_id',
+ 'remote_ip',
+ )
+
+ def setUp(self):
+ super().setUp()
+ self.cmd = osc_tap_mirror.CreateTapMirror(self.app, None)
+
+ def test_create_tap_mirror(self):
+ port_id = str(uuid.uuid4())
+ fake_port = network_fakes.create_one_port(attrs={'id': port_id})
+ fake_tap_mirror = sdk_fakes.generate_fake_resource(
+ tap_mirror.TapMirror, **{'port_id': port_id, 'directions': 'IN=99'}
+ )
+ self.app.client_manager.network.create_tap_mirror.return_value = (
+ fake_tap_mirror
+ )
+ self.app.client_manager.network.find_port.return_value = fake_port
+ self.app.client_manager.network.find_tap_mirror.side_effect = (
+ lambda _, name_or_id: {'id': name_or_id}
+ )
+ arg_list = [
+ '--name',
+ fake_tap_mirror['name'],
+ '--port',
+ fake_tap_mirror['port_id'],
+ '--directions',
+ fake_tap_mirror['directions'],
+ '--remote-ip',
+ fake_tap_mirror['remote_ip'],
+ '--mirror-type',
+ fake_tap_mirror['mirror_type'],
+ ]
+
+ verify_directions = fake_tap_mirror['directions'].split('=')
+ verify_directions_dict = {verify_directions[0]: verify_directions[1]}
+
+ verify_list = [
+ ('name', fake_tap_mirror['name']),
+ ('port_id', fake_tap_mirror['port_id']),
+ ('directions', verify_directions_dict),
+ ('remote_ip', fake_tap_mirror['remote_ip']),
+ ('mirror_type', fake_tap_mirror['mirror_type']),
+ ]
+
+ parsed_args = self.check_parser(self.cmd, arg_list, verify_list)
+ self.app.client_manager.network.find_tap_mirror.return_value = (
+ fake_tap_mirror
+ )
+
+ columns, data = self.cmd.take_action(parsed_args)
+ create_tap_m_mock = self.app.client_manager.network.create_tap_mirror
+ create_tap_m_mock.assert_called_once_with(
+ **{
+ 'name': fake_tap_mirror['name'],
+ 'port_id': fake_tap_mirror['port_id'],
+ 'directions': verify_directions_dict,
+ 'remote_ip': fake_tap_mirror['remote_ip'],
+ 'mirror_type': fake_tap_mirror['mirror_type'],
+ }
+ )
+ self.assertEqual(self.columns, columns)
+ fake_data = _get_data(
+ fake_tap_mirror, osc_tap_mirror._get_columns(fake_tap_mirror)[1]
+ )
+ self.assertEqual(fake_data, data)
+
+
+class TestListTapMirror(network_fakes.TestNetworkV2):
+ def setUp(self):
+ super().setUp()
+ self.cmd = osc_tap_mirror.ListTapMirror(self.app, None)
+
+ def test_list_tap_mirror(self):
+ """Test List Tap Mirror."""
+ fake_tap_mirrors = list(
+ sdk_fakes.generate_fake_resources(tap_mirror.TapMirror, count=4)
+ )
+ self.app.client_manager.network.tap_mirrors.return_value = (
+ fake_tap_mirrors
+ )
+
+ arg_list = []
+ verify_list = []
+
+ parsed_args = self.check_parser(self.cmd, arg_list, verify_list)
+
+ headers, data = self.cmd.take_action(parsed_args)
+
+ self.app.client_manager.network.tap_mirrors.assert_called_once()
+ self.assertEqual(headers, list(headers_long))
+ self.assertCountEqual(
+ list(data),
+ [
+ _get_data(fake_tap_mirror, columns_long)
+ for fake_tap_mirror in fake_tap_mirrors
+ ],
+ )
+
+
+class TestDeleteTapMirror(network_fakes.TestNetworkV2):
+ def setUp(self):
+ super().setUp()
+ self.app.client_manager.network.find_tap_mirror.side_effect = (
+ lambda name_or_id, ignore_missing: tap_mirror.TapMirror(
+ id=name_or_id
+ )
+ )
+ self.cmd = osc_tap_mirror.DeleteTapMirror(self.app, None)
+
+ def test_delete_tap_mirror(self):
+ """Test Delete Tap Mirror."""
+
+ fake_tap_mirror = sdk_fakes.generate_fake_resource(
+ tap_mirror.TapMirror
+ )
+
+ arg_list = [
+ fake_tap_mirror['id'],
+ ]
+ verify_list = [
+ (osc_tap_mirror.TAP_MIRROR, [fake_tap_mirror['id']]),
+ ]
+
+ parsed_args = self.check_parser(self.cmd, arg_list, verify_list)
+ result = self.cmd.take_action(parsed_args)
+
+ mock_delete_tap_m = self.app.client_manager.network.delete_tap_mirror
+ mock_delete_tap_m.assert_called_once_with(fake_tap_mirror['id'])
+ self.assertIsNone(result)
+
+
+class TestShowTapMirror(network_fakes.TestNetworkV2):
+ columns = (
+ 'description',
+ 'directions',
+ 'id',
+ 'mirror_type',
+ 'name',
+ 'port_id',
+ 'project_id',
+ 'remote_ip',
+ )
+
+ def setUp(self):
+ super().setUp()
+ self.app.client_manager.network.find_tap_mirror.side_effect = (
+ lambda name_or_id, ignore_missing: tap_mirror.TapMirror(
+ id=name_or_id
+ )
+ )
+ self.cmd = osc_tap_mirror.ShowTapMirror(self.app, None)
+
+ def test_show_tap_mirror(self):
+ """Test Show Tap Mirror."""
+
+ fake_tap_mirror = sdk_fakes.generate_fake_resource(
+ tap_mirror.TapMirror
+ )
+ self.app.client_manager.network.get_tap_mirror.return_value = (
+ fake_tap_mirror
+ )
+ arg_list = [
+ fake_tap_mirror['id'],
+ ]
+ verify_list = [
+ (osc_tap_mirror.TAP_MIRROR, fake_tap_mirror['id']),
+ ]
+
+ parsed_args = self.check_parser(self.cmd, arg_list, verify_list)
+
+ headers, data = self.cmd.take_action(parsed_args)
+
+ mock_get_tap_m = self.app.client_manager.network.get_tap_mirror
+ mock_get_tap_m.assert_called_once_with(fake_tap_mirror['id'])
+ self.assertEqual(self.columns, headers)
+ fake_data = _get_data(
+ fake_tap_mirror, osc_tap_mirror._get_columns(fake_tap_mirror)[1]
+ )
+ self.assertEqual(fake_data, data)
+
+
+class TestUpdateTapMirror(network_fakes.TestNetworkV2):
+ _new_name = 'new_name'
+ columns = (
+ 'description',
+ 'directions',
+ 'id',
+ 'mirror_type',
+ 'name',
+ 'port_id',
+ 'project_id',
+ 'remote_ip',
+ )
+
+ def setUp(self):
+ super().setUp()
+ self.cmd = osc_tap_mirror.UpdateTapMirror(self.app, None)
+ self.app.client_manager.network.find_tap_mirror.side_effect = (
+ lambda name_or_id, ignore_missing: tap_mirror.TapMirror(
+ id=name_or_id
+ )
+ )
+
+ def test_update_tap_mirror(self):
+ """Test update Tap Mirror"""
+ fake_tap_mirror = sdk_fakes.generate_fake_resource(
+ tap_mirror.TapMirror
+ )
+ new_tap_mirror = copy.deepcopy(fake_tap_mirror)
+ new_tap_mirror['name'] = self._new_name
+
+ self.app.client_manager.network.update_tap_mirror.return_value = (
+ new_tap_mirror
+ )
+
+ arg_list = [
+ fake_tap_mirror['id'],
+ '--name',
+ self._new_name,
+ ]
+ verify_list = [('name', self._new_name)]
+
+ parsed_args = self.check_parser(self.cmd, arg_list, verify_list)
+ columns, data = self.cmd.take_action(parsed_args)
+ attrs = {'name': self._new_name}
+
+ mock_update_tap_m = self.app.client_manager.network.update_tap_mirror
+ mock_update_tap_m.assert_called_once_with(
+ fake_tap_mirror['id'], **attrs
+ )
+ self.assertEqual(self.columns, columns)
+ fake_data = _get_data(
+ new_tap_mirror, osc_tap_mirror._get_columns(new_tap_mirror)[1]
+ )
+ self.assertEqual(fake_data, data)
diff --git a/openstackclient/tests/unit/network/v2/taas/test_osc_tap_service.py b/openstackclient/tests/unit/network/v2/taas/test_osc_tap_service.py
new file mode 100644
index 0000000..fa76689
--- /dev/null
+++ b/openstackclient/tests/unit/network/v2/taas/test_osc_tap_service.py
@@ -0,0 +1,271 @@
+# All Rights Reserved 2020
+#
+# 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.
+
+import copy
+import operator
+import uuid
+
+from openstack.network.v2 import tap_service
+from openstack.test import fakes as sdk_fakes
+from osc_lib import utils as osc_utils
+from osc_lib.utils import columns as column_util
+
+from openstackclient.network.v2.taas import tap_service as osc_tap_service
+from openstackclient.tests.unit.network.v2 import fakes as network_fakes
+
+
+columns_long = tuple(
+ col
+ for col, _, listing_mode in osc_tap_service._attr_map
+ if listing_mode in (column_util.LIST_BOTH, column_util.LIST_LONG_ONLY)
+)
+headers_long = tuple(
+ head
+ for _, head, listing_mode in osc_tap_service._attr_map
+ if listing_mode in (column_util.LIST_BOTH, column_util.LIST_LONG_ONLY)
+)
+sorted_attr_map = sorted(osc_tap_service._attr_map, key=operator.itemgetter(1))
+sorted_columns = tuple(col for col, _, _ in sorted_attr_map)
+sorted_headers = tuple(head for _, head, _ in sorted_attr_map)
+
+
+def _get_data(attrs, columns=sorted_columns):
+ return osc_utils.get_dict_properties(attrs, columns)
+
+
+class TestCreateTapService(network_fakes.TestNetworkV2):
+ columns = (
+ 'description',
+ 'id',
+ 'name',
+ 'port_id',
+ 'project_id',
+ 'status',
+ )
+
+ def setUp(self):
+ super().setUp()
+ self.cmd = osc_tap_service.CreateTapService(self.app, None)
+
+ def test_create_tap_service(self):
+ """Test Create Tap Service."""
+ port_id = str(uuid.uuid4())
+ fake_port = network_fakes.create_one_port(attrs={'id': port_id})
+ fake_tap_service = sdk_fakes.generate_fake_resource(
+ tap_service.TapService, **{'port_id': port_id}
+ )
+ self.app.client_manager.network.create_tap_service.return_value = (
+ fake_tap_service
+ )
+ self.app.client_manager.network.find_port.return_value = fake_port
+ self.app.client_manager.network.find_tap_service.side_effect = (
+ lambda _, name_or_id: {'id': name_or_id}
+ )
+ arg_list = [
+ '--name',
+ fake_tap_service['name'],
+ '--port',
+ fake_tap_service['port_id'],
+ ]
+
+ verify_list = [
+ ('name', fake_tap_service['name']),
+ ('port_id', fake_tap_service['port_id']),
+ ]
+
+ parsed_args = self.check_parser(self.cmd, arg_list, verify_list)
+ self.app.client_manager.network.find_tap_service.return_value = (
+ fake_tap_service
+ )
+
+ columns, data = self.cmd.take_action(parsed_args)
+ create_tap_s_mock = self.app.client_manager.network.create_tap_service
+ create_tap_s_mock.assert_called_once_with(
+ **{
+ 'name': fake_tap_service['name'],
+ 'port_id': fake_tap_service['port_id'],
+ }
+ )
+ self.assertEqual(self.columns, columns)
+ fake_data = _get_data(
+ fake_tap_service, osc_tap_service._get_columns(fake_tap_service)[1]
+ )
+ self.assertEqual(fake_data, data)
+
+
+class TestListTapService(network_fakes.TestNetworkV2):
+ def setUp(self):
+ super().setUp()
+ self.cmd = osc_tap_service.ListTapService(self.app, None)
+
+ def test_list_tap_service(self):
+ """Test List Tap Service."""
+ fake_tap_services = list(
+ sdk_fakes.generate_fake_resources(tap_service.TapService, count=4)
+ )
+ self.app.client_manager.network.tap_services.return_value = (
+ fake_tap_services
+ )
+
+ arg_list = []
+ verify_list = []
+
+ parsed_args = self.check_parser(self.cmd, arg_list, verify_list)
+
+ headers, data = self.cmd.take_action(parsed_args)
+
+ self.app.client_manager.network.tap_services.assert_called_once()
+ self.assertEqual(headers, list(headers_long))
+ self.assertCountEqual(
+ list(data),
+ [
+ _get_data(fake_tap_service, columns_long)
+ for fake_tap_service in fake_tap_services
+ ],
+ )
+
+
+class TestDeleteTapService(network_fakes.TestNetworkV2):
+ def setUp(self):
+ super().setUp()
+ self.app.client_manager.network.find_tap_service.side_effect = (
+ lambda name_or_id, ignore_missing: tap_service.TapService(
+ id=name_or_id
+ )
+ )
+ self.cmd = osc_tap_service.DeleteTapService(self.app, None)
+
+ def test_delete_tap_service(self):
+ """Test Delete tap service."""
+
+ fake_tap_service = sdk_fakes.generate_fake_resource(
+ tap_service.TapService
+ )
+
+ arg_list = [
+ fake_tap_service['id'],
+ ]
+ verify_list = [
+ (osc_tap_service.TAP_SERVICE, [fake_tap_service['id']]),
+ ]
+
+ parsed_args = self.check_parser(self.cmd, arg_list, verify_list)
+ result = self.cmd.take_action(parsed_args)
+
+ mock_delete_tap_s = self.app.client_manager.network.delete_tap_service
+ mock_delete_tap_s.assert_called_once_with(fake_tap_service['id'])
+ self.assertIsNone(result)
+
+
+class TestShowTapService(network_fakes.TestNetworkV2):
+ columns = (
+ 'description',
+ 'id',
+ 'name',
+ 'port_id',
+ 'project_id',
+ 'status',
+ )
+
+ def setUp(self):
+ super().setUp()
+ self.app.client_manager.network.find_tap_service.side_effect = (
+ lambda name_or_id, ignore_missing: tap_service.TapService(
+ id=name_or_id
+ )
+ )
+ self.cmd = osc_tap_service.ShowTapService(self.app, None)
+
+ def test_show_tap_service(self):
+ """Test Show tap service."""
+
+ fake_tap_service = sdk_fakes.generate_fake_resource(
+ tap_service.TapService
+ )
+ self.app.client_manager.network.get_tap_service.return_value = (
+ fake_tap_service
+ )
+ arg_list = [
+ fake_tap_service['id'],
+ ]
+ verify_list = [
+ (osc_tap_service.TAP_SERVICE, fake_tap_service['id']),
+ ]
+
+ parsed_args = self.check_parser(self.cmd, arg_list, verify_list)
+
+ headers, data = self.cmd.take_action(parsed_args)
+
+ mock_get_tap_s = self.app.client_manager.network.get_tap_service
+ mock_get_tap_s.assert_called_once_with(fake_tap_service['id'])
+ self.assertEqual(self.columns, headers)
+ fake_data = _get_data(
+ fake_tap_service, osc_tap_service._get_columns(fake_tap_service)[1]
+ )
+ self.assertEqual(fake_data, data)
+
+
+class TestUpdateTapService(network_fakes.TestNetworkV2):
+ _new_name = 'new_name'
+
+ columns = (
+ 'description',
+ 'id',
+ 'name',
+ 'port_id',
+ 'project_id',
+ 'status',
+ )
+
+ def setUp(self):
+ super().setUp()
+ self.cmd = osc_tap_service.UpdateTapService(self.app, None)
+ self.app.client_manager.network.find_tap_service.side_effect = (
+ lambda name_or_id, ignore_missing: tap_service.TapService(
+ id=name_or_id
+ )
+ )
+
+ def test_update_tap_service(self):
+ """Test update tap service"""
+ fake_tap_service = sdk_fakes.generate_fake_resource(
+ tap_service.TapService
+ )
+ new_tap_service = copy.deepcopy(fake_tap_service)
+ new_tap_service['name'] = self._new_name
+
+ self.app.client_manager.network.update_tap_service.return_value = (
+ new_tap_service
+ )
+
+ arg_list = [
+ fake_tap_service['id'],
+ '--name',
+ self._new_name,
+ ]
+ verify_list = [('name', self._new_name)]
+
+ parsed_args = self.check_parser(self.cmd, arg_list, verify_list)
+ columns, data = self.cmd.take_action(parsed_args)
+ attrs = {'name': self._new_name}
+
+ mock_update_tap_s = self.app.client_manager.network.update_tap_service
+ mock_update_tap_s.assert_called_once_with(
+ fake_tap_service['id'], **attrs
+ )
+ self.assertEqual(self.columns, columns)
+ fake_data = _get_data(
+ new_tap_service, osc_tap_service._get_columns(new_tap_service)[1]
+ )
+ self.assertEqual(fake_data, data)
diff --git a/openstackclient/tests/unit/network/v2/test_address_group.py b/openstackclient/tests/unit/network/v2/test_address_group.py
index 411d199..48f7066 100644
--- a/openstackclient/tests/unit/network/v2/test_address_group.py
+++ b/openstackclient/tests/unit/network/v2/test_address_group.py
@@ -11,7 +11,6 @@
# under the License.
#
-from unittest import mock
from unittest.mock import call
from osc_lib import exceptions
@@ -58,8 +57,8 @@ class TestCreateAddressGroup(TestAddressGroup):
def setUp(self):
super().setUp()
- self.network_client.create_address_group = mock.Mock(
- return_value=self.new_address_group
+ self.network_client.create_address_group.return_value = (
+ self.new_address_group
)
# Get the command object to test
@@ -145,7 +144,7 @@ class TestDeleteAddressGroup(TestAddressGroup):
def setUp(self):
super().setUp()
- self.network_client.delete_address_group = mock.Mock(return_value=None)
+ self.network_client.delete_address_group.return_value = None
self.network_client.find_address_group = (
network_fakes.get_address_groups(
address_groups=self._address_groups
@@ -206,9 +205,7 @@ class TestDeleteAddressGroup(TestAddressGroup):
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
find_mock_result = [self._address_groups[0], exceptions.CommandError]
- self.network_client.find_address_group = mock.Mock(
- side_effect=find_mock_result
- )
+ self.network_client.find_address_group.side_effect = find_mock_result
try:
self.cmd.take_action(parsed_args)
@@ -251,9 +248,7 @@ class TestListAddressGroup(TestAddressGroup):
def setUp(self):
super().setUp()
- self.network_client.address_groups = mock.Mock(
- return_value=self.address_groups
- )
+ self.network_client.address_groups.return_value = self.address_groups
# Get the command object to test
self.cmd = address_group.ListAddressGroup(self.app, None)
@@ -333,13 +328,15 @@ class TestSetAddressGroup(TestAddressGroup):
def setUp(self):
super().setUp()
- self.network_client.update_address_group = mock.Mock(return_value=None)
- self.network_client.find_address_group = mock.Mock(
- return_value=self._address_group
+ self.network_client.update_address_group.return_value = None
+ self.network_client.find_address_group.return_value = (
+ self._address_group
)
- self.network_client.add_addresses_to_address_group = mock.Mock(
- return_value=self._address_group
+
+ self.network_client.add_addresses_to_address_group.return_value = (
+ self._address_group
)
+
# Get the command object to test
self.cmd = address_group.SetAddressGroup(self.app, None)
@@ -442,8 +439,8 @@ class TestShowAddressGroup(TestAddressGroup):
def setUp(self):
super().setUp()
- self.network_client.find_address_group = mock.Mock(
- return_value=self._address_group
+ self.network_client.find_address_group.return_value = (
+ self._address_group
)
# Get the command object to test
@@ -486,12 +483,12 @@ class TestUnsetAddressGroup(TestAddressGroup):
def setUp(self):
super().setUp()
- self.network_client.find_address_group = mock.Mock(
- return_value=self._address_group
- )
- self.network_client.remove_addresses_from_address_group = mock.Mock(
- return_value=self._address_group
+ self.network_client.find_address_group.return_value = (
+ self._address_group
)
+
+ self.network_client.remove_addresses_from_address_group.return_value = self._address_group
+
# Get the command object to test
self.cmd = address_group.UnsetAddressGroup(self.app, None)
diff --git a/openstackclient/tests/unit/network/v2/test_address_scope.py b/openstackclient/tests/unit/network/v2/test_address_scope.py
index c3eb83d..6e2c05e 100644
--- a/openstackclient/tests/unit/network/v2/test_address_scope.py
+++ b/openstackclient/tests/unit/network/v2/test_address_scope.py
@@ -11,7 +11,6 @@
# under the License.
#
-from unittest import mock
from unittest.mock import call
from osc_lib import exceptions
@@ -52,8 +51,8 @@ class TestCreateAddressScope(TestAddressScope):
def setUp(self):
super().setUp()
- self.network_client.create_address_scope = mock.Mock(
- return_value=self.new_address_scope
+ self.network_client.create_address_scope.return_value = (
+ self.new_address_scope
)
# Get the command object to test
@@ -160,7 +159,7 @@ class TestDeleteAddressScope(TestAddressScope):
def setUp(self):
super().setUp()
- self.network_client.delete_address_scope = mock.Mock(return_value=None)
+ self.network_client.delete_address_scope.return_value = None
self.network_client.find_address_scope = (
network_fakes.get_address_scopes(
address_scopes=self._address_scopes
@@ -222,9 +221,7 @@ class TestDeleteAddressScope(TestAddressScope):
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
find_mock_result = [self._address_scopes[0], exceptions.CommandError]
- self.network_client.find_address_scope = mock.Mock(
- side_effect=find_mock_result
- )
+ self.network_client.find_address_scope.side_effect = find_mock_result
try:
self.cmd.take_action(parsed_args)
@@ -267,9 +264,7 @@ class TestListAddressScope(TestAddressScope):
def setUp(self):
super().setUp()
- self.network_client.address_scopes = mock.Mock(
- return_value=self.address_scopes
- )
+ self.network_client.address_scopes.return_value = self.address_scopes
# Get the command object to test
self.cmd = address_scope.ListAddressScope(self.app, None)
@@ -398,9 +393,9 @@ class TestSetAddressScope(TestAddressScope):
def setUp(self):
super().setUp()
- self.network_client.update_address_scope = mock.Mock(return_value=None)
- self.network_client.find_address_scope = mock.Mock(
- return_value=self._address_scope
+ self.network_client.update_address_scope.return_value = None
+ self.network_client.find_address_scope.return_value = (
+ self._address_scope
)
# Get the command object to test
@@ -488,8 +483,8 @@ class TestShowAddressScope(TestAddressScope):
def setUp(self):
super().setUp()
- self.network_client.find_address_scope = mock.Mock(
- return_value=self._address_scope
+ self.network_client.find_address_scope.return_value = (
+ self._address_scope
)
# Get the command object to test
diff --git a/openstackclient/tests/unit/network/v2/test_default_security_group_rule.py b/openstackclient/tests/unit/network/v2/test_default_security_group_rule.py
index 9b46126..c44e553 100644
--- a/openstackclient/tests/unit/network/v2/test_default_security_group_rule.py
+++ b/openstackclient/tests/unit/network/v2/test_default_security_group_rule.py
@@ -11,11 +11,9 @@
# under the License.
#
-from unittest import mock
from unittest.mock import call
import uuid
-from openstack.network.v2 import _proxy
from openstack.network.v2 import (
default_security_group_rule as _default_security_group_rule,
)
@@ -28,18 +26,7 @@ from openstackclient.tests.unit.network.v2 import fakes as network_fakes
from openstackclient.tests.unit import utils as tests_utils
-class TestDefaultSecurityGroupRule(network_fakes.TestNetworkV2):
- def setUp(self):
- super().setUp()
-
- self.app.client_manager.sdk_connection = mock.Mock()
- self.app.client_manager.sdk_connection.network = mock.Mock(
- spec=_proxy.Proxy,
- )
- self.sdk_client = self.app.client_manager.sdk_connection.network
-
-
-class TestCreateDefaultSecurityGroupRule(TestDefaultSecurityGroupRule):
+class TestCreateDefaultSecurityGroupRule(network_fakes.TestNetworkV2):
expected_columns = (
'description',
'direction',
@@ -82,7 +69,7 @@ class TestCreateDefaultSecurityGroupRule(TestDefaultSecurityGroupRule):
**default_security_group_rule_attrs,
)
- self.sdk_client.create_default_security_group_rule.return_value = (
+ self.network_client.create_default_security_group_rule.return_value = (
self._default_sg_rule
)
self.expected_data = (
@@ -208,7 +195,7 @@ class TestCreateDefaultSecurityGroupRule(TestDefaultSecurityGroupRule):
columns, data = self.cmd.take_action(parsed_args)
- self.sdk_client.create_default_security_group_rule.assert_called_once_with(
+ self.network_client.create_default_security_group_rule.assert_called_once_with(
**{
'direction': self._default_sg_rule.direction,
'ethertype': self._default_sg_rule.ether_type,
@@ -252,7 +239,7 @@ class TestCreateDefaultSecurityGroupRule(TestDefaultSecurityGroupRule):
columns, data = self.cmd.take_action(parsed_args)
- self.sdk_client.create_default_security_group_rule.assert_called_once_with(
+ self.network_client.create_default_security_group_rule.assert_called_once_with(
**{
'direction': self._default_sg_rule.direction,
'ethertype': self._default_sg_rule.ether_type,
@@ -302,7 +289,7 @@ class TestCreateDefaultSecurityGroupRule(TestDefaultSecurityGroupRule):
columns, data = self.cmd.take_action(parsed_args)
- self.sdk_client.create_default_security_group_rule.assert_called_once_with(
+ self.network_client.create_default_security_group_rule.assert_called_once_with(
**{
'direction': self._default_sg_rule.direction,
'ethertype': self._default_sg_rule.ether_type,
@@ -347,7 +334,7 @@ class TestCreateDefaultSecurityGroupRule(TestDefaultSecurityGroupRule):
columns, data = self.cmd.take_action(parsed_args)
- self.sdk_client.create_default_security_group_rule.assert_called_once_with(
+ self.network_client.create_default_security_group_rule.assert_called_once_with(
**{
'direction': self._default_sg_rule.direction,
'ethertype': self._default_sg_rule.ether_type,
@@ -381,7 +368,7 @@ class TestCreateDefaultSecurityGroupRule(TestDefaultSecurityGroupRule):
columns, data = self.cmd.take_action(parsed_args)
- self.sdk_client.create_default_security_group_rule.assert_called_once_with(
+ self.network_client.create_default_security_group_rule.assert_called_once_with(
**{
'direction': self._default_sg_rule.direction,
'ethertype': self._default_sg_rule.ether_type,
@@ -415,7 +402,7 @@ class TestCreateDefaultSecurityGroupRule(TestDefaultSecurityGroupRule):
columns, data = self.cmd.take_action(parsed_args)
- self.sdk_client.create_default_security_group_rule.assert_called_once_with(
+ self.network_client.create_default_security_group_rule.assert_called_once_with(
**{
'direction': self._default_sg_rule.direction,
'ethertype': self._default_sg_rule.ether_type,
@@ -449,7 +436,7 @@ class TestCreateDefaultSecurityGroupRule(TestDefaultSecurityGroupRule):
columns, data = self.cmd.take_action(parsed_args)
- self.sdk_client.create_default_security_group_rule.assert_called_once_with(
+ self.network_client.create_default_security_group_rule.assert_called_once_with(
**{
'direction': self._default_sg_rule.direction,
'ethertype': self._default_sg_rule.ether_type,
@@ -599,7 +586,7 @@ class TestCreateDefaultSecurityGroupRule(TestDefaultSecurityGroupRule):
columns, data = self.cmd.take_action(parsed_args)
- self.sdk_client.create_default_security_group_rule.assert_called_once_with(
+ self.network_client.create_default_security_group_rule.assert_called_once_with(
**{
'direction': self._default_sg_rule.direction,
'ethertype': self._default_sg_rule.ether_type,
@@ -637,7 +624,7 @@ class TestCreateDefaultSecurityGroupRule(TestDefaultSecurityGroupRule):
columns, data = self.cmd.take_action(parsed_args)
- self.sdk_client.create_default_security_group_rule.assert_called_once_with(
+ self.network_client.create_default_security_group_rule.assert_called_once_with(
**{
'direction': self._default_sg_rule.direction,
'ethertype': self._default_sg_rule.ether_type,
@@ -675,7 +662,7 @@ class TestCreateDefaultSecurityGroupRule(TestDefaultSecurityGroupRule):
columns, data = self.cmd.take_action(parsed_args)
- self.sdk_client.create_default_security_group_rule.assert_called_once_with(
+ self.network_client.create_default_security_group_rule.assert_called_once_with(
**{
'direction': self._default_sg_rule.direction,
'ethertype': self._default_sg_rule.ether_type,
@@ -713,7 +700,7 @@ class TestCreateDefaultSecurityGroupRule(TestDefaultSecurityGroupRule):
columns, data = self.cmd.take_action(parsed_args)
- self.sdk_client.create_default_security_group_rule.assert_called_once_with(
+ self.network_client.create_default_security_group_rule.assert_called_once_with(
**{
'direction': self._default_sg_rule.direction,
'ethertype': self._default_sg_rule.ether_type,
@@ -754,7 +741,7 @@ class TestCreateDefaultSecurityGroupRule(TestDefaultSecurityGroupRule):
columns, data = self.cmd.take_action(parsed_args)
- self.sdk_client.create_default_security_group_rule.assert_called_once_with(
+ self.network_client.create_default_security_group_rule.assert_called_once_with(
**{
'direction': self._default_sg_rule.direction,
'ethertype': self._default_sg_rule.ether_type,
@@ -794,7 +781,7 @@ class TestCreateDefaultSecurityGroupRule(TestDefaultSecurityGroupRule):
columns, data = self.cmd.take_action(parsed_args)
- self.sdk_client.create_default_security_group_rule.assert_called_once_with(
+ self.network_client.create_default_security_group_rule.assert_called_once_with(
**{
'direction': self._default_sg_rule.direction,
'ethertype': self._default_sg_rule.ether_type,
@@ -825,7 +812,7 @@ class TestCreateDefaultSecurityGroupRule(TestDefaultSecurityGroupRule):
columns, data = self.cmd.take_action(parsed_args)
- self.sdk_client.create_default_security_group_rule.assert_called_once_with(
+ self.network_client.create_default_security_group_rule.assert_called_once_with(
**{
'description': self._default_sg_rule.description,
'direction': self._default_sg_rule.direction,
@@ -840,7 +827,7 @@ class TestCreateDefaultSecurityGroupRule(TestDefaultSecurityGroupRule):
self.assertEqual(self.expected_data, data)
-class TestDeleteDefaultSecurityGroupRule(TestDefaultSecurityGroupRule):
+class TestDeleteDefaultSecurityGroupRule(network_fakes.TestNetworkV2):
# The default security group rules to be deleted.
default_security_group_rule_attrs = {
'direction': 'ingress',
@@ -866,7 +853,9 @@ class TestDeleteDefaultSecurityGroupRule(TestDefaultSecurityGroupRule):
def setUp(self):
super().setUp()
- self.sdk_client.delete_default_security_group_rule.return_value = None
+ self.network_client.delete_default_security_group_rule.return_value = (
+ None
+ )
# Get the command object to test
self.cmd = default_security_group_rule.DeleteDefaultSecurityGroupRule(
@@ -880,7 +869,7 @@ class TestDeleteDefaultSecurityGroupRule(TestDefaultSecurityGroupRule):
verifylist = [
('rule', [self._default_sg_rules[0].id]),
]
- self.sdk_client.find_default_security_group_rule.return_value = (
+ self.network_client.find_default_security_group_rule.return_value = (
self._default_sg_rules[0]
)
@@ -888,7 +877,7 @@ class TestDeleteDefaultSecurityGroupRule(TestDefaultSecurityGroupRule):
result = self.cmd.take_action(parsed_args)
- self.sdk_client.delete_default_security_group_rule.assert_called_once_with(
+ self.network_client.delete_default_security_group_rule.assert_called_once_with(
self._default_sg_rules[0]
)
self.assertIsNone(result)
@@ -902,7 +891,7 @@ class TestDeleteDefaultSecurityGroupRule(TestDefaultSecurityGroupRule):
verifylist = [
('rule', arglist),
]
- self.sdk_client.find_default_security_group_rule.side_effect = (
+ self.network_client.find_default_security_group_rule.side_effect = (
self._default_sg_rules
)
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -912,7 +901,7 @@ class TestDeleteDefaultSecurityGroupRule(TestDefaultSecurityGroupRule):
calls = []
for s in self._default_sg_rules:
calls.append(call(s))
- self.sdk_client.delete_default_security_group_rule.assert_has_calls(
+ self.network_client.delete_default_security_group_rule.assert_has_calls(
calls
)
self.assertIsNone(result)
@@ -931,8 +920,8 @@ class TestDeleteDefaultSecurityGroupRule(TestDefaultSecurityGroupRule):
self._default_sg_rules[0],
exceptions.CommandError,
]
- self.sdk_client.find_default_security_group_rule = mock.Mock(
- side_effect=find_mock_result
+ self.network_client.find_default_security_group_rule.side_effect = (
+ find_mock_result
)
try:
@@ -941,18 +930,18 @@ class TestDeleteDefaultSecurityGroupRule(TestDefaultSecurityGroupRule):
except exceptions.CommandError as e:
self.assertEqual('1 of 2 default rules failed to delete.', str(e))
- self.sdk_client.find_default_security_group_rule.assert_any_call(
+ self.network_client.find_default_security_group_rule.assert_any_call(
self._default_sg_rules[0].id, ignore_missing=False
)
- self.sdk_client.find_default_security_group_rule.assert_any_call(
+ self.network_client.find_default_security_group_rule.assert_any_call(
'unexist_rule', ignore_missing=False
)
- self.sdk_client.delete_default_security_group_rule.assert_called_once_with(
+ self.network_client.delete_default_security_group_rule.assert_called_once_with(
self._default_sg_rules[0]
)
-class TestListDefaultSecurityGroupRule(TestDefaultSecurityGroupRule):
+class TestListDefaultSecurityGroupRule(network_fakes.TestNetworkV2):
# The security group rule to be listed.
_default_sg_rule_tcp = sdk_fakes.generate_fake_resource(
_default_security_group_rule.DefaultSecurityGroupRule,
@@ -1001,7 +990,7 @@ class TestListDefaultSecurityGroupRule(TestDefaultSecurityGroupRule):
def setUp(self):
super().setUp()
- self.sdk_client.default_security_group_rules.return_value = (
+ self.network_client.default_security_group_rules.return_value = (
self._default_sg_rules
)
@@ -1016,7 +1005,7 @@ class TestListDefaultSecurityGroupRule(TestDefaultSecurityGroupRule):
columns, data = self.cmd.take_action(parsed_args)
- self.sdk_client.default_security_group_rules.assert_called_once_with(
+ self.network_client.default_security_group_rules.assert_called_once_with(
**{}
)
self.assertEqual(self.expected_columns, columns)
@@ -1035,7 +1024,7 @@ class TestListDefaultSecurityGroupRule(TestDefaultSecurityGroupRule):
columns, data = self.cmd.take_action(parsed_args)
- self.sdk_client.default_security_group_rules.assert_called_once_with(
+ self.network_client.default_security_group_rules.assert_called_once_with(
**{
'protocol': 'tcp',
}
@@ -1055,7 +1044,7 @@ class TestListDefaultSecurityGroupRule(TestDefaultSecurityGroupRule):
columns, data = self.cmd.take_action(parsed_args)
- self.sdk_client.default_security_group_rules.assert_called_once_with(
+ self.network_client.default_security_group_rules.assert_called_once_with(
**{
'direction': 'ingress',
}
@@ -1075,7 +1064,7 @@ class TestListDefaultSecurityGroupRule(TestDefaultSecurityGroupRule):
columns, data = self.cmd.take_action(parsed_args)
- self.sdk_client.default_security_group_rules.assert_called_once_with(
+ self.network_client.default_security_group_rules.assert_called_once_with(
**{
'direction': 'egress',
}
@@ -1084,7 +1073,7 @@ class TestListDefaultSecurityGroupRule(TestDefaultSecurityGroupRule):
self.assertEqual(self.expected_data, list(data))
-class TestShowDefaultSecurityGroupRule(TestDefaultSecurityGroupRule):
+class TestShowDefaultSecurityGroupRule(network_fakes.TestNetworkV2):
# The default security group rule to be shown.
_default_sg_rule = sdk_fakes.generate_fake_resource(
_default_security_group_rule.DefaultSecurityGroupRule
@@ -1123,7 +1112,7 @@ class TestShowDefaultSecurityGroupRule(TestDefaultSecurityGroupRule):
def setUp(self):
super().setUp()
- self.sdk_client.find_default_security_group_rule.return_value = (
+ self.network_client.find_default_security_group_rule.return_value = (
self._default_sg_rule
)
@@ -1148,7 +1137,7 @@ class TestShowDefaultSecurityGroupRule(TestDefaultSecurityGroupRule):
columns, data = self.cmd.take_action(parsed_args)
- self.sdk_client.find_default_security_group_rule.assert_called_once_with(
+ self.network_client.find_default_security_group_rule.assert_called_once_with(
self._default_sg_rule.id, ignore_missing=False
)
self.assertEqual(self.columns, columns)
diff --git a/openstackclient/tests/unit/network/v2/test_floating_ip_network.py b/openstackclient/tests/unit/network/v2/test_floating_ip_network.py
index 605f4d9..ab0ec17 100644
--- a/openstackclient/tests/unit/network/v2/test_floating_ip_network.py
+++ b/openstackclient/tests/unit/network/v2/test_floating_ip_network.py
@@ -11,7 +11,6 @@
# under the License.
#
-from unittest import mock
from unittest.mock import call
from openstack.network.v2 import floating_ip as _floating_ip
@@ -86,16 +85,14 @@ class TestCreateFloatingIPNetwork(TestFloatingIPNetwork):
def setUp(self):
super().setUp()
- self.network_client.create_ip = mock.Mock(
- return_value=self.floating_ip
- )
- self.network_client.set_tags = mock.Mock(return_value=None)
+ self.network_client.create_ip.return_value = self.floating_ip
- self.network_client.find_network = mock.Mock(
- return_value=self.floating_network
- )
- self.network_client.find_subnet = mock.Mock(return_value=self.subnet)
- self.network_client.find_port = mock.Mock(return_value=self.port)
+ self.network_client.set_tags.return_value = None
+
+ self.network_client.find_network.return_value = self.floating_network
+
+ self.network_client.find_subnet.return_value = self.subnet
+ self.network_client.find_port.return_value = self.port
# Get the command object to test
self.cmd = fip.CreateFloatingIP(self.app, None)
@@ -304,7 +301,7 @@ class TestDeleteFloatingIPNetwork(TestFloatingIPNetwork):
def setUp(self):
super().setUp()
- self.network_client.delete_ip = mock.Mock(return_value=None)
+ self.network_client.delete_ip.return_value = None
# Get the command object to test
self.cmd = fip.DeleteFloatingIP(self.app, None)
@@ -470,14 +467,11 @@ class TestListFloatingIPNetwork(TestFloatingIPNetwork):
def setUp(self):
super().setUp()
- self.network_client.ips = mock.Mock(return_value=self.floating_ips)
- self.network_client.find_network = mock.Mock(
- return_value=self.fake_network
- )
- self.network_client.find_port = mock.Mock(return_value=self.fake_port)
- self.network_client.find_router = mock.Mock(
- return_value=self.fake_router
- )
+ self.network_client.ips.return_value = self.floating_ips
+ self.network_client.find_network.return_value = self.fake_network
+
+ self.network_client.find_port.return_value = self.fake_port
+ self.network_client.find_router.return_value = self.fake_router
# Get the command object to test
self.cmd = fip.ListFloatingIP(self.app, None)
@@ -713,7 +707,7 @@ class TestShowFloatingIPNetwork(TestFloatingIPNetwork):
self.floating_ip = sdk_fakes.generate_fake_resource(
_floating_ip.FloatingIP
)
- self.network_client.find_ip = mock.Mock(return_value=self.floating_ip)
+ self.network_client.find_ip.return_value = self.floating_ip
self.columns = (
'created_at',
@@ -797,10 +791,10 @@ class TestSetFloatingIP(TestFloatingIPNetwork):
def setUp(self):
super().setUp()
- self.network_client.find_ip = mock.Mock(return_value=self.floating_ip)
- self.network_client.find_port = mock.Mock(return_value=self.port)
- self.network_client.update_ip = mock.Mock(return_value=None)
- self.network_client.set_tags = mock.Mock(return_value=None)
+ self.network_client.find_ip.return_value = self.floating_ip
+ self.network_client.find_port.return_value = self.port
+ self.network_client.update_ip.return_value = None
+ self.network_client.set_tags.return_value = None
# Get the command object to test
self.cmd = fip.SetFloatingIP(self.app, None)
@@ -1044,9 +1038,9 @@ class TestUnsetFloatingIP(TestFloatingIPNetwork):
def setUp(self):
super().setUp()
- self.network_client.find_ip = mock.Mock(return_value=self.floating_ip)
- self.network_client.update_ip = mock.Mock(return_value=None)
- self.network_client.set_tags = mock.Mock(return_value=None)
+ self.network_client.find_ip.return_value = self.floating_ip
+ self.network_client.update_ip.return_value = None
+ self.network_client.set_tags.return_value = None
# Get the command object to test
self.cmd = fip.UnsetFloatingIP(self.app, None)
diff --git a/openstackclient/tests/unit/network/v2/test_floating_ip_port_forwarding.py b/openstackclient/tests/unit/network/v2/test_floating_ip_port_forwarding.py
index 2e4c93f..33b9011 100644
--- a/openstackclient/tests/unit/network/v2/test_floating_ip_port_forwarding.py
+++ b/openstackclient/tests/unit/network/v2/test_floating_ip_port_forwarding.py
@@ -33,7 +33,7 @@ class TestFloatingIPPortForwarding(network_fakes.TestNetworkV2):
)
self.port = network_fakes.create_one_port()
self.project = identity_fakes_v2.FakeProject.create_one_project()
- self.network_client.find_port = mock.Mock(return_value=self.port)
+ self.network_client.find_port.return_value = self.port
class TestCreateFloatingIPPortForwarding(TestFloatingIPPortForwarding):
@@ -54,11 +54,11 @@ class TestCreateFloatingIPPortForwarding(TestFloatingIPPortForwarding):
},
)
- self.network_client.create_floating_ip_port_forwarding = mock.Mock(
- return_value=self.new_port_forwarding
+ self.network_client.create_floating_ip_port_forwarding.return_value = (
+ self.new_port_forwarding
)
- self.network_client.find_ip = mock.Mock(return_value=self.floating_ip)
+ self.network_client.find_ip.return_value = self.floating_ip
# Get the command object to test
self.cmd = floating_ip_port_forwarding.CreateFloatingIPPortForwarding(
@@ -351,11 +351,11 @@ class TestDeleteFloatingIPPortForwarding(TestFloatingIPPortForwarding):
},
)
)
- self.network_client.delete_floating_ip_port_forwarding = mock.Mock(
- return_value=None
+ self.network_client.delete_floating_ip_port_forwarding.return_value = (
+ None
)
- self.network_client.find_ip = mock.Mock(return_value=self.floating_ip)
+ self.network_client.find_ip.return_value = self.floating_ip
# Get the command object to test
self.cmd = floating_ip_port_forwarding.DeleteFloatingIPPortForwarding(
self.app, None
@@ -490,10 +490,11 @@ class TestListFloatingIPPortForwarding(TestFloatingIPPortForwarding):
port_forwarding.description,
)
)
- self.network_client.floating_ip_port_forwardings = mock.Mock(
- return_value=self.port_forwardings
+ self.network_client.floating_ip_port_forwardings.return_value = (
+ self.port_forwardings
)
- self.network_client.find_ip = mock.Mock(return_value=self.floating_ip)
+
+ self.network_client.find_ip.return_value = self.floating_ip
# Get the command object to test
self.cmd = floating_ip_port_forwarding.ListFloatingIPPortForwarding(
self.app, None
@@ -557,14 +558,15 @@ class TestSetFloatingIPPortForwarding(TestFloatingIPPortForwarding):
'floatingip_id': self.floating_ip.id,
}
)
- self.network_client.update_floating_ip_port_forwarding = mock.Mock(
- return_value=None
+ self.network_client.update_floating_ip_port_forwarding.return_value = (
+ None
)
- self.network_client.find_floating_ip_port_forwarding = mock.Mock(
- return_value=self._port_forwarding
+ self.network_client.find_floating_ip_port_forwarding.return_value = (
+ self._port_forwarding
)
- self.network_client.find_ip = mock.Mock(return_value=self.floating_ip)
+
+ self.network_client.find_ip.return_value = self.floating_ip
# Get the command object to test
self.cmd = floating_ip_port_forwarding.SetFloatingIPPortForwarding(
self.app, None
@@ -690,10 +692,11 @@ class TestShowFloatingIPPortForwarding(TestFloatingIPPortForwarding):
self._port_forwarding.internal_port_range,
self._port_forwarding.protocol,
)
- self.network_client.find_floating_ip_port_forwarding = mock.Mock(
- return_value=self._port_forwarding
+ self.network_client.find_floating_ip_port_forwarding.return_value = (
+ self._port_forwarding
)
- self.network_client.find_ip = mock.Mock(return_value=self.floating_ip)
+
+ self.network_client.find_ip.return_value = self.floating_ip
# Get the command object to test
self.cmd = floating_ip_port_forwarding.ShowFloatingIPPortForwarding(
self.app, None
diff --git a/openstackclient/tests/unit/network/v2/test_ip_availability.py b/openstackclient/tests/unit/network/v2/test_ip_availability.py
index 4224d12..def3e17 100644
--- a/openstackclient/tests/unit/network/v2/test_ip_availability.py
+++ b/openstackclient/tests/unit/network/v2/test_ip_availability.py
@@ -11,7 +11,6 @@
# under the License.
#
-from unittest import mock
from osc_lib.cli import format_columns
@@ -55,8 +54,8 @@ class TestListIPAvailability(TestIPAvailability):
super().setUp()
self.cmd = ip_availability.ListIPAvailability(self.app, None)
- self.network_client.network_ip_availabilities = mock.Mock(
- return_value=self._ip_availability
+ self.network_client.network_ip_availabilities.return_value = (
+ self._ip_availability
)
def test_list_no_options(self):
@@ -134,13 +133,12 @@ class TestShowIPAvailability(TestIPAvailability):
def setUp(self):
super().setUp()
- self.network_client.find_network_ip_availability = mock.Mock(
- return_value=self._ip_availability
- )
- self.network_client.find_network = mock.Mock(
- return_value=self._network
+ self.network_client.find_network_ip_availability.return_value = (
+ self._ip_availability
)
+ self.network_client.find_network.return_value = self._network
+
# Get the command object to test
self.cmd = ip_availability.ShowIPAvailability(self.app, None)
diff --git a/openstackclient/tests/unit/network/v2/test_l3_conntrack_helper.py b/openstackclient/tests/unit/network/v2/test_l3_conntrack_helper.py
index b358024..0769e2e 100644
--- a/openstackclient/tests/unit/network/v2/test_l3_conntrack_helper.py
+++ b/openstackclient/tests/unit/network/v2/test_l3_conntrack_helper.py
@@ -11,7 +11,6 @@
# under the License.
#
-from unittest import mock
from osc_lib import exceptions
@@ -46,8 +45,8 @@ class TestCreateL3ConntrackHelper(TestConntrackHelper):
self.ct_helper.protocol,
self.ct_helper.router_id,
)
- self.network_client.create_conntrack_helper = mock.Mock(
- return_value=self.ct_helper
+ self.network_client.create_conntrack_helper.return_value = (
+ self.ct_helper
)
# Get the command object to test
@@ -119,9 +118,7 @@ class TestDeleteL3ConntrackHelper(TestConntrackHelper):
attrs
)
)
- self.network_client.delete_conntrack_helper = mock.Mock(
- return_value=None
- )
+ self.network_client.delete_conntrack_helper.return_value = None
# Get the command object to test
self.cmd = l3_conntrack_helper.DeleteConntrackHelper(self.app, None)
@@ -181,9 +178,7 @@ class TestListL3ConntrackHelper(TestConntrackHelper):
ct_helper.port,
)
)
- self.network_client.conntrack_helpers = mock.Mock(
- return_value=ct_helpers
- )
+ self.network_client.conntrack_helpers.return_value = ct_helpers
# Get the command object to test
self.cmd = l3_conntrack_helper.ListConntrackHelper(self.app, None)
@@ -216,9 +211,7 @@ class TestSetL3ConntrackHelper(TestConntrackHelper):
attrs
)
)
- self.network_client.update_conntrack_helper = mock.Mock(
- return_value=None
- )
+ self.network_client.update_conntrack_helper.return_value = None
# Get the command object to test
self.cmd = l3_conntrack_helper.SetConntrackHelper(self.app, None)
@@ -281,9 +274,7 @@ class TestShowL3ConntrackHelper(TestConntrackHelper):
self.ct_helper.protocol,
self.ct_helper.router_id,
)
- self.network_client.get_conntrack_helper = mock.Mock(
- return_value=self.ct_helper
- )
+ self.network_client.get_conntrack_helper.return_value = self.ct_helper
# Get the command object to test
self.cmd = l3_conntrack_helper.ShowConntrackHelper(self.app, None)
diff --git a/openstackclient/tests/unit/network/v2/test_local_ip.py b/openstackclient/tests/unit/network/v2/test_local_ip.py
index cf4105b..585fec7 100644
--- a/openstackclient/tests/unit/network/v2/test_local_ip.py
+++ b/openstackclient/tests/unit/network/v2/test_local_ip.py
@@ -13,7 +13,6 @@
# under the License.
#
-from unittest import mock
from unittest.mock import call
from osc_lib import exceptions
@@ -77,13 +76,11 @@ class TestCreateLocalIP(TestLocalIP):
def setUp(self):
super().setUp()
- self.network_client.create_local_ip = mock.Mock(
- return_value=self.new_local_ip
- )
- self.network_client.find_network = mock.Mock(
- return_value=self.local_ip_network
- )
- self.network_client.find_port = mock.Mock(return_value=self.port)
+ self.network_client.create_local_ip.return_value = self.new_local_ip
+
+ self.network_client.find_network.return_value = self.local_ip_network
+
+ self.network_client.find_port.return_value = self.port
# Get the command object to test
self.cmd = local_ip.CreateLocalIP(self.app, None)
@@ -149,7 +146,7 @@ class TestDeleteLocalIP(TestLocalIP):
def setUp(self):
super().setUp()
- self.network_client.delete_local_ip = mock.Mock(return_value=None)
+ self.network_client.delete_local_ip.return_value = None
self.network_client.find_local_ip = network_fakes.get_local_ips(
local_ips=self._local_ips
)
@@ -205,9 +202,7 @@ class TestDeleteLocalIP(TestLocalIP):
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
find_mock_result = [self._local_ips[0], exceptions.CommandError]
- self.network_client.find_local_ip = mock.Mock(
- side_effect=find_mock_result
- )
+ self.network_client.find_local_ip.side_effect = find_mock_result
try:
self.cmd.take_action(parsed_args)
@@ -258,10 +253,8 @@ class TestListLocalIP(TestLocalIP):
def setUp(self):
super().setUp()
- self.network_client.local_ips = mock.Mock(return_value=self.local_ips)
- self.network_client.find_network = mock.Mock(
- return_value=self.fake_network
- )
+ self.network_client.local_ips.return_value = self.local_ips
+ self.network_client.find_network.return_value = self.fake_network
# Get the command object to test
self.cmd = local_ip.ListLocalIP(self.app, None)
@@ -402,10 +395,8 @@ class TestSetLocalIP(TestLocalIP):
def setUp(self):
super().setUp()
- self.network_client.update_local_ip = mock.Mock(return_value=None)
- self.network_client.find_local_ip = mock.Mock(
- return_value=self._local_ip
- )
+ self.network_client.update_local_ip.return_value = None
+ self.network_client.find_local_ip.return_value = self._local_ip
# Get the command object to test
self.cmd = local_ip.SetLocalIP(self.app, None)
@@ -482,9 +473,7 @@ class TestShowLocalIP(TestLocalIP):
def setUp(self):
super().setUp()
- self.network_client.find_local_ip = mock.Mock(
- return_value=self._local_ip
- )
+ self.network_client.find_local_ip.return_value = self._local_ip
# Get the command object to test
self.cmd = local_ip.ShowLocalIP(self.app, None)
diff --git a/openstackclient/tests/unit/network/v2/test_local_ip_association.py b/openstackclient/tests/unit/network/v2/test_local_ip_association.py
index 2c1c0ff..9efdc29 100644
--- a/openstackclient/tests/unit/network/v2/test_local_ip_association.py
+++ b/openstackclient/tests/unit/network/v2/test_local_ip_association.py
@@ -29,7 +29,7 @@ class TestLocalIPAssociation(network_fakes.TestNetworkV2):
self.local_ip = network_fakes.create_one_local_ip()
self.fixed_port = network_fakes.create_one_port()
self.project = identity_fakes_v2.FakeProject.create_one_project()
- self.network_client.find_port = mock.Mock(return_value=self.fixed_port)
+ self.network_client.find_port.return_value = self.fixed_port
class TestCreateLocalIPAssociation(TestLocalIPAssociation):
@@ -43,13 +43,11 @@ class TestCreateLocalIPAssociation(TestLocalIPAssociation):
}
)
)
- self.network_client.create_local_ip_association = mock.Mock(
- return_value=self.new_local_ip_association
+ self.network_client.create_local_ip_association.return_value = (
+ self.new_local_ip_association
)
- self.network_client.find_local_ip = mock.Mock(
- return_value=self.local_ip
- )
+ self.network_client.find_local_ip.return_value = self.local_ip
# Get the command object to test
self.cmd = local_ip_association.CreateLocalIPAssociation(
@@ -128,13 +126,10 @@ class TestDeleteLocalIPAssociation(TestLocalIPAssociation):
},
)
)
- self.network_client.delete_local_ip_association = mock.Mock(
- return_value=None
- )
+ self.network_client.delete_local_ip_association.return_value = None
+
+ self.network_client.find_local_ip.return_value = self.local_ip
- self.network_client.find_local_ip = mock.Mock(
- return_value=self.local_ip
- )
# Get the command object to test
self.cmd = local_ip_association.DeleteLocalIPAssociation(
self.app, None
@@ -262,13 +257,13 @@ class TestListLocalIPAssociation(TestLocalIPAssociation):
lip_assoc.host,
)
)
- self.network_client.local_ip_associations = mock.Mock(
- return_value=self.local_ip_associations
+ self.network_client.local_ip_associations.return_value = (
+ self.local_ip_associations
)
- self.network_client.find_local_ip = mock.Mock(
- return_value=self.local_ip
- )
- self.network_client.find_port = mock.Mock(return_value=self.fixed_port)
+
+ self.network_client.find_local_ip.return_value = self.local_ip
+
+ self.network_client.find_port.return_value = self.fixed_port
# Get the command object to test
self.cmd = local_ip_association.ListLocalIPAssociation(self.app, None)
diff --git a/openstackclient/tests/unit/network/v2/test_ndp_proxy.py b/openstackclient/tests/unit/network/v2/test_ndp_proxy.py
index f9d9a3b..0fe8740 100644
--- a/openstackclient/tests/unit/network/v2/test_ndp_proxy.py
+++ b/openstackclient/tests/unit/network/v2/test_ndp_proxy.py
@@ -11,7 +11,6 @@
# under the License.
#
-from unittest import mock
from unittest.mock import call
from osc_lib import exceptions
@@ -31,9 +30,9 @@ class TestNDPProxy(network_fakes.TestNetworkV2):
self.domains_mock = self.identity_client.domains
self.router = network_fakes.create_one_router({'id': 'fake-router-id'})
- self.network_client.find_router = mock.Mock(return_value=self.router)
+ self.network_client.find_router.return_value = self.router
self.port = network_fakes.create_one_port()
- self.network_client.find_port = mock.Mock(return_value=self.port)
+ self.network_client.find_port.return_value = self.port
class TestCreateNDPProxy(TestNDPProxy):
@@ -66,9 +65,7 @@ class TestCreateNDPProxy(TestNDPProxy):
self.ndp_proxy.router_id,
self.ndp_proxy.updated_at,
)
- self.network_client.create_ndp_proxy = mock.Mock(
- return_value=self.ndp_proxy
- )
+ self.network_client.create_ndp_proxy.return_value = self.ndp_proxy
# Get the command object to test
self.cmd = ndp_proxy.CreateNDPProxy(self.app, None)
@@ -127,10 +124,8 @@ class TestDeleteNDPProxy(TestNDPProxy):
attrs = {'router_id': self.router.id, 'port_id': self.port.id}
self.ndp_proxies = network_fakes.create_ndp_proxies(attrs)
self.ndp_proxy = self.ndp_proxies[0]
- self.network_client.delete_ndp_proxy = mock.Mock(return_value=None)
- self.network_client.find_ndp_proxy = mock.Mock(
- return_value=self.ndp_proxy
- )
+ self.network_client.delete_ndp_proxy.return_value = None
+ self.network_client.find_ndp_proxy.return_value = self.ndp_proxy
# Get the command object to test
self.cmd = ndp_proxy.DeleteNDPProxy(self.app, None)
@@ -203,7 +198,7 @@ class TestListNDPProxy(TestNDPProxy):
)
)
- self.network_client.ndp_proxies = mock.Mock(return_value=ndp_proxies)
+ self.network_client.ndp_proxies.return_value = ndp_proxies
# Get the command object to test
self.cmd = ndp_proxy.ListNDPProxy(self.app, None)
@@ -340,10 +335,8 @@ class TestSetNDPProxy(TestNDPProxy):
super().setUp()
attrs = {'router_id': self.router.id, 'port_id': self.port.id}
self.ndp_proxy = network_fakes.create_one_ndp_proxy(attrs)
- self.network_client.update_ndp_proxy = mock.Mock(return_value=None)
- self.network_client.find_ndp_proxy = mock.Mock(
- return_value=self.ndp_proxy
- )
+ self.network_client.update_ndp_proxy.return_value = None
+ self.network_client.find_ndp_proxy.return_value = self.ndp_proxy
# Get the command object to test
self.cmd = ndp_proxy.SetNDPProxy(self.app, None)
@@ -434,12 +427,9 @@ class TestShowNDPProxy(TestNDPProxy):
self.ndp_proxy.router_id,
self.ndp_proxy.updated_at,
)
- self.network_client.get_ndp_proxy = mock.Mock(
- return_value=self.ndp_proxy
- )
- self.network_client.find_ndp_proxy = mock.Mock(
- return_value=self.ndp_proxy
- )
+ self.network_client.get_ndp_proxy.return_value = self.ndp_proxy
+
+ self.network_client.find_ndp_proxy.return_value = self.ndp_proxy
# Get the command object to test
self.cmd = ndp_proxy.ShowNDPProxy(self.app, None)
diff --git a/openstackclient/tests/unit/network/v2/test_network.py b/openstackclient/tests/unit/network/v2/test_network.py
index f809cad..1e923d0 100644
--- a/openstackclient/tests/unit/network/v2/test_network.py
+++ b/openstackclient/tests/unit/network/v2/test_network.py
@@ -12,7 +12,6 @@
#
import random
-from unittest import mock
from unittest.mock import call
from osc_lib.cli import format_columns
@@ -116,19 +115,16 @@ class TestCreateNetworkIdentityV3(TestNetwork):
def setUp(self):
super().setUp()
- self.network_client.create_network = mock.Mock(
- return_value=self._network
- )
- self.network_client.set_tags = mock.Mock(return_value=None)
+ self.network_client.create_network.return_value = self._network
+
+ self.network_client.set_tags.return_value = None
# Get the command object to test
self.cmd = network.CreateNetwork(self.app, None)
self.projects_mock.get.return_value = self.project
self.domains_mock.get.return_value = self.domain
- self.network_client.find_qos_policy = mock.Mock(
- return_value=self.qos_policy
- )
+ self.network_client.find_qos_policy.return_value = self.qos_policy
def test_create_no_options(self):
arglist = []
@@ -330,6 +326,23 @@ class TestCreateNetworkIdentityV3(TestNetwork):
exceptions.CommandError, self.cmd.take_action, parsed_args
)
+ def test_create_with_provider_segment_without_provider_type(self):
+ arglist = [
+ "--provider-segment",
+ "123",
+ self._network.name,
+ ]
+ verifylist = [
+ ('provider_network_type', None),
+ ('segmentation_id', "123"),
+ ('name', self._network.name),
+ ]
+
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+ self.assertRaises(
+ exceptions.CommandError, self.cmd.take_action, parsed_args
+ )
+
class TestCreateNetworkIdentityV2(
identity_fakes_v2.FakeClientMixin,
@@ -406,10 +419,9 @@ class TestCreateNetworkIdentityV2(
def setUp(self):
super().setUp()
- self.network_client.create_network = mock.Mock(
- return_value=self._network
- )
- self.network_client.set_tags = mock.Mock(return_value=None)
+ self.network_client.create_network.return_value = self._network
+
+ self.network_client.set_tags.return_value = None
# Get the command object to test
self.cmd = network.CreateNetwork(self.app, None)
@@ -481,7 +493,7 @@ class TestDeleteNetwork(TestNetwork):
# The networks to delete
self._networks = network_fakes.create_networks(count=3)
- self.network_client.delete_network = mock.Mock(return_value=None)
+ self.network_client.delete_network.return_value = None
self.network_client.find_network = network_fakes.get_networks(
networks=self._networks
@@ -540,14 +552,14 @@ class TestDeleteNetwork(TestNetwork):
exceptions.NotFound('404'),
self._networks[1],
]
- self.network_client.find_network = mock.Mock(side_effect=ret_find)
+ self.network_client.find_network.side_effect = ret_find
# Fake exception in delete_network()
ret_delete = [
None,
exceptions.NotFound('404'),
]
- self.network_client.delete_network = mock.Mock(side_effect=ret_delete)
+ self.network_client.delete_network.side_effect = ret_delete
self.assertRaises(
exceptions.CommandError, self.cmd.take_action, parsed_args
@@ -619,13 +631,13 @@ class TestListNetwork(TestNetwork):
# Get the command object to test
self.cmd = network.ListNetwork(self.app, None)
- self.network_client.networks = mock.Mock(return_value=self._network)
+ self.network_client.networks.return_value = self._network
self._agent = network_fakes.create_one_network_agent()
self.network_client.get_agent.return_value = self._agent
- self.network_client.dhcp_agent_hosting_networks = mock.Mock(
- return_value=self._network
+ self.network_client.dhcp_agent_hosting_networks.return_value = (
+ self._network
)
# TestListTagMixin
@@ -974,15 +986,12 @@ class TestSetNetwork(TestNetwork):
def setUp(self):
super().setUp()
- self.network_client.update_network = mock.Mock(return_value=None)
- self.network_client.set_tags = mock.Mock(return_value=None)
+ self.network_client.update_network.return_value = None
+ self.network_client.set_tags.return_value = None
- self.network_client.find_network = mock.Mock(
- return_value=self._network
- )
- self.network_client.find_qos_policy = mock.Mock(
- return_value=self.qos_policy
- )
+ self.network_client.find_network.return_value = self._network
+
+ self.network_client.find_qos_policy.return_value = self.qos_policy
# Get the command object to test
self.cmd = network.SetNetwork(self.app, None)
@@ -1225,9 +1234,7 @@ class TestShowNetwork(TestNetwork):
def setUp(self):
super().setUp()
- self.network_client.find_network = mock.Mock(
- return_value=self._network
- )
+ self.network_client.find_network.return_value = self._network
# Get the command object to test
self.cmd = network.ShowNetwork(self.app, None)
@@ -1273,15 +1280,12 @@ class TestUnsetNetwork(TestNetwork):
def setUp(self):
super().setUp()
- self.network_client.update_network = mock.Mock(return_value=None)
- self.network_client.set_tags = mock.Mock(return_value=None)
+ self.network_client.update_network.return_value = None
+ self.network_client.set_tags.return_value = None
- self.network_client.find_network = mock.Mock(
- return_value=self._network
- )
- self.network_client.find_qos_policy = mock.Mock(
- return_value=self.qos_policy
- )
+ self.network_client.find_network.return_value = self._network
+
+ self.network_client.find_qos_policy.return_value = self.qos_policy
# Get the command object to test
self.cmd = network.UnsetNetwork(self.app, None)
diff --git a/openstackclient/tests/unit/network/v2/test_network_agent.py b/openstackclient/tests/unit/network/v2/test_network_agent.py
index bd79950..48b394d 100644
--- a/openstackclient/tests/unit/network/v2/test_network_agent.py
+++ b/openstackclient/tests/unit/network/v2/test_network_agent.py
@@ -11,7 +11,6 @@
# under the License.
#
-from unittest import mock
from unittest.mock import call
from osc_lib.cli import format_columns
@@ -34,8 +33,8 @@ class TestAddNetworkToAgent(TestNetworkAgent):
def setUp(self):
super().setUp()
- self.network_client.get_agent = mock.Mock(return_value=self.agent)
- self.network_client.find_network = mock.Mock(return_value=self.net)
+ self.network_client.get_agent.return_value = self.agent
+ self.network_client.find_network.return_value = self.net
self.network_client.name = self.network_client.find_network.name
self.cmd = network_agent.AddNetworkToAgent(self.app, None)
@@ -76,8 +75,8 @@ class TestAddRouterAgent(TestNetworkAgent):
def setUp(self):
super().setUp()
- self.network_client.get_agent = mock.Mock(return_value=self._agent)
- self.network_client.find_router = mock.Mock(return_value=self._router)
+ self.network_client.get_agent.return_value = self._agent
+ self.network_client.find_router.return_value = self._router
self.cmd = network_agent.AddRouterToAgent(self.app, None)
@@ -120,7 +119,7 @@ class TestDeleteNetworkAgent(TestNetworkAgent):
def setUp(self):
super().setUp()
- self.network_client.delete_agent = mock.Mock(return_value=None)
+ self.network_client.delete_agent.return_value = None
# Get the command object to test
self.cmd = network_agent.DeleteNetworkAgent(self.app, None)
@@ -173,9 +172,7 @@ class TestDeleteNetworkAgent(TestNetworkAgent):
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
delete_mock_result = [True, exceptions.CommandError]
- self.network_client.delete_agent = mock.Mock(
- side_effect=delete_mock_result
- )
+ self.network_client.delete_agent.side_effect = delete_mock_result
try:
self.cmd.take_action(parsed_args)
@@ -357,8 +354,8 @@ class TestRemoveNetworkFromAgent(TestNetworkAgent):
def setUp(self):
super().setUp()
- self.network_client.get_agent = mock.Mock(return_value=self.agent)
- self.network_client.find_network = mock.Mock(return_value=self.net)
+ self.network_client.get_agent.return_value = self.agent
+ self.network_client.find_network.return_value = self.net
self.network_client.name = self.network_client.find_network.name
self.cmd = network_agent.RemoveNetworkFromAgent(self.app, None)
@@ -414,8 +411,8 @@ class TestRemoveRouterAgent(TestNetworkAgent):
def setUp(self):
super().setUp()
- self.network_client.get_agent = mock.Mock(return_value=self._agent)
- self.network_client.find_router = mock.Mock(return_value=self._router)
+ self.network_client.get_agent.return_value = self._agent
+ self.network_client.find_router.return_value = self._router
self.cmd = network_agent.RemoveRouterFromAgent(self.app, None)
@@ -458,10 +455,8 @@ class TestSetNetworkAgent(TestNetworkAgent):
def setUp(self):
super().setUp()
- self.network_client.update_agent = mock.Mock(return_value=None)
- self.network_client.get_agent = mock.Mock(
- return_value=self._network_agent
- )
+ self.network_client.update_agent.return_value = None
+ self.network_client.get_agent.return_value = self._network_agent
# Get the command object to test
self.cmd = network_agent.SetNetworkAgent(self.app, None)
@@ -574,9 +569,7 @@ class TestShowNetworkAgent(TestNetworkAgent):
def setUp(self):
super().setUp()
- self.network_client.get_agent = mock.Mock(
- return_value=self._network_agent
- )
+ self.network_client.get_agent.return_value = self._network_agent
# Get the command object to test
self.cmd = network_agent.ShowNetworkAgent(self.app, None)
diff --git a/openstackclient/tests/unit/network/v2/test_network_auto_allocated_topology.py b/openstackclient/tests/unit/network/v2/test_network_auto_allocated_topology.py
index 20c645b..d13bd8c 100644
--- a/openstackclient/tests/unit/network/v2/test_network_auto_allocated_topology.py
+++ b/openstackclient/tests/unit/network/v2/test_network_auto_allocated_topology.py
@@ -13,7 +13,6 @@
# License for the specific language governing permissions and limitations
# under the License.
-from unittest import mock
from openstackclient.network.v2 import network_auto_allocated_topology
from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
@@ -50,8 +49,8 @@ class TestCreateAutoAllocatedTopology(TestAutoAllocatedTopology):
self.cmd = network_auto_allocated_topology.CreateAutoAllocatedTopology(
self.app, None
)
- self.network_client.get_auto_allocated_topology = mock.Mock(
- return_value=self.topology
+ self.network_client.get_auto_allocated_topology.return_value = (
+ self.topology
)
def test_create_no_options(self):
@@ -155,8 +154,8 @@ class TestValidateAutoAllocatedTopology(TestAutoAllocatedTopology):
self.cmd = network_auto_allocated_topology.CreateAutoAllocatedTopology(
self.app, None
)
- self.network_client.validate_auto_allocated_topology = mock.Mock(
- return_value=self.topology
+ self.network_client.validate_auto_allocated_topology.return_value = (
+ self.topology
)
def test_show_dry_run_no_project(self):
@@ -228,9 +227,7 @@ class TestDeleteAutoAllocatedTopology(TestAutoAllocatedTopology):
self.cmd = network_auto_allocated_topology.DeleteAutoAllocatedTopology(
self.app, None
)
- self.network_client.delete_auto_allocated_topology = mock.Mock(
- return_value=None
- )
+ self.network_client.delete_auto_allocated_topology.return_value = None
def test_delete_no_project(self):
arglist = []
diff --git a/openstackclient/tests/unit/network/v2/test_network_flavor.py b/openstackclient/tests/unit/network/v2/test_network_flavor.py
index cfbe1f7..10038e3 100644
--- a/openstackclient/tests/unit/network/v2/test_network_flavor.py
+++ b/openstackclient/tests/unit/network/v2/test_network_flavor.py
@@ -41,11 +41,9 @@ class TestAddNetworkFlavorToProfile(TestNetworkFlavor):
def setUp(self):
super().setUp()
- self.network_client.find_flavor = mock.Mock(
- return_value=self.network_flavor
- )
- self.network_client.find_service_profile = mock.Mock(
- return_value=self.service_profile
+ self.network_client.find_flavor.return_value = self.network_flavor
+ self.network_client.find_service_profile.return_value = (
+ self.service_profile
)
self.cmd = network_flavor.AddNetworkFlavorToProfile(self.app, None)
@@ -102,8 +100,8 @@ class TestCreateNetworkFlavor(TestNetworkFlavor):
def setUp(self):
super().setUp()
- self.network_client.create_flavor = mock.Mock(
- return_value=self.new_network_flavor
+ self.network_client.create_flavor.return_value = (
+ self.new_network_flavor
)
# Get the command object to test
@@ -218,7 +216,7 @@ class TestDeleteNetworkFlavor(TestNetworkFlavor):
def setUp(self):
super().setUp()
- self.network_client.delete_flavor = mock.Mock(return_value=None)
+ self.network_client.delete_flavor.return_value = None
self.network_client.find_flavor = network_fakes.get_flavor(
network_flavors=self._network_flavors
)
@@ -278,9 +276,7 @@ class TestDeleteNetworkFlavor(TestNetworkFlavor):
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
find_mock_result = [self._network_flavors[0], exceptions.CommandError]
- self.network_client.find_flavor = mock.Mock(
- side_effect=find_mock_result
- )
+ self.network_client.find_flavor.side_effect = find_mock_result
try:
self.cmd.take_action(parsed_args)
@@ -323,9 +319,7 @@ class TestListNetworkFlavor(TestNetworkFlavor):
def setUp(self):
super().setUp()
- self.network_client.flavors = mock.Mock(
- return_value=self._network_flavors
- )
+ self.network_client.flavors.return_value = self._network_flavors
# Get the command object to test
self.cmd = network_flavor.ListNetworkFlavor(self.app, None)
@@ -348,11 +342,9 @@ class TestRemoveNetworkFlavorFromProfile(TestNetworkFlavor):
def setUp(self):
super().setUp()
- self.network_client.find_flavor = mock.Mock(
- return_value=self.network_flavor
- )
- self.network_client.find_service_profile = mock.Mock(
- return_value=self.service_profile
+ self.network_client.find_flavor.return_value = self.network_flavor
+ self.network_client.find_service_profile.return_value = (
+ self.service_profile
)
self.network_client.disassociate_flavor_from_service_profile = (
mock.Mock()
@@ -412,9 +404,7 @@ class TestShowNetworkFlavor(TestNetworkFlavor):
def setUp(self):
super().setUp()
- self.network_client.find_flavor = mock.Mock(
- return_value=self.new_network_flavor
- )
+ self.network_client.find_flavor.return_value = self.new_network_flavor
# Get the command object to test
self.cmd = network_flavor.ShowNetworkFlavor(self.app, None)
@@ -456,10 +446,8 @@ class TestSetNetworkFlavor(TestNetworkFlavor):
def setUp(self):
super().setUp()
- self.network_client.update_flavor = mock.Mock(return_value=None)
- self.network_client.find_flavor = mock.Mock(
- return_value=self.new_network_flavor
- )
+ self.network_client.update_flavor.return_value = None
+ self.network_client.find_flavor.return_value = self.new_network_flavor
# Get the command object to test
self.cmd = network_flavor.SetNetworkFlavor(self.app, None)
diff --git a/openstackclient/tests/unit/network/v2/test_network_flavor_profile.py b/openstackclient/tests/unit/network/v2/test_network_flavor_profile.py
index d94926c..c8235bf 100644
--- a/openstackclient/tests/unit/network/v2/test_network_flavor_profile.py
+++ b/openstackclient/tests/unit/network/v2/test_network_flavor_profile.py
@@ -49,9 +49,10 @@ class TestCreateFlavorProfile(TestFlavorProfile):
def setUp(self):
super().setUp()
- self.network_client.create_service_profile = mock.Mock(
- return_value=self.new_flavor_profile
+ self.network_client.create_service_profile.return_value = (
+ self.new_flavor_profile
)
+
# Get the command object to test
self.cmd = network_flavor_profile.CreateNetworkFlavorProfile(
self.app, None
@@ -195,9 +196,8 @@ class TestDeleteFlavorProfile(TestFlavorProfile):
def setUp(self):
super().setUp()
- self.network_client.delete_service_profile = mock.Mock(
- return_value=None
- )
+ self.network_client.delete_service_profile.return_value = None
+
self.network_client.find_service_profile = (
network_fakes.get_service_profile(
flavor_profile=self._network_flavor_profiles
@@ -266,9 +266,7 @@ class TestDeleteFlavorProfile(TestFlavorProfile):
self._network_flavor_profiles[0],
exceptions.CommandError,
]
- self.network_client.find_service_profile = mock.Mock(
- side_effect=find_mock_result
- )
+ self.network_client.find_service_profile.side_effect = find_mock_result
try:
self.cmd.take_action(parsed_args)
@@ -314,8 +312,8 @@ class TestListFlavorProfile(TestFlavorProfile):
def setUp(self):
super().setUp()
- self.network_client.service_profiles = mock.Mock(
- return_value=self._network_flavor_profiles
+ self.network_client.service_profiles.return_value = (
+ self._network_flavor_profiles
)
# Get the command object to test
@@ -355,8 +353,8 @@ class TestShowFlavorProfile(TestFlavorProfile):
def setUp(self):
super().setUp()
- self.network_client.find_service_profile = mock.Mock(
- return_value=self.network_flavor_profile
+ self.network_client.find_service_profile.return_value = (
+ self.network_flavor_profile
)
# Get the command object to test
@@ -388,11 +386,10 @@ class TestSetFlavorProfile(TestFlavorProfile):
def setUp(self):
super().setUp()
- self.network_client.update_service_profile = mock.Mock(
- return_value=None
- )
- self.network_client.find_service_profile = mock.Mock(
- return_value=self.network_flavor_profile
+ self.network_client.update_service_profile.return_value = None
+
+ self.network_client.find_service_profile.return_value = (
+ self.network_flavor_profile
)
# Get the command object to test
diff --git a/openstackclient/tests/unit/network/v2/test_network_meter.py b/openstackclient/tests/unit/network/v2/test_network_meter.py
index a92035d..f13839a 100644
--- a/openstackclient/tests/unit/network/v2/test_network_meter.py
+++ b/openstackclient/tests/unit/network/v2/test_network_meter.py
@@ -13,7 +13,6 @@
# License for the specific language governing permissions and limitations
# under the License.
-from unittest import mock
from unittest.mock import call
from osc_lib import exceptions
@@ -55,9 +54,8 @@ class TestCreateMeter(TestMeter):
def setUp(self):
super().setUp()
- self.network_client.create_metering_label = mock.Mock(
- return_value=self.new_meter
- )
+ self.network_client.create_metering_label.return_value = self.new_meter
+
self.projects_mock.get.return_value = self.project
self.cmd = network_meter.CreateMeter(self.app, None)
@@ -132,9 +130,7 @@ class TestDeleteMeter(TestMeter):
self.meter_list = network_fakes.FakeNetworkMeter.create_meter(count=2)
- self.network_client.delete_metering_label = mock.Mock(
- return_value=None
- )
+ self.network_client.delete_metering_label.return_value = None
self.network_client.find_metering_label = (
network_fakes.FakeNetworkMeter.get_meter(meter=self.meter_list)
@@ -194,15 +190,13 @@ class TestDeleteMeter(TestMeter):
exceptions.NotFound('404'),
self.meter_list[1],
]
- self.network_client.find_meter = mock.Mock(side_effect=return_find)
+ self.network_client.find_metering_label.side_effect = return_find
ret_delete = [
None,
exceptions.NotFound('404'),
]
- self.network_client.delete_metering_label = mock.Mock(
- side_effect=ret_delete
- )
+ self.network_client.delete_metering_label.side_effect = ret_delete
self.assertRaises(
exceptions.CommandError, self.cmd.take_action, parsed_args
@@ -240,9 +234,7 @@ class TestListMeter(TestMeter):
def setUp(self):
super().setUp()
- self.network_client.metering_labels = mock.Mock(
- return_value=self.meter_list
- )
+ self.network_client.metering_labels.return_value = self.meter_list
self.cmd = network_meter.ListMeter(self.app, None)
@@ -282,9 +274,7 @@ class TestShowMeter(TestMeter):
self.cmd = network_meter.ShowMeter(self.app, None)
- self.network_client.find_metering_label = mock.Mock(
- return_value=self.new_meter
- )
+ self.network_client.find_metering_label.return_value = self.new_meter
def test_show_no_options(self):
arglist = []
diff --git a/openstackclient/tests/unit/network/v2/test_network_meter_rule.py b/openstackclient/tests/unit/network/v2/test_network_meter_rule.py
index e90ed05..407fb04 100644
--- a/openstackclient/tests/unit/network/v2/test_network_meter_rule.py
+++ b/openstackclient/tests/unit/network/v2/test_network_meter_rule.py
@@ -13,7 +13,6 @@
# License for the specific language governing permissions and limitations
# under the License.
-from unittest import mock
from unittest.mock import call
from osc_lib import exceptions
@@ -65,14 +64,13 @@ class TestCreateMeterRule(TestMeterRule):
{'id': self.new_rule.metering_label_id}
)
- self.network_client.create_metering_label_rule = mock.Mock(
- return_value=self.new_rule
+ self.network_client.create_metering_label_rule.return_value = (
+ self.new_rule
)
+
self.projects_mock.get.return_value = self.project
self.cmd = network_meter_rule.CreateMeterRule(self.app, None)
- self.network_client.find_metering_label = mock.Mock(
- return_value=fake_meter
- )
+ self.network_client.find_metering_label.return_value = fake_meter
def test_create_no_options(self):
arglist = []
@@ -146,9 +144,7 @@ class TestDeleteMeterRule(TestMeterRule):
self.rule_list = network_fakes.FakeNetworkMeterRule.create_meter_rule(
count=2
)
- self.network_client.delete_metering_label_rule = mock.Mock(
- return_value=None
- )
+ self.network_client.delete_metering_label_rule.return_value = None
self.network_client.find_metering_label_rule = (
network_fakes.FakeNetworkMeterRule.get_meter_rule(
@@ -210,17 +206,13 @@ class TestDeleteMeterRule(TestMeterRule):
exceptions.NotFound('404'),
self.rule_list[1],
]
- self.network_client.find_metering_label_rule = mock.Mock(
- side_effect=return_find
- )
+ self.network_client.find_metering_label_rule.side_effect = return_find
ret_delete = [
None,
exceptions.NotFound('404'),
]
- self.network_client.delete_metering_label_rule = mock.Mock(
- side_effect=ret_delete
- )
+ self.network_client.delete_metering_label_rule.side_effect = ret_delete
self.assertRaises(
exceptions.CommandError, self.cmd.take_action, parsed_args
@@ -262,9 +254,7 @@ class TestListMeterRule(TestMeterRule):
def setUp(self):
super().setUp()
- self.network_client.metering_label_rules = mock.Mock(
- return_value=self.rule_list
- )
+ self.network_client.metering_label_rules.return_value = self.rule_list
self.cmd = network_meter_rule.ListMeterRule(self.app, None)
@@ -311,8 +301,8 @@ class TestShowMeterRule(TestMeterRule):
self.cmd = network_meter_rule.ShowMeterRule(self.app, None)
- self.network_client.find_metering_label_rule = mock.Mock(
- return_value=self.new_rule
+ self.network_client.find_metering_label_rule.return_value = (
+ self.new_rule
)
def test_show_no_options(self):
diff --git a/openstackclient/tests/unit/network/v2/test_network_qos_policy.py b/openstackclient/tests/unit/network/v2/test_network_qos_policy.py
index fae5b69..17f40ef 100644
--- a/openstackclient/tests/unit/network/v2/test_network_qos_policy.py
+++ b/openstackclient/tests/unit/network/v2/test_network_qos_policy.py
@@ -63,8 +63,8 @@ class TestCreateNetworkQosPolicy(TestQosPolicy):
def setUp(self):
super().setUp()
- self.network_client.create_qos_policy = mock.Mock(
- return_value=self.new_qos_policy
+ self.network_client.create_qos_policy.return_value = (
+ self.new_qos_policy
)
# Get the command object to test
@@ -163,7 +163,7 @@ class TestDeleteNetworkQosPolicy(TestQosPolicy):
def setUp(self):
super().setUp()
- self.network_client.delete_qos_policy = mock.Mock(return_value=None)
+ self.network_client.delete_qos_policy.return_value = None
self.network_client.find_qos_policy = network_fakes.get_qos_policies(
qos_policies=self._qos_policies
)
@@ -264,9 +264,7 @@ class TestListNetworkQosPolicy(TestQosPolicy):
def setUp(self):
super().setUp()
- self.network_client.qos_policies = mock.Mock(
- return_value=self.qos_policies
- )
+ self.network_client.qos_policies.return_value = self.qos_policies
# Get the command object to test
self.cmd = network_qos_policy.ListNetworkQosPolicy(self.app, None)
@@ -344,10 +342,8 @@ class TestSetNetworkQosPolicy(TestQosPolicy):
def setUp(self):
super().setUp()
- self.network_client.update_qos_policy = mock.Mock(return_value=None)
- self.network_client.find_qos_policy = mock.Mock(
- return_value=self._qos_policy
- )
+ self.network_client.update_qos_policy.return_value = None
+ self.network_client.find_qos_policy.return_value = self._qos_policy
# Get the command object to test
self.cmd = network_qos_policy.SetNetworkQosPolicy(self.app, None)
@@ -447,9 +443,7 @@ class TestShowNetworkQosPolicy(TestQosPolicy):
def setUp(self):
super().setUp()
- self.network_client.find_qos_policy = mock.Mock(
- return_value=self._qos_policy
- )
+ self.network_client.find_qos_policy.return_value = self._qos_policy
# Get the command object to test
self.cmd = network_qos_policy.ShowNetworkQosPolicy(self.app, None)
diff --git a/openstackclient/tests/unit/network/v2/test_network_qos_rule.py b/openstackclient/tests/unit/network/v2/test_network_qos_rule.py
index e658684..4300304 100644
--- a/openstackclient/tests/unit/network/v2/test_network_qos_rule.py
+++ b/openstackclient/tests/unit/network/v2/test_network_qos_rule.py
@@ -56,9 +56,7 @@ class TestNetworkQosRule(network_fakes.TestNetworkV2):
def setUp(self):
super().setUp()
self.qos_policy = network_fakes.create_one_qos_policy()
- self.network_client.find_qos_policy = mock.Mock(
- return_value=self.qos_policy
- )
+ self.network_client.find_qos_policy.return_value = self.qos_policy
class TestCreateNetworkQosRuleMinimumBandwidth(TestNetworkQosRule):
@@ -87,8 +85,8 @@ class TestCreateNetworkQosRuleMinimumBandwidth(TestNetworkQosRule):
self.new_rule.project_id,
self.new_rule.type,
)
- self.network_client.create_qos_minimum_bandwidth_rule = mock.Mock(
- return_value=self.new_rule
+ self.network_client.create_qos_minimum_bandwidth_rule.return_value = (
+ self.new_rule
)
# Get the command object to test
@@ -190,9 +188,7 @@ class TestCreateNetworkQosRuleMinimumPacketRate(TestNetworkQosRule):
self.new_rule.project_id,
self.new_rule.type,
)
- self.network_client.create_qos_minimum_packet_rate_rule = mock.Mock(
- return_value=self.new_rule
- )
+ self.network_client.create_qos_minimum_packet_rate_rule.return_value = self.new_rule
# Get the command object to test
self.cmd = network_qos_rule.CreateNetworkQosRule(self.app, None)
@@ -291,8 +287,8 @@ class TestCreateNetworkQosRuleDSCPMarking(TestNetworkQosRule):
self.new_rule.project_id,
self.new_rule.type,
)
- self.network_client.create_qos_dscp_marking_rule = mock.Mock(
- return_value=self.new_rule
+ self.network_client.create_qos_dscp_marking_rule.return_value = (
+ self.new_rule
)
# Get the command object to test
@@ -389,8 +385,8 @@ class TestCreateNetworkQosRuleBandwidtLimit(TestNetworkQosRule):
self.new_rule.project_id,
self.new_rule.type,
)
- self.network_client.create_qos_bandwidth_limit_rule = mock.Mock(
- return_value=self.new_rule
+ self.network_client.create_qos_bandwidth_limit_rule.return_value = (
+ self.new_rule
)
# Get the command object to test
@@ -529,9 +525,10 @@ class TestDeleteNetworkQosRuleMinimumBandwidth(TestNetworkQosRule):
}
self.new_rule = network_fakes.create_one_qos_rule(attrs)
self.qos_policy.rules = [self.new_rule]
- self.network_client.delete_qos_minimum_bandwidth_rule = mock.Mock(
- return_value=None
+ self.network_client.delete_qos_minimum_bandwidth_rule.return_value = (
+ None
)
+
self.network_client.find_qos_minimum_bandwidth_rule = (
network_fakes.get_qos_rules(qos_rules=self.new_rule)
)
@@ -592,9 +589,8 @@ class TestDeleteNetworkQosRuleMinimumPacketRate(TestNetworkQosRule):
}
self.new_rule = network_fakes.create_one_qos_rule(attrs)
self.qos_policy.rules = [self.new_rule]
- self.network_client.delete_qos_minimum_packet_rate_rule = mock.Mock(
- return_value=None
- )
+ self.network_client.delete_qos_minimum_packet_rate_rule.return_value = None
+
self.network_client.find_qos_minimum_packet_rate_rule = (
network_fakes.get_qos_rules(qos_rules=self.new_rule)
)
@@ -655,9 +651,8 @@ class TestDeleteNetworkQosRuleDSCPMarking(TestNetworkQosRule):
}
self.new_rule = network_fakes.create_one_qos_rule(attrs)
self.qos_policy.rules = [self.new_rule]
- self.network_client.delete_qos_dscp_marking_rule = mock.Mock(
- return_value=None
- )
+ self.network_client.delete_qos_dscp_marking_rule.return_value = None
+
self.network_client.find_qos_dscp_marking_rule = (
network_fakes.get_qos_rules(qos_rules=self.new_rule)
)
@@ -718,9 +713,8 @@ class TestDeleteNetworkQosRuleBandwidthLimit(TestNetworkQosRule):
}
self.new_rule = network_fakes.create_one_qos_rule(attrs)
self.qos_policy.rules = [self.new_rule]
- self.network_client.delete_qos_bandwidth_limit_rule = mock.Mock(
- return_value=None
- )
+ self.network_client.delete_qos_bandwidth_limit_rule.return_value = None
+
self.network_client.find_qos_bandwidth_limit_rule = (
network_fakes.get_qos_rules(qos_rules=self.new_rule)
)
@@ -781,16 +775,16 @@ class TestSetNetworkQosRuleMinimumBandwidth(TestNetworkQosRule):
}
self.new_rule = network_fakes.create_one_qos_rule(attrs)
self.qos_policy.rules = [self.new_rule]
- self.network_client.update_qos_minimum_bandwidth_rule = mock.Mock(
- return_value=None
+ self.network_client.update_qos_minimum_bandwidth_rule.return_value = (
+ None
)
- self.network_client.find_qos_minimum_bandwidth_rule = mock.Mock(
- return_value=self.new_rule
- )
- self.network_client.find_qos_policy = mock.Mock(
- return_value=self.qos_policy
+
+ self.network_client.find_qos_minimum_bandwidth_rule.return_value = (
+ self.new_rule
)
+ self.network_client.find_qos_policy.return_value = self.qos_policy
+
# Get the command object to test
self.cmd = network_qos_rule.SetNetworkQosRule(self.app, None)
@@ -883,16 +877,14 @@ class TestSetNetworkQosRuleMinimumPacketRate(TestNetworkQosRule):
}
self.new_rule = network_fakes.create_one_qos_rule(attrs)
self.qos_policy.rules = [self.new_rule]
- self.network_client.update_qos_minimum_packet_rate_rule = mock.Mock(
- return_value=None
- )
- self.network_client.find_qos_minimum_packet_rate_rule = mock.Mock(
- return_value=self.new_rule
- )
- self.network_client.find_qos_policy = mock.Mock(
- return_value=self.qos_policy
+ self.network_client.update_qos_minimum_packet_rate_rule.return_value = None
+
+ self.network_client.find_qos_minimum_packet_rate_rule.return_value = (
+ self.new_rule
)
+ self.network_client.find_qos_policy.return_value = self.qos_policy
+
# Get the command object to test
self.cmd = network_qos_rule.SetNetworkQosRule(self.app, None)
@@ -985,16 +977,14 @@ class TestSetNetworkQosRuleDSCPMarking(TestNetworkQosRule):
}
self.new_rule = network_fakes.create_one_qos_rule(attrs)
self.qos_policy.rules = [self.new_rule]
- self.network_client.update_qos_dscp_marking_rule = mock.Mock(
- return_value=None
- )
- self.network_client.find_qos_dscp_marking_rule = mock.Mock(
- return_value=self.new_rule
- )
- self.network_client.find_qos_policy = mock.Mock(
- return_value=self.qos_policy
+ self.network_client.update_qos_dscp_marking_rule.return_value = None
+
+ self.network_client.find_qos_dscp_marking_rule.return_value = (
+ self.new_rule
)
+ self.network_client.find_qos_policy.return_value = self.qos_policy
+
# Get the command object to test
self.cmd = network_qos_rule.SetNetworkQosRule(self.app, None)
@@ -1351,8 +1341,8 @@ class TestShowNetworkQosRuleMinimumBandwidth(TestNetworkQosRule):
self.new_rule.type,
)
- self.network_client.get_qos_minimum_bandwidth_rule = mock.Mock(
- return_value=self.new_rule
+ self.network_client.get_qos_minimum_bandwidth_rule.return_value = (
+ self.new_rule
)
# Get the command object to test
@@ -1415,8 +1405,8 @@ class TestShowNetworkQosRuleMinimumPacketRate(TestNetworkQosRule):
self.new_rule.type,
)
- self.network_client.get_qos_minimum_packet_rate_rule = mock.Mock(
- return_value=self.new_rule
+ self.network_client.get_qos_minimum_packet_rate_rule.return_value = (
+ self.new_rule
)
# Get the command object to test
@@ -1477,8 +1467,8 @@ class TestShowNetworkQosDSCPMarking(TestNetworkQosRule):
self.new_rule.type,
)
- self.network_client.get_qos_dscp_marking_rule = mock.Mock(
- return_value=self.new_rule
+ self.network_client.get_qos_dscp_marking_rule.return_value = (
+ self.new_rule
)
# Get the command object to test
@@ -1543,8 +1533,8 @@ class TestShowNetworkQosBandwidthLimit(TestNetworkQosRule):
self.new_rule.type,
)
- self.network_client.get_qos_bandwidth_limit_rule = mock.Mock(
- return_value=self.new_rule
+ self.network_client.get_qos_bandwidth_limit_rule.return_value = (
+ self.new_rule
)
# Get the command object to test
diff --git a/openstackclient/tests/unit/network/v2/test_network_qos_rule_type.py b/openstackclient/tests/unit/network/v2/test_network_qos_rule_type.py
index c0aafa0..1c50b9e 100644
--- a/openstackclient/tests/unit/network/v2/test_network_qos_rule_type.py
+++ b/openstackclient/tests/unit/network/v2/test_network_qos_rule_type.py
@@ -13,7 +13,6 @@
# License for the specific language governing permissions and limitations
# under the License.
-from unittest import mock
from openstackclient.network.v2 import network_qos_rule_type as _qos_rule_type
from openstackclient.tests.unit.network.v2 import fakes as network_fakes
@@ -35,9 +34,7 @@ class TestShowNetworkQosRuleType(TestNetworkQosRuleType):
def setUp(self):
super().setUp()
- self.network_client.get_qos_rule_type = mock.Mock(
- return_value=self.qos_rule_type
- )
+ self.network_client.get_qos_rule_type.return_value = self.qos_rule_type
# Get the command object to test
self.cmd = _qos_rule_type.ShowNetworkQosRuleType(self.app, None)
@@ -84,9 +81,7 @@ class TestListNetworkQosRuleType(TestNetworkQosRuleType):
def setUp(self):
super().setUp()
- self.network_client.qos_rule_types = mock.Mock(
- return_value=self.qos_rule_types
- )
+ self.network_client.qos_rule_types.return_value = self.qos_rule_types
# Get the command object to test
self.cmd = _qos_rule_type.ListNetworkQosRuleType(self.app, None)
diff --git a/openstackclient/tests/unit/network/v2/test_network_rbac.py b/openstackclient/tests/unit/network/v2/test_network_rbac.py
index 816e932..d3a7192 100644
--- a/openstackclient/tests/unit/network/v2/test_network_rbac.py
+++ b/openstackclient/tests/unit/network/v2/test_network_rbac.py
@@ -11,7 +11,6 @@
# under the License.
#
-from unittest import mock
from unittest.mock import call
import ddt
@@ -72,27 +71,20 @@ class TestCreateNetworkRBAC(TestNetworkRBAC):
# Get the command object to test
self.cmd = network_rbac.CreateNetworkRBAC(self.app, None)
- self.network_client.create_rbac_policy = mock.Mock(
- return_value=self.rbac_policy
- )
- self.network_client.find_network = mock.Mock(
- return_value=self.network_object
- )
- self.network_client.find_qos_policy = mock.Mock(
- return_value=self.qos_object
- )
- self.network_client.find_security_group = mock.Mock(
- return_value=self.sg_object
- )
- self.network_client.find_address_scope = mock.Mock(
- return_value=self.as_object
- )
- self.network_client.find_subnet_pool = mock.Mock(
- return_value=self.snp_object
- )
- self.network_client.find_address_group = mock.Mock(
- return_value=self.ag_object
- )
+ self.network_client.create_rbac_policy.return_value = self.rbac_policy
+
+ self.network_client.find_network.return_value = self.network_object
+
+ self.network_client.find_qos_policy.return_value = self.qos_object
+
+ self.network_client.find_security_group.return_value = self.sg_object
+
+ self.network_client.find_address_scope.return_value = self.as_object
+
+ self.network_client.find_subnet_pool.return_value = self.snp_object
+
+ self.network_client.find_address_group.return_value = self.ag_object
+
self.projects_mock.get.return_value = self.project
def test_network_rbac_create_no_type(self):
@@ -343,7 +335,7 @@ class TestDeleteNetworkRBAC(TestNetworkRBAC):
def setUp(self):
super().setUp()
- self.network_client.delete_rbac_policy = mock.Mock(return_value=None)
+ self.network_client.delete_rbac_policy.return_value = None
self.network_client.find_rbac_policy = network_fakes.get_network_rbacs(
rbac_policies=self.rbac_policies
)
@@ -400,9 +392,7 @@ class TestDeleteNetworkRBAC(TestNetworkRBAC):
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
find_mock_result = [self.rbac_policies[0], exceptions.CommandError]
- self.network_client.find_rbac_policy = mock.Mock(
- side_effect=find_mock_result
- )
+ self.network_client.find_rbac_policy.side_effect = find_mock_result
try:
self.cmd.take_action(parsed_args)
@@ -462,9 +452,7 @@ class TestListNetworkRABC(TestNetworkRBAC):
# Get the command object to test
self.cmd = network_rbac.ListNetworkRBAC(self.app, None)
- self.network_client.rbac_policies = mock.Mock(
- return_value=self.rbac_policies
- )
+ self.network_client.rbac_policies.return_value = self.rbac_policies
self.project = identity_fakes_v3.FakeProject.create_one_project()
self.projects_mock.get.return_value = self.project
@@ -564,10 +552,9 @@ class TestSetNetworkRBAC(TestNetworkRBAC):
# Get the command object to test
self.cmd = network_rbac.SetNetworkRBAC(self.app, None)
- self.network_client.find_rbac_policy = mock.Mock(
- return_value=self.rbac_policy
- )
- self.network_client.update_rbac_policy = mock.Mock(return_value=None)
+ self.network_client.find_rbac_policy.return_value = self.rbac_policy
+
+ self.network_client.update_rbac_policy.return_value = None
self.projects_mock.get.return_value = self.project
def test_network_rbac_set_nothing(self):
@@ -639,9 +626,7 @@ class TestShowNetworkRBAC(TestNetworkRBAC):
# Get the command object to test
self.cmd = network_rbac.ShowNetworkRBAC(self.app, None)
- self.network_client.find_rbac_policy = mock.Mock(
- return_value=self.rbac_policy
- )
+ self.network_client.find_rbac_policy.return_value = self.rbac_policy
def test_show_no_options(self):
arglist = []
diff --git a/openstackclient/tests/unit/network/v2/test_network_segment.py b/openstackclient/tests/unit/network/v2/test_network_segment.py
index 936a20a..ab71c32 100644
--- a/openstackclient/tests/unit/network/v2/test_network_segment.py
+++ b/openstackclient/tests/unit/network/v2/test_network_segment.py
@@ -11,7 +11,6 @@
# under the License.
#
-from unittest import mock
from unittest.mock import call
from osc_lib import exceptions
@@ -58,12 +57,9 @@ class TestCreateNetworkSegment(TestNetworkSegment):
def setUp(self):
super().setUp()
- self.network_client.create_segment = mock.Mock(
- return_value=self._network_segment
- )
- self.network_client.find_network = mock.Mock(
- return_value=self._network
- )
+ self.network_client.create_segment.return_value = self._network_segment
+
+ self.network_client.find_network.return_value = self._network
# Get the command object to test
self.cmd = network_segment.CreateNetworkSegment(self.app, None)
@@ -172,10 +168,8 @@ class TestDeleteNetworkSegment(TestNetworkSegment):
def setUp(self):
super().setUp()
- self.network_client.delete_segment = mock.Mock(return_value=None)
- self.network_client.find_segment = mock.Mock(
- side_effect=self._network_segments
- )
+ self.network_client.delete_segment.return_value = None
+ self.network_client.find_segment.side_effect = self._network_segments
# Get the command object to test
self.cmd = network_segment.DeleteNetworkSegment(self.app, None)
@@ -224,9 +218,7 @@ class TestDeleteNetworkSegment(TestNetworkSegment):
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
find_mock_result = [self._network_segments[0], exceptions.CommandError]
- self.network_client.find_segment = mock.Mock(
- side_effect=find_mock_result
- )
+ self.network_client.find_segment.side_effect = find_mock_result
try:
self.cmd.take_action(parsed_args)
@@ -291,12 +283,9 @@ class TestListNetworkSegment(TestNetworkSegment):
# Get the command object to test
self.cmd = network_segment.ListNetworkSegment(self.app, None)
- self.network_client.find_network = mock.Mock(
- return_value=self._network
- )
- self.network_client.segments = mock.Mock(
- return_value=self._network_segments
- )
+ self.network_client.find_network.return_value = self._network
+
+ self.network_client.segments.return_value = self._network_segments
def test_list_no_option(self):
arglist = []
@@ -352,12 +341,9 @@ class TestSetNetworkSegment(TestNetworkSegment):
def setUp(self):
super().setUp()
- self.network_client.find_segment = mock.Mock(
- return_value=self._network_segment
- )
- self.network_client.update_segment = mock.Mock(
- return_value=self._network_segment
- )
+ self.network_client.find_segment.return_value = self._network_segment
+
+ self.network_client.update_segment.return_value = self._network_segment
# Get the command object to test
self.cmd = network_segment.SetNetworkSegment(self.app, None)
@@ -432,9 +418,7 @@ class TestShowNetworkSegment(TestNetworkSegment):
def setUp(self):
super().setUp()
- self.network_client.find_segment = mock.Mock(
- return_value=self._network_segment
- )
+ self.network_client.find_segment.return_value = self._network_segment
# Get the command object to test
self.cmd = network_segment.ShowNetworkSegment(self.app, None)
diff --git a/openstackclient/tests/unit/network/v2/test_network_segment_range.py b/openstackclient/tests/unit/network/v2/test_network_segment_range.py
index d5e406f..9c9c900 100644
--- a/openstackclient/tests/unit/network/v2/test_network_segment_range.py
+++ b/openstackclient/tests/unit/network/v2/test_network_segment_range.py
@@ -78,8 +78,8 @@ class TestCreateNetworkSegmentRange(TestNetworkSegmentRange):
def setUp(self):
super().setUp()
- self.network_client.create_network_segment_range = mock.Mock(
- return_value=self._network_segment_range
+ self.network_client.create_network_segment_range.return_value = (
+ self._network_segment_range
)
# Get the command object to test
@@ -351,11 +351,10 @@ class TestDeleteNetworkSegmentRange(TestNetworkSegmentRange):
def setUp(self):
super().setUp()
- self.network_client.delete_network_segment_range = mock.Mock(
- return_value=None
- )
- self.network_client.find_network_segment_range = mock.Mock(
- side_effect=self._network_segment_ranges
+ self.network_client.delete_network_segment_range.return_value = None
+
+ self.network_client.find_network_segment_range.side_effect = (
+ self._network_segment_ranges
)
# Get the command object to test
@@ -412,8 +411,8 @@ class TestDeleteNetworkSegmentRange(TestNetworkSegmentRange):
self._network_segment_ranges[0],
exceptions.CommandError,
]
- self.network_client.find_network_segment_range = mock.Mock(
- side_effect=find_mock_result
+ self.network_client.find_network_segment_range.side_effect = (
+ find_mock_result
)
try:
@@ -493,8 +492,8 @@ class TestListNetworkSegmentRange(TestNetworkSegmentRange):
def setUp(self):
super().setUp()
- self.network_client.network_segment_ranges = mock.Mock(
- return_value=self._network_segment_ranges
+ self.network_client.network_segment_ranges.return_value = (
+ self._network_segment_ranges
)
# Get the command object to test
@@ -567,8 +566,8 @@ class TestSetNetworkSegmentRange(TestNetworkSegmentRange):
def setUp(self):
super().setUp()
- self.network_client.find_network_segment_range = mock.Mock(
- return_value=self._network_segment_range
+ self.network_client.find_network_segment_range.return_value = (
+ self._network_segment_range
)
# Get the command object to test
@@ -583,9 +582,10 @@ class TestSetNetworkSegmentRange(TestNetworkSegmentRange):
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
- self.network_client.update_network_segment_range = mock.Mock(
- return_value=self._network_segment_range
+ self.network_client.update_network_segment_range.return_value = (
+ self._network_segment_range
)
+
result = self.cmd.take_action(parsed_args)
self.network_client.update_network_segment_range.assert_called_once_with(
@@ -611,9 +611,10 @@ class TestSetNetworkSegmentRange(TestNetworkSegmentRange):
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
- self.network_client.update_network_segment_range = mock.Mock(
- return_value=self._network_segment_range_updated
+ self.network_client.update_network_segment_range.return_value = (
+ self._network_segment_range_updated
)
+
result = self.cmd.take_action(parsed_args)
attrs = {
@@ -662,8 +663,8 @@ class TestShowNetworkSegmentRange(TestNetworkSegmentRange):
def setUp(self):
super().setUp()
- self.network_client.find_network_segment_range = mock.Mock(
- return_value=self._network_segment_range
+ self.network_client.find_network_segment_range.return_value = (
+ self._network_segment_range
)
# Get the command object to test
diff --git a/openstackclient/tests/unit/network/v2/test_network_service_provider.py b/openstackclient/tests/unit/network/v2/test_network_service_provider.py
index 9f61bce..f84bcd3 100644
--- a/openstackclient/tests/unit/network/v2/test_network_service_provider.py
+++ b/openstackclient/tests/unit/network/v2/test_network_service_provider.py
@@ -13,7 +13,6 @@
# License for the specific language governing permissions and limitations
# under the License.
-from unittest import mock
from openstackclient.network.v2 import (
network_service_provider as service_provider,
@@ -52,9 +51,7 @@ class TestListNetworkServiceProvider(TestNetworkServiceProvider):
def setUp(self):
super().setUp()
- self.network_client.service_providers = mock.Mock(
- return_value=self.provider_list
- )
+ self.network_client.service_providers.return_value = self.provider_list
self.cmd = service_provider.ListNetworkServiceProvider(self.app, None)
diff --git a/openstackclient/tests/unit/network/v2/test_network_trunk.py b/openstackclient/tests/unit/network/v2/test_network_trunk.py
index 180e80d..1056c21 100644
--- a/openstackclient/tests/unit/network/v2/test_network_trunk.py
+++ b/openstackclient/tests/unit/network/v2/test_network_trunk.py
@@ -11,7 +11,6 @@
# under the License.
import copy
-from unittest import mock
from unittest.mock import call
from osc_lib.cli import format_columns
@@ -84,12 +83,12 @@ class TestCreateNetworkTrunk(TestNetworkTrunk):
def setUp(self):
super().setUp()
- self.network_client.create_trunk = mock.Mock(
- return_value=self.new_trunk
- )
- self.network_client.find_port = mock.Mock(
- side_effect=[self.parent_port, self.sub_port]
- )
+ self.network_client.create_trunk.return_value = self.new_trunk
+
+ self.network_client.find_port.side_effect = [
+ self.parent_port,
+ self.sub_port,
+ ]
# Get the command object to test
self.cmd = network_trunk.CreateNetworkTrunk(self.app, None)
@@ -313,13 +312,16 @@ class TestDeleteNetworkTrunk(TestNetworkTrunk):
def setUp(self):
super().setUp()
- self.network_client.find_trunk = mock.Mock(
- side_effect=[self.new_trunks[0], self.new_trunks[1]]
- )
- self.network_client.delete_trunk = mock.Mock(return_value=None)
- self.network_client.find_port = mock.Mock(
- side_effect=[self.parent_port, self.sub_port]
- )
+ self.network_client.find_trunk.side_effect = [
+ self.new_trunks[0],
+ self.new_trunks[1],
+ ]
+
+ self.network_client.delete_trunk.return_value = None
+ self.network_client.find_port.side_effect = [
+ self.parent_port,
+ self.sub_port,
+ ]
self.projects_mock.get.return_value = self.project
self.domains_mock.get.return_value = self.domain
@@ -371,9 +373,11 @@ class TestDeleteNetworkTrunk(TestNetworkTrunk):
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
- self.network_client.find_trunk = mock.Mock(
- side_effect=[self.new_trunks[0], exceptions.CommandError]
- )
+ self.network_client.find_trunk.side_effect = [
+ self.new_trunks[0],
+ exceptions.CommandError,
+ ]
+
with testtools.ExpectedException(exceptions.CommandError) as e:
self.cmd.take_action(parsed_args)
self.assertEqual('1 of 2 trunks failed to delete.', str(e))
@@ -412,8 +416,8 @@ class TestShowNetworkTrunk(TestNetworkTrunk):
def setUp(self):
super().setUp()
- self.network_client.find_trunk = mock.Mock(return_value=self.new_trunk)
- self.network_client.get_trunk = mock.Mock(return_value=self.new_trunk)
+ self.network_client.find_trunk.return_value = self.new_trunk
+ self.network_client.get_trunk.return_value = self.new_trunk
self.projects_mock.get.return_value = self.project
self.domains_mock.get.return_value = self.domain
@@ -485,7 +489,7 @@ class TestListNetworkTrunk(TestNetworkTrunk):
def setUp(self):
super().setUp()
- self.network_client.trunks = mock.Mock(return_value=self.new_trunks)
+ self.network_client.trunks.return_value = self.new_trunks
self.projects_mock.get.return_value = self.project
self.domains_mock.get.return_value = self.domain
@@ -564,14 +568,14 @@ class TestSetNetworkTrunk(TestNetworkTrunk):
def setUp(self):
super().setUp()
- self.network_client.update_trunk = mock.Mock(return_value=self._trunk)
- self.network_client.add_trunk_subports = mock.Mock(
- return_value=self._trunk
- )
- self.network_client.find_trunk = mock.Mock(return_value=self._trunk)
- self.network_client.find_port = mock.Mock(
- side_effect=[self.sub_port, self.sub_port]
- )
+ self.network_client.update_trunk.return_value = self._trunk
+ self.network_client.add_trunk_subports.return_value = self._trunk
+
+ self.network_client.find_trunk.return_value = self._trunk
+ self.network_client.find_port.side_effect = [
+ self.sub_port,
+ self.sub_port,
+ ]
self.projects_mock.get.return_value = self.project
self.domains_mock.get.return_value = self.domain
@@ -763,9 +767,8 @@ class TestSetNetworkTrunk(TestNetworkTrunk):
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
- self.network_client.update_trunk = mock.Mock(
- side_effect=exceptions.CommandError
- )
+ self.network_client.update_trunk.side_effect = exceptions.CommandError
+
with testtools.ExpectedException(exceptions.CommandError) as e:
self.cmd.take_action(parsed_args)
self.assertEqual(
@@ -790,12 +793,14 @@ class TestSetNetworkTrunk(TestNetworkTrunk):
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
- self.network_client.add_trunk_subports = mock.Mock(
- side_effect=exceptions.CommandError
- )
- self.network_client.find_port = mock.Mock(
- return_value={'id': 'invalid_subport'}
+ self.network_client.add_trunk_subports.side_effect = (
+ exceptions.CommandError
)
+
+ self.network_client.find_port.side_effect = [
+ network_fakes.create_one_port({'id': 'invalid_subport'})
+ ]
+
with testtools.ExpectedException(exceptions.CommandError) as e:
self.cmd.take_action(parsed_args)
self.assertEqual(
@@ -832,10 +837,10 @@ class TestListNetworkSubport(TestNetworkTrunk):
def setUp(self):
super().setUp()
- self.network_client.find_trunk = mock.Mock(return_value=self._trunk)
- self.network_client.get_trunk_subports = mock.Mock(
- return_value={network_trunk.SUB_PORTS: self._subports}
- )
+ self.network_client.find_trunk.return_value = self._trunk
+ self.network_client.get_trunk_subports.return_value = {
+ network_trunk.SUB_PORTS: self._subports
+ }
# Get the command object to test
self.cmd = network_trunk.ListNetworkSubport(self.app, None)
@@ -902,13 +907,13 @@ class TestUnsetNetworkTrunk(TestNetworkTrunk):
def setUp(self):
super().setUp()
- self.network_client.find_trunk = mock.Mock(return_value=self._trunk)
- self.network_client.find_port = mock.Mock(
- side_effect=[self.sub_port, self.sub_port]
- )
- self.network_client.delete_trunk_subports = mock.Mock(
- return_value=None
- )
+ self.network_client.find_trunk.return_value = self._trunk
+ self.network_client.find_port.side_effect = [
+ self.sub_port,
+ self.sub_port,
+ ]
+
+ self.network_client.delete_trunk_subports.return_value = None
# Get the command object to test
self.cmd = network_trunk.UnsetNetworkTrunk(self.app, None)
diff --git a/openstackclient/tests/unit/network/v2/test_port.py b/openstackclient/tests/unit/network/v2/test_port.py
index 0611be4..11a8711 100644
--- a/openstackclient/tests/unit/network/v2/test_port.py
+++ b/openstackclient/tests/unit/network/v2/test_port.py
@@ -136,19 +136,18 @@ class TestCreatePort(TestPort):
def setUp(self):
super().setUp()
- self.network_client.create_port = mock.Mock(return_value=self._port)
- self.network_client.set_tags = mock.Mock(return_value=None)
+ self.network_client.create_port.return_value = self._port
+ self.network_client.set_tags.return_value = None
fake_net = network_fakes.create_one_network(
{
'id': self._port.network_id,
}
)
- self.network_client.find_network = mock.Mock(return_value=fake_net)
+ self.network_client.find_network.return_value = fake_net
self.fake_subnet = network_fakes.FakeSubnet.create_one_subnet()
- self.network_client.find_subnet = mock.Mock(
- return_value=self.fake_subnet
- )
- self.network_client.find_extension = mock.Mock(return_value=[])
+ self.network_client.find_subnet.return_value = self.fake_subnet
+
+ self.network_client.find_extension.return_value = []
# Get the command object to test
self.cmd = port.CreatePort(self.app, None)
@@ -321,9 +320,8 @@ class TestCreatePort(TestPort):
def test_create_with_security_group(self):
secgroup = network_fakes.create_one_security_group()
- self.network_client.find_security_group = mock.Mock(
- return_value=secgroup
- )
+ self.network_client.find_security_group.return_value = secgroup
+
arglist = [
'--network',
self._port.network_id,
@@ -393,9 +391,8 @@ class TestCreatePort(TestPort):
def test_create_with_security_groups(self):
sg_1 = network_fakes.create_one_security_group()
sg_2 = network_fakes.create_one_security_group()
- self.network_client.find_security_group = mock.Mock(
- side_effect=[sg_1, sg_2]
- )
+ self.network_client.find_security_group.side_effect = [sg_1, sg_2]
+
arglist = [
'--network',
self._port.network_id,
@@ -583,9 +580,8 @@ class TestCreatePort(TestPort):
def test_create_port_with_qos(self):
qos_policy = network_fakes.create_one_qos_policy()
- self.network_client.find_qos_policy = mock.Mock(
- return_value=qos_policy
- )
+ self.network_client.find_qos_policy.return_value = qos_policy
+
arglist = [
'--network',
self._port.network_id,
@@ -701,9 +697,7 @@ class TestCreatePort(TestPort):
else:
verifylist.append(('no_tag', True))
- self.network_client.find_extension = mock.Mock(
- return_value=add_tags_in_post
- )
+ self.network_client.find_extension.return_value = add_tags_in_post
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
@@ -1170,7 +1164,7 @@ class TestDeletePort(TestPort):
def setUp(self):
super().setUp()
- self.network_client.delete_port = mock.Mock(return_value=None)
+ self.network_client.delete_port.return_value = None
self.network_client.find_port = network_fakes.get_ports(
ports=self._ports
)
@@ -1223,7 +1217,7 @@ class TestDeletePort(TestPort):
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
find_mock_result = [self._ports[0], exceptions.CommandError]
- self.network_client.find_port = mock.Mock(side_effect=find_mock_result)
+ self.network_client.find_port.side_effect = find_mock_result
try:
self.cmd.take_action(parsed_args)
@@ -1324,7 +1318,7 @@ class TestListPort(compute_fakes.FakeClientMixin, TestPort):
def setUp(self):
super().setUp()
- self.network_client.ports = mock.Mock(return_value=self._ports)
+ self.network_client.ports.return_value = self._ports
fake_router = network_fakes.create_one_router(
{
'id': 'fake-router-id',
@@ -1335,8 +1329,8 @@ class TestListPort(compute_fakes.FakeClientMixin, TestPort):
'id': 'fake-network-id',
}
)
- self.network_client.find_router = mock.Mock(return_value=fake_router)
- self.network_client.find_network = mock.Mock(return_value=fake_network)
+ self.network_client.find_router.return_value = fake_router
+ self.network_client.find_network.return_value = fake_network
# Get the command object to test
self.cmd = port.ListPort(self.app, None)
@@ -1550,9 +1544,8 @@ class TestListPort(compute_fakes.FakeClientMixin, TestPort):
self.fake_subnet = network_fakes.FakeSubnet.create_one_subnet(
{'id': subnet_id}
)
- self.network_client.find_subnet = mock.Mock(
- return_value=self.fake_subnet
- )
+ self.network_client.find_subnet.return_value = self.fake_subnet
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
@@ -1579,9 +1572,8 @@ class TestListPort(compute_fakes.FakeClientMixin, TestPort):
self.fake_subnet = network_fakes.FakeSubnet.create_one_subnet(
{'id': subnet_id}
)
- self.network_client.find_subnet = mock.Mock(
- return_value=self.fake_subnet
- )
+ self.network_client.find_subnet.return_value = self.fake_subnet
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
@@ -1616,9 +1608,8 @@ class TestListPort(compute_fakes.FakeClientMixin, TestPort):
'fields': LIST_FIELDS_TO_RETRIEVE,
}
)
- self.network_client.find_subnet = mock.Mock(
- return_value=self.fake_subnet
- )
+ self.network_client.find_subnet.return_value = self.fake_subnet
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
@@ -1825,12 +1816,11 @@ class TestSetPort(TestPort):
def setUp(self):
super().setUp()
self.fake_subnet = network_fakes.FakeSubnet.create_one_subnet()
- self.network_client.find_subnet = mock.Mock(
- return_value=self.fake_subnet
- )
- self.network_client.find_port = mock.Mock(return_value=self._port)
- self.network_client.update_port = mock.Mock(return_value=None)
- self.network_client.set_tags = mock.Mock(return_value=None)
+ self.network_client.find_subnet.return_value = self.fake_subnet
+
+ self.network_client.find_port.return_value = self._port
+ self.network_client.update_port.return_value = None
+ self.network_client.set_tags.return_value = None
# Get the command object to test
self.cmd = port.SetPort(self.app, None)
@@ -1853,7 +1843,7 @@ class TestSetPort(TestPort):
_testport = network_fakes.create_one_port(
{'fixed_ips': [{'ip_address': '0.0.0.1'}]}
)
- self.network_client.find_port = mock.Mock(return_value=_testport)
+ self.network_client.find_port.return_value = _testport
arglist = [
'--fixed-ip',
'ip-address=10.0.0.12',
@@ -1881,7 +1871,7 @@ class TestSetPort(TestPort):
_testport = network_fakes.create_one_port(
{'fixed_ips': [{'ip_address': '0.0.0.1'}]}
)
- self.network_client.find_port = mock.Mock(return_value=_testport)
+ self.network_client.find_port.return_value = _testport
arglist = [
'--fixed-ip',
'ip-address=10.0.0.12',
@@ -1931,7 +1921,7 @@ class TestSetPort(TestPort):
_testport = network_fakes.create_one_port(
{'binding_profile': {'lok_i': 'visi_on'}}
)
- self.network_client.find_port = mock.Mock(return_value=_testport)
+ self.network_client.find_port.return_value = _testport
arglist = [
'--binding-profile',
'lok_i=than_os',
@@ -1956,7 +1946,7 @@ class TestSetPort(TestPort):
_testport = network_fakes.create_one_port(
{'mac_address': '11:22:33:44:55:66'}
)
- self.network_client.find_port = mock.Mock(return_value=_testport)
+ self.network_client.find_port.return_value = _testport
arglist = [
'--mac-address',
'66:55:44:33:22:11',
@@ -2097,7 +2087,7 @@ class TestSetPort(TestPort):
def test_set_port_security_group(self):
sg = network_fakes.create_one_security_group()
- self.network_client.find_security_group = mock.Mock(return_value=sg)
+ self.network_client.find_security_group.return_value = sg
arglist = [
'--security-group',
sg.id,
@@ -2122,13 +2112,12 @@ class TestSetPort(TestPort):
sg_1 = network_fakes.create_one_security_group()
sg_2 = network_fakes.create_one_security_group()
sg_3 = network_fakes.create_one_security_group()
- self.network_client.find_security_group = mock.Mock(
- side_effect=[sg_2, sg_3]
- )
+ self.network_client.find_security_group.side_effect = [sg_2, sg_3]
+
_testport = network_fakes.create_one_port(
{'security_group_ids': [sg_1.id]}
)
- self.network_client.find_port = mock.Mock(return_value=_testport)
+ self.network_client.find_port.return_value = _testport
arglist = [
'--security-group',
sg_2.id,
@@ -2177,8 +2166,8 @@ class TestSetPort(TestPort):
_testport = network_fakes.create_one_port(
{'security_group_ids': [sg1.id]}
)
- self.network_client.find_port = mock.Mock(return_value=_testport)
- self.network_client.find_security_group = mock.Mock(return_value=sg2)
+ self.network_client.find_port.return_value = _testport
+ self.network_client.find_security_group.return_value = sg2
arglist = [
'--security-group',
sg2.id,
@@ -2226,7 +2215,7 @@ class TestSetPort(TestPort):
_testport = network_fakes.create_one_port(
{'allowed_address_pairs': [{'ip_address': '192.168.1.123'}]}
)
- self.network_client.find_port = mock.Mock(return_value=_testport)
+ self.network_client.find_port.return_value = _testport
arglist = [
'--allowed-address',
'ip-address=192.168.1.45',
@@ -2255,7 +2244,7 @@ class TestSetPort(TestPort):
_testport = network_fakes.create_one_port(
{'allowed_address_pairs': [{'ip_address': '192.168.1.123'}]}
)
- self.network_client.find_port = mock.Mock(return_value=_testport)
+ self.network_client.find_port.return_value = _testport
arglist = [
'--allowed-address',
'ip-address=192.168.1.45',
@@ -2372,11 +2361,10 @@ class TestSetPort(TestPort):
def test_set_port_with_qos(self):
qos_policy = network_fakes.create_one_qos_policy()
- self.network_client.find_qos_policy = mock.Mock(
- return_value=qos_policy
- )
+ self.network_client.find_qos_policy.return_value = qos_policy
+
_testport = network_fakes.create_one_port({'qos_policy_id': None})
- self.network_client.find_port = mock.Mock(return_value=_testport)
+ self.network_client.find_port.return_value = _testport
arglist = [
'--qos-policy',
qos_policy.id,
@@ -2400,7 +2388,7 @@ class TestSetPort(TestPort):
def test_set_port_data_plane_status(self):
_testport = network_fakes.create_one_port({'data_plane_status': None})
- self.network_client.find_port = mock.Mock(return_value=_testport)
+ self.network_client.find_port.return_value = _testport
arglist = [
'--data-plane-status',
'ACTIVE',
@@ -2546,10 +2534,12 @@ class TestSetPort(TestPort):
def test_set_hints_valid_alias_value(self):
testport = network_fakes.create_one_port()
- self.network_client.find_port = mock.Mock(return_value=testport)
- self.network_client.find_extension = mock.Mock(
- return_value=['port-hints', 'port-hint-ovs-tx-steering']
- )
+ self.network_client.find_port.return_value = testport
+ self.network_client.find_extension.return_value = [
+ 'port-hints',
+ 'port-hint-ovs-tx-steering',
+ ]
+
arglist = [
'--hint',
'ovs-tx-steering=hash',
@@ -2574,10 +2564,12 @@ class TestSetPort(TestPort):
def test_set_hints_valid_json(self):
testport = network_fakes.create_one_port()
- self.network_client.find_port = mock.Mock(return_value=testport)
- self.network_client.find_extension = mock.Mock(
- return_value=['port-hints', 'port-hint-ovs-tx-steering']
- )
+ self.network_client.find_port.return_value = testport
+ self.network_client.find_extension.return_value = [
+ 'port-hints',
+ 'port-hint-ovs-tx-steering',
+ ]
+
arglist = [
'--hint',
'{"openvswitch": {"other_config": {"tx-steering": "hash"}}}',
@@ -2670,7 +2662,7 @@ class TestShowPort(TestPort):
def setUp(self):
super().setUp()
- self.network_client.find_port = mock.Mock(return_value=self._port)
+ self.network_client.find_port.return_value = self._port
# Get the command object to test
self.cmd = port.ShowPort(self.app, None)
@@ -2731,12 +2723,11 @@ class TestUnsetPort(TestPort):
self.fake_subnet = network_fakes.FakeSubnet.create_one_subnet(
{'id': '042eb10a-3a18-4658-ab-cf47c8d03152'}
)
- self.network_client.find_subnet = mock.Mock(
- return_value=self.fake_subnet
- )
- self.network_client.find_port = mock.Mock(return_value=self._testport)
- self.network_client.update_port = mock.Mock(return_value=None)
- self.network_client.set_tags = mock.Mock(return_value=None)
+ self.network_client.find_subnet.return_value = self.fake_subnet
+
+ self.network_client.find_port.return_value = self._testport
+ self.network_client.update_port.return_value = None
+ self.network_client.set_tags.return_value = None
# Get the command object to test
self.cmd = port.UnsetPort(self.app, None)
@@ -2826,10 +2817,9 @@ class TestUnsetPort(TestPort):
_fake_port = network_fakes.create_one_port(
{'security_group_ids': [_fake_sg1.id, _fake_sg2.id]}
)
- self.network_client.find_port = mock.Mock(return_value=_fake_port)
- self.network_client.find_security_group = mock.Mock(
- return_value=_fake_sg2
- )
+ self.network_client.find_port.return_value = _fake_port
+ self.network_client.find_security_group.return_value = _fake_sg2
+
arglist = [
'--security-group',
_fake_sg2.id,
@@ -2854,9 +2844,8 @@ class TestUnsetPort(TestPort):
_fake_port = network_fakes.create_one_port(
{'security_group_ids': [_fake_sg1.id]}
)
- self.network_client.find_security_group = mock.Mock(
- return_value=_fake_sg2
- )
+ self.network_client.find_security_group.return_value = _fake_sg2
+
arglist = [
'--security-group',
_fake_sg2.id,
@@ -2875,7 +2864,7 @@ class TestUnsetPort(TestPort):
_fake_port = network_fakes.create_one_port(
{'allowed_address_pairs': [{'ip_address': '192.168.1.123'}]}
)
- self.network_client.find_port = mock.Mock(return_value=_fake_port)
+ self.network_client.find_port.return_value = _fake_port
arglist = [
'--allowed-address',
'ip-address=192.168.1.123',
@@ -2901,7 +2890,7 @@ class TestUnsetPort(TestPort):
_fake_port = network_fakes.create_one_port(
{'allowed_address_pairs': [{'ip_address': '192.168.1.123'}]}
)
- self.network_client.find_port = mock.Mock(return_value=_fake_port)
+ self.network_client.find_port.return_value = _fake_port
arglist = [
'--allowed-address',
'ip-address=192.168.1.45',
@@ -2920,7 +2909,7 @@ class TestUnsetPort(TestPort):
_fake_port = network_fakes.create_one_port(
{'data_plane_status': 'ACTIVE'}
)
- self.network_client.find_port = mock.Mock(return_value=_fake_port)
+ self.network_client.find_port.return_value = _fake_port
arglist = [
'--data-plane-status',
_fake_port.name,
@@ -2973,7 +2962,7 @@ class TestUnsetPort(TestPort):
_fake_port = network_fakes.create_one_port(
{'numa_affinity_policy': 'required'}
)
- self.network_client.find_port = mock.Mock(return_value=_fake_port)
+ self.network_client.find_port.return_value = _fake_port
arglist = [
'--numa-policy',
_fake_port.name,
@@ -2997,7 +2986,7 @@ class TestUnsetPort(TestPort):
def test_unset_hints(self):
testport = network_fakes.create_one_port()
- self.network_client.find_port = mock.Mock(return_value=testport)
+ self.network_client.find_port.return_value = testport
arglist = [
'--hints',
testport.name,
@@ -3017,7 +3006,7 @@ class TestUnsetPort(TestPort):
def test_unset_device(self):
testport = network_fakes.create_one_port()
- self.network_client.find_port = mock.Mock(return_value=testport)
+ self.network_client.find_port.return_value = testport
arglist = [
'--device',
testport.name,
@@ -3037,7 +3026,7 @@ class TestUnsetPort(TestPort):
def test_unset_device_owner(self):
testport = network_fakes.create_one_port()
- self.network_client.find_port = mock.Mock(return_value=testport)
+ self.network_client.find_port.return_value = testport
arglist = [
'--device-owner',
testport.name,
diff --git a/openstackclient/tests/unit/network/v2/test_router.py b/openstackclient/tests/unit/network/v2/test_router.py
index 3536583..6ebb780 100644
--- a/openstackclient/tests/unit/network/v2/test_router.py
+++ b/openstackclient/tests/unit/network/v2/test_router.py
@@ -39,8 +39,8 @@ class TestAddPortToRouter(TestRouter):
def setUp(self):
super().setUp()
- self.network_client.find_router = mock.Mock(return_value=self._router)
- self.network_client.find_port = mock.Mock(return_value=self._port)
+ self.network_client.find_router.return_value = self._router
+ self.network_client.find_port.return_value = self._port
self.cmd = router.AddPortToRouter(self.app, None)
@@ -87,8 +87,8 @@ class TestAddSubnetToRouter(TestRouter):
def setUp(self):
super().setUp()
- self.network_client.find_router = mock.Mock(return_value=self._router)
- self.network_client.find_subnet = mock.Mock(return_value=self._subnet)
+ self.network_client.find_router.return_value = self._router
+ self.network_client.find_subnet.return_value = self._subnet
self.cmd = router.AddSubnetToRouter(self.app, None)
@@ -172,12 +172,11 @@ class TestCreateRouter(TestRouter):
def setUp(self):
super().setUp()
- self.network_client.create_router = mock.Mock(
- return_value=self.new_router
- )
- self.network_client.set_tags = mock.Mock(return_value=None)
- self.network_client.find_extension = mock.Mock(
- side_effect=lambda name: self._extensions.get(name)
+ self.network_client.create_router.return_value = self.new_router
+
+ self.network_client.set_tags.return_value = None
+ self.network_client.find_extension.side_effect = (
+ lambda name, ignore_missing=True: self._extensions.get(name)
)
# Get the command object to test
self.cmd = router.CreateRouter(self.app, None)
@@ -222,8 +221,8 @@ class TestCreateRouter(TestRouter):
def test_create_with_gateway(self):
_network = network_fakes.create_one_network()
_subnet = network_fakes.FakeSubnet.create_one_subnet()
- self.network_client.find_network = mock.Mock(return_value=_network)
- self.network_client.find_subnet = mock.Mock(return_value=_subnet)
+ self.network_client.find_network.return_value = _network
+ self.network_client.find_subnet.return_value = _subnet
arglist = [
self.new_router.name,
'--external-gateway',
@@ -392,7 +391,7 @@ class TestCreateRouter(TestRouter):
def test_create_with_flavor_id_id(self):
_flavor = network_fakes.create_one_network_flavor()
- self.network_client.find_flavor = mock.Mock(return_value=_flavor)
+ self.network_client.find_flavor.return_value = _flavor
arglist = [
self.new_router.name,
'--flavor-id',
@@ -419,7 +418,7 @@ class TestCreateRouter(TestRouter):
def test_create_with_flavor_id_name(self):
_flavor = network_fakes.create_one_network_flavor()
- self.network_client.find_flavor = mock.Mock(return_value=_flavor)
+ self.network_client.find_flavor.return_value = _flavor
arglist = [self.new_router.name, '--flavor-id', _flavor.name]
verifylist = [
('name', self.new_router.name),
@@ -442,7 +441,7 @@ class TestCreateRouter(TestRouter):
def test_create_with_flavor_id(self):
_flavor = network_fakes.create_one_network_flavor()
- self.network_client.find_flavor = mock.Mock(return_value=_flavor)
+ self.network_client.find_flavor.return_value = _flavor
arglist = [
self.new_router.name,
'--flavor',
@@ -469,7 +468,7 @@ class TestCreateRouter(TestRouter):
def test_create_with_flavor_name(self):
_flavor = network_fakes.create_one_network_flavor()
- self.network_client.find_flavor = mock.Mock(return_value=_flavor)
+ self.network_client.find_flavor.return_value = _flavor
arglist = [self.new_router.name, '--flavor', _flavor.name]
verifylist = [
('name', self.new_router.name),
@@ -491,11 +490,12 @@ class TestCreateRouter(TestRouter):
self.assertCountEqual(self.data, data)
def test_create_with_enable_default_route_bfd(self):
- self.network_client.find_extension = mock.Mock(
- return_value=network_fakes.create_one_extension(
+ self._extensions = {
+ 'external-gateway-multihoming': network_fakes.create_one_extension(
attrs={'name': 'external-gateway-multihoming'}
- )
- )
+ ),
+ }
+
arglist = [self.new_router.name, '--enable-default-route-bfd']
verifylist = [
('name', self.new_router.name),
@@ -525,11 +525,12 @@ class TestCreateRouter(TestRouter):
)
def test_create_with_enable_default_route_ecmp(self):
- self.network_client.find_extension = mock.Mock(
- return_value=network_fakes.create_one_extension(
+ self._extensions = {
+ 'external-gateway-multihoming': network_fakes.create_one_extension(
attrs={'name': 'external-gateway-multihoming'}
- )
- )
+ ),
+ }
+
arglist = [self.new_router.name, '--enable-default-route-ecmp']
verifylist = [
('name', self.new_router.name),
@@ -560,11 +561,10 @@ class TestCreateRouter(TestRouter):
def test_create_with_qos_policy(self):
_network = network_fakes.create_one_network()
- self.network_client.find_network = mock.Mock(return_value=_network)
+ self.network_client.find_network.return_value = _network
_qos_policy = network_fakes.create_one_qos_policy()
- self.network_client.find_qos_policy = mock.Mock(
- return_value=_qos_policy
- )
+ self.network_client.find_qos_policy.return_value = _qos_policy
+
arglist = [
self.new_router.name,
'--external-gateway',
@@ -595,9 +595,8 @@ class TestCreateRouter(TestRouter):
def test_create_with_qos_policy_no_external_gateway(self):
_qos_policy = network_fakes.create_one_qos_policy()
- self.network_client.find_qos_policy = mock.Mock(
- return_value=_qos_policy
- )
+ self.network_client.find_qos_policy.return_value = _qos_policy
+
arglist = [
self.new_router.name,
'--qos-policy',
@@ -625,7 +624,7 @@ class TestDeleteRouter(TestRouter):
def setUp(self):
super().setUp()
- self.network_client.delete_router = mock.Mock(return_value=None)
+ self.network_client.delete_router.return_value = None
self.network_client.find_router = network_fakes.get_routers(
self._routers
@@ -679,9 +678,7 @@ class TestDeleteRouter(TestRouter):
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
find_mock_result = [self._routers[0], exceptions.CommandError]
- self.network_client.find_router = mock.Mock(
- side_effect=find_mock_result
- )
+ self.network_client.find_router.side_effect = find_mock_result
try:
self.cmd.take_action(parsed_args)
@@ -786,21 +783,16 @@ class TestListRouter(TestRouter):
# Get the command object to test
self.cmd = router.ListRouter(self.app, None)
- self.network_client.agent_hosted_routers = mock.Mock(
- return_value=self.routers
- )
- self.network_client.routers = mock.Mock(return_value=self.routers)
- self.network_client.find_extension = mock.Mock(
- return_value=self.extensions
- )
- self.network_client.find_router = mock.Mock(
- return_value=self.routers[0]
- )
+ self.network_client.agent_hosted_routers.return_value = self.routers
+
+ self.network_client.routers.return_value = self.routers
+ self.network_client.find_extension.return_value = self.extensions
+
+ self.network_client.find_router.return_value = self.routers[0]
+
self._testagent = network_fakes.create_one_network_agent()
- self.network_client.get_agent = mock.Mock(return_value=self._testagent)
- self.network_client.get_router = mock.Mock(
- return_value=self.routers[0]
- )
+ self.network_client.get_agent.return_value = self._testagent
+ self.network_client.get_router.return_value = self.routers[0]
def test_router_list_no_options(self):
arglist = []
@@ -865,7 +857,7 @@ class TestListRouter(TestRouter):
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
# to mock, that no availability zone
- self.network_client.find_extension = mock.Mock(return_value=None)
+ self.network_client.find_extension.return_value = None
# In base command class Lister in cliff, abstract method take_action()
# returns a tuple containing the column names and an iterable
@@ -1044,8 +1036,8 @@ class TestRemovePortFromRouter(TestRouter):
def setUp(self):
super().setUp()
- self.network_client.find_router = mock.Mock(return_value=self._router)
- self.network_client.find_port = mock.Mock(return_value=self._port)
+ self.network_client.find_router.return_value = self._router
+ self.network_client.find_port.return_value = self._port
self.cmd = router.RemovePortFromRouter(self.app, None)
@@ -1089,8 +1081,8 @@ class TestRemoveSubnetFromRouter(TestRouter):
def setUp(self):
super().setUp()
- self.network_client.find_router = mock.Mock(return_value=self._router)
- self.network_client.find_subnet = mock.Mock(return_value=self._subnet)
+ self.network_client.find_router.return_value = self._router
+ self.network_client.find_subnet.return_value = self._subnet
self.cmd = router.RemoveSubnetFromRouter(self.app, None)
@@ -1129,11 +1121,12 @@ class TestAddExtraRoutesToRouter(TestRouter):
def setUp(self):
super().setUp()
- self.network_client.add_extra_routes_to_router = mock.Mock(
- return_value=self._router
+ self.network_client.add_extra_routes_to_router.return_value = (
+ self._router
)
+
self.cmd = router.AddExtraRoutesToRouter(self.app, None)
- self.network_client.find_router = mock.Mock(return_value=self._router)
+ self.network_client.find_router.return_value = self._router
def test_add_no_extra_route(self):
arglist = [
@@ -1218,11 +1211,12 @@ class TestRemoveExtraRoutesFromRouter(TestRouter):
def setUp(self):
super().setUp()
- self.network_client.remove_extra_routes_from_router = mock.Mock(
- return_value=self._router
+ self.network_client.remove_extra_routes_from_router.return_value = (
+ self._router
)
+
self.cmd = router.RemoveExtraRoutesFromRouter(self.app, None)
- self.network_client.find_router = mock.Mock(return_value=self._router)
+ self.network_client.find_router.return_value = self._router
def test_remove_no_extra_route(self):
arglist = [
@@ -1316,15 +1310,14 @@ class TestSetRouter(TestRouter):
def setUp(self):
super().setUp()
- self.network_client.update_router = mock.Mock(return_value=None)
- self.network_client.set_tags = mock.Mock(return_value=None)
- self.network_client.find_router = mock.Mock(return_value=self._router)
- self.network_client.find_network = mock.Mock(
- return_value=self._network
- )
- self.network_client.find_subnet = mock.Mock(return_value=self._subnet)
- self.network_client.find_extension = mock.Mock(
- side_effect=lambda name: self._extensions.get(name)
+ self.network_client.update_router.return_value = None
+ self.network_client.set_tags.return_value = None
+ self.network_client.find_router.return_value = self._router
+ self.network_client.find_network.return_value = self._network
+
+ self.network_client.find_subnet.return_value = self._subnet
+ self.network_client.find_extension.side_effect = (
+ lambda name, ignore_missing=True: self._extensions.get(name)
)
# Get the command object to test
self.cmd = router.SetRouter(self.app, None)
@@ -1459,7 +1452,7 @@ class TestSetRouter(TestRouter):
_testrouter = network_fakes.create_one_router(
{'routes': [{"destination": "10.0.0.2", "nexthop": "1.1.1.1"}]}
)
- self.network_client.find_router = mock.Mock(return_value=_testrouter)
+ self.network_client.find_router.return_value = _testrouter
arglist = [
_testrouter.name,
'--route',
@@ -1667,9 +1660,8 @@ class TestSetRouter(TestRouter):
def test_set_gateway_ip_qos(self):
qos_policy = network_fakes.create_one_qos_policy()
- self.network_client.find_qos_policy = mock.Mock(
- return_value=qos_policy
- )
+ self.network_client.find_qos_policy.return_value = qos_policy
+
arglist = [
"--external-gateway",
self._network.id,
@@ -1724,9 +1716,8 @@ class TestSetRouter(TestRouter):
def test_set_unset_gateway_ip_qos(self):
qos_policy = network_fakes.create_one_qos_policy()
- self.network_client.find_qos_policy = mock.Mock(
- return_value=qos_policy
- )
+ self.network_client.find_qos_policy.return_value = qos_policy
+
arglist = [
"--external-gateway",
self._network.id,
@@ -1752,11 +1743,10 @@ class TestSetRouter(TestRouter):
def test_set_gateway_ip_qos_no_gateway(self):
qos_policy = network_fakes.create_one_qos_policy()
- self.network_client.find_qos_policy = mock.Mock(
- return_value=qos_policy
- )
+ self.network_client.find_qos_policy.return_value = qos_policy
+
router = network_fakes.create_one_router()
- self.network_client.find_router = mock.Mock(return_value=router)
+ self.network_client.find_router.return_value = router
arglist = [
"--qos-policy",
qos_policy.id,
@@ -1774,11 +1764,10 @@ class TestSetRouter(TestRouter):
def test_unset_gateway_ip_qos_no_gateway(self):
qos_policy = network_fakes.create_one_qos_policy()
- self.network_client.find_qos_policy = mock.Mock(
- return_value=qos_policy
- )
+ self.network_client.find_qos_policy.return_value = qos_policy
+
router = network_fakes.create_one_router()
- self.network_client.find_router = mock.Mock(return_value=router)
+ self.network_client.find_router.return_value = router
arglist = [
"--no-qos-policy",
router.id,
@@ -1857,8 +1846,8 @@ class TestShowRouter(TestRouter):
def setUp(self):
super().setUp()
- self.network_client.find_router = mock.Mock(return_value=self._router)
- self.network_client.ports = mock.Mock(return_value=[self._port])
+ self.network_client.find_router.return_value = self._router
+ self.network_client.ports.return_value = [self._port]
# Get the command object to test
self.cmd = router.ShowRouter(self.app, None)
@@ -1961,18 +1950,16 @@ class TestUnsetRouter(TestRouter):
}
)
self.fake_subnet = network_fakes.FakeSubnet.create_one_subnet()
- self.network_client.find_router = mock.Mock(
- return_value=self._testrouter
- )
- self.network_client.update_router = mock.Mock(return_value=None)
- self.network_client.set_tags = mock.Mock(return_value=None)
+ self.network_client.find_router.return_value = self._testrouter
+
+ self.network_client.update_router.return_value = None
+ self.network_client.set_tags.return_value = None
self._extensions = {'fake': network_fakes.create_one_extension()}
- self.network_client.find_extension = mock.Mock(
- side_effect=lambda name: self._extensions.get(name)
- )
- self.network_client.remove_external_gateways = mock.Mock(
- return_value=None
+ self.network_client.find_extension.side_effect = (
+ lambda name, ignore_missing=True: self._extensions.get(name)
)
+ self.network_client.remove_external_gateways.return_value = None
+
# Get the command object to test
self.cmd = router.UnsetRouter(self.app, None)
@@ -2109,11 +2096,10 @@ class TestUnsetRouter(TestRouter):
def test_unset_gateway_ip_qos_no_network(self):
qos_policy = network_fakes.create_one_qos_policy()
- self.network_client.find_qos_policy = mock.Mock(
- return_value=qos_policy
- )
+ self.network_client.find_qos_policy.return_value = qos_policy
+
router = network_fakes.create_one_router()
- self.network_client.find_router = mock.Mock(return_value=router)
+ self.network_client.find_router.return_value = router
arglist = [
"--qos-policy",
router.id,
@@ -2129,13 +2115,12 @@ class TestUnsetRouter(TestRouter):
def test_unset_gateway_ip_qos_no_qos(self):
qos_policy = network_fakes.create_one_qos_policy()
- self.network_client.find_qos_policy = mock.Mock(
- return_value=qos_policy
- )
+ self.network_client.find_qos_policy.return_value = qos_policy
+
router = network_fakes.create_one_router(
{"external_gateway_info": {"network_id": "fake-id"}}
)
- self.network_client.find_router = mock.Mock(return_value=router)
+ self.network_client.find_router.return_value = router
arglist = [
"--qos-policy",
router.id,
@@ -2172,10 +2157,10 @@ class TestGatewayOps(TestRouter):
attrs={'name': 'external-gateway-multihoming'}
)
}
- self.network_client.find_extension = mock.Mock(
- side_effect=lambda name: self._extensions.get(name)
+ self.network_client.find_extension.side_effect = (
+ lambda name, ignore_missing=True: self._extensions.get(name)
)
- self.network_client.find_router = mock.Mock(return_value=self._router)
+ self.network_client.find_router.return_value = self._router
def _find_network(name_or_id, ignore_missing):
for network in self._networks:
@@ -2185,15 +2170,12 @@ class TestGatewayOps(TestRouter):
return None
raise Exception('Test resource not found')
- self.network_client.find_network = mock.Mock(side_effect=_find_network)
+ self.network_client.find_network.side_effect = _find_network
- self.network_client.find_subnet = mock.Mock(return_value=self._subnet)
- self.network_client.add_external_gateways = mock.Mock(
- return_value=None
- )
- self.network_client.remove_external_gateways = mock.Mock(
- return_value=None
- )
+ self.network_client.find_subnet.return_value = self._subnet
+ self.network_client.add_external_gateways.return_value = None
+
+ self.network_client.remove_external_gateways.return_value = None
class TestCreateMultipleGateways(TestGatewayOps):
@@ -2223,13 +2205,10 @@ class TestCreateMultipleGateways(TestGatewayOps):
self._second_network = network_fakes.create_one_network()
self._networks.append(self._second_network)
- self.network_client.create_router = mock.Mock(
- return_value=self._router
- )
- self.network_client.update_router = mock.Mock(return_value=None)
- self.network_client.update_external_gateways = mock.Mock(
- return_value=None
- )
+ self.network_client.create_router.return_value = self._router
+
+ self.network_client.update_router.return_value = None
+ self.network_client.update_external_gateways.return_value = None
self._data = (
router.AdminStateColumn(self._router.is_admin_state_up),
@@ -2353,10 +2332,9 @@ class TestUpdateMultipleGateways(TestGatewayOps):
self._second_network = network_fakes.create_one_network()
self._networks.append(self._second_network)
- self.network_client.update_router = mock.Mock(return_value=None)
- self.network_client.update_external_gateways = mock.Mock(
- return_value=None
- )
+ self.network_client.update_router.return_value = None
+ self.network_client.update_external_gateways.return_value = None
+
self.cmd = router.SetRouter(self.app, None)
def test_update_one_gateway(self):
diff --git a/openstackclient/tests/unit/network/v2/test_security_group_network.py b/openstackclient/tests/unit/network/v2/test_security_group_network.py
index 9bf1f67..c5ccf62 100644
--- a/openstackclient/tests/unit/network/v2/test_security_group_network.py
+++ b/openstackclient/tests/unit/network/v2/test_security_group_network.py
@@ -11,7 +11,6 @@
# under the License.
#
-from unittest import mock
from unittest.mock import call
from osc_lib import exceptions
@@ -69,13 +68,13 @@ class TestCreateSecurityGroupNetwork(TestSecurityGroupNetwork):
def setUp(self):
super().setUp()
- self.network_client.create_security_group = mock.Mock(
- return_value=self._security_group
+ self.network_client.create_security_group.return_value = (
+ self._security_group
)
self.projects_mock.get.return_value = self.project
self.domains_mock.get.return_value = self.domain
- self.network_client.set_tags = mock.Mock(return_value=None)
+ self.network_client.set_tags.return_value = None
# Get the command object to test
self.cmd = security_group.CreateSecurityGroup(self.app, None)
@@ -185,9 +184,7 @@ class TestDeleteSecurityGroupNetwork(TestSecurityGroupNetwork):
def setUp(self):
super().setUp()
- self.network_client.delete_security_group = mock.Mock(
- return_value=None
- )
+ self.network_client.delete_security_group.return_value = None
self.network_client.find_security_group = (
network_fakes.get_security_groups(self._security_groups)
@@ -245,9 +242,7 @@ class TestDeleteSecurityGroupNetwork(TestSecurityGroupNetwork):
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
find_mock_result = [self._security_groups[0], exceptions.CommandError]
- self.network_client.find_security_group = mock.Mock(
- side_effect=find_mock_result
- )
+ self.network_client.find_security_group.side_effect = find_mock_result
try:
self.cmd.take_action(parsed_args)
@@ -295,8 +290,8 @@ class TestListSecurityGroupNetwork(TestSecurityGroupNetwork):
def setUp(self):
super().setUp()
- self.network_client.security_groups = mock.Mock(
- return_value=self._security_groups
+ self.network_client.security_groups.return_value = (
+ self._security_groups
)
# Get the command object to test
@@ -423,14 +418,13 @@ class TestSetSecurityGroupNetwork(TestSecurityGroupNetwork):
def setUp(self):
super().setUp()
- self.network_client.update_security_group = mock.Mock(
- return_value=None
- )
+ self.network_client.update_security_group.return_value = None
- self.network_client.find_security_group = mock.Mock(
- return_value=self._security_group
+ self.network_client.find_security_group.return_value = (
+ self._security_group
)
- self.network_client.set_tags = mock.Mock(return_value=None)
+
+ self.network_client.set_tags.return_value = None
# Get the command object to test
self.cmd = security_group.SetSecurityGroup(self.app, None)
@@ -557,8 +551,8 @@ class TestShowSecurityGroupNetwork(TestSecurityGroupNetwork):
def setUp(self):
super().setUp()
- self.network_client.find_security_group = mock.Mock(
- return_value=self._security_group
+ self.network_client.find_security_group.return_value = (
+ self._security_group
)
# Get the command object to test
@@ -596,14 +590,13 @@ class TestUnsetSecurityGroupNetwork(TestSecurityGroupNetwork):
def setUp(self):
super().setUp()
- self.network_client.update_security_group = mock.Mock(
- return_value=None
- )
+ self.network_client.update_security_group.return_value = None
- self.network_client.find_security_group = mock.Mock(
- return_value=self._security_group
+ self.network_client.find_security_group.return_value = (
+ self._security_group
)
- self.network_client.set_tags = mock.Mock(return_value=None)
+
+ self.network_client.set_tags.return_value = None
# Get the command object to test
self.cmd = security_group.UnsetSecurityGroup(self.app, None)
diff --git a/openstackclient/tests/unit/network/v2/test_security_group_rule_network.py b/openstackclient/tests/unit/network/v2/test_security_group_rule_network.py
index d5630c3..920e891 100644
--- a/openstackclient/tests/unit/network/v2/test_security_group_rule_network.py
+++ b/openstackclient/tests/unit/network/v2/test_security_group_rule_network.py
@@ -11,7 +11,6 @@
# under the License.
#
-from unittest import mock
from unittest.mock import call
from osc_lib import exceptions
@@ -69,9 +68,10 @@ class TestCreateSecurityGroupRuleNetwork(TestSecurityGroupRuleNetwork):
self._security_group_rule = (
network_fakes.create_one_security_group_rule(attrs)
)
- self.network_client.create_security_group_rule = mock.Mock(
- return_value=self._security_group_rule
+ self.network_client.create_security_group_rule.return_value = (
+ self._security_group_rule
)
+
self.expected_data = (
self._security_group_rule.created_at,
self._security_group_rule.description,
@@ -93,12 +93,12 @@ class TestCreateSecurityGroupRuleNetwork(TestSecurityGroupRuleNetwork):
def setUp(self):
super().setUp()
- self.network_client.find_security_group = mock.Mock(
- return_value=self._security_group
+ self.network_client.find_security_group.return_value = (
+ self._security_group
)
- self.network_client.find_address_group = mock.Mock(
- return_value=self._address_group
+ self.network_client.find_address_group.return_value = (
+ self._address_group
)
self.projects_mock.get.return_value = self.project
@@ -970,9 +970,7 @@ class TestDeleteSecurityGroupRuleNetwork(TestSecurityGroupRuleNetwork):
def setUp(self):
super().setUp()
- self.network_client.delete_security_group_rule = mock.Mock(
- return_value=None
- )
+ self.network_client.delete_security_group_rule.return_value = None
self.network_client.find_security_group_rule = (
network_fakes.get_security_group_rules(self._security_group_rules)
@@ -1030,8 +1028,8 @@ class TestDeleteSecurityGroupRuleNetwork(TestSecurityGroupRuleNetwork):
self._security_group_rules[0],
exceptions.CommandError,
]
- self.network_client.find_security_group_rule = mock.Mock(
- side_effect=find_mock_result
+ self.network_client.find_security_group_rule.side_effect = (
+ find_mock_result
)
try:
@@ -1134,11 +1132,12 @@ class TestListSecurityGroupRuleNetwork(TestSecurityGroupRuleNetwork):
def setUp(self):
super().setUp()
- self.network_client.find_security_group = mock.Mock(
- return_value=self._security_group
+ self.network_client.find_security_group.return_value = (
+ self._security_group
)
- self.network_client.security_group_rules = mock.Mock(
- return_value=self._security_group_rules
+
+ self.network_client.security_group_rules.return_value = (
+ self._security_group_rules
)
# Get the command object to test
@@ -1344,8 +1343,8 @@ class TestShowSecurityGroupRuleNetwork(TestSecurityGroupRuleNetwork):
def setUp(self):
super().setUp()
- self.network_client.find_security_group_rule = mock.Mock(
- return_value=self._security_group_rule
+ self.network_client.find_security_group_rule.return_value = (
+ self._security_group_rule
)
# Get the command object to test
diff --git a/openstackclient/tests/unit/network/v2/test_subnet.py b/openstackclient/tests/unit/network/v2/test_subnet.py
index 8b82074..e59168e 100644
--- a/openstackclient/tests/unit/network/v2/test_subnet.py
+++ b/openstackclient/tests/unit/network/v2/test_subnet.py
@@ -11,7 +11,6 @@
# under the License.
#
-from unittest import mock
from unittest.mock import call
from osc_lib.cli import format_columns
@@ -266,19 +265,14 @@ class TestCreateSubnet(TestSubnet):
self.domains_mock.get.return_value = self.domain
# Mock SDK calls for all tests.
- self.network_client.create_subnet = mock.Mock(
- return_value=self._subnet
- )
- self.network_client.set_tags = mock.Mock(return_value=None)
- self.network_client.find_network = mock.Mock(
- return_value=self._network
- )
- self.network_client.find_segment = mock.Mock(
- return_value=self._network_segment
- )
- self.network_client.find_subnet_pool = mock.Mock(
- return_value=self._subnet_pool
- )
+ self.network_client.create_subnet.return_value = self._subnet
+
+ self.network_client.set_tags.return_value = None
+ self.network_client.find_network.return_value = self._network
+
+ self.network_client.find_segment.return_value = self._network_segment
+
+ self.network_client.find_subnet_pool.return_value = self._subnet_pool
def test_create_no_options(self):
arglist = []
@@ -333,7 +327,7 @@ class TestCreateSubnet(TestSubnet):
def test_create_from_subnet_pool_options(self):
# Mock SDK calls for this test.
self.network_client.create_subnet.return_value = self._subnet_from_pool
- self.network_client.set_tags = mock.Mock(return_value=None)
+ self.network_client.set_tags.return_value = None
self._network.id = self._subnet_from_pool.network_id
arglist = [
@@ -721,7 +715,7 @@ class TestDeleteSubnet(TestSubnet):
def setUp(self):
super().setUp()
- self.network_client.delete_subnet = mock.Mock(return_value=None)
+ self.network_client.delete_subnet.return_value = None
self.network_client.find_subnet = network_fakes.FakeSubnet.get_subnets(
self._subnets
@@ -775,9 +769,7 @@ class TestDeleteSubnet(TestSubnet):
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
find_mock_result = [self._subnets[0], exceptions.CommandError]
- self.network_client.find_subnet = mock.Mock(
- side_effect=find_mock_result
- )
+ self.network_client.find_subnet.side_effect = find_mock_result
try:
self.cmd.take_action(parsed_args)
@@ -855,7 +847,7 @@ class TestListSubnet(TestSubnet):
# Get the command object to test
self.cmd = subnet_v2.ListSubnet(self.app, None)
- self.network_client.subnets = mock.Mock(return_value=self._subnet)
+ self.network_client.subnets.return_value = self._subnet
def test_subnet_list_no_options(self):
arglist = []
@@ -1019,7 +1011,7 @@ class TestListSubnet(TestSubnet):
def test_subnet_list_network(self):
network = network_fakes.create_one_network()
- self.network_client.find_network = mock.Mock(return_value=network)
+ self.network_client.find_network.return_value = network
arglist = [
'--network',
network.id,
@@ -1038,7 +1030,7 @@ class TestListSubnet(TestSubnet):
def test_subnet_list_gateway(self):
subnet = network_fakes.FakeSubnet.create_one_subnet()
- self.network_client.find_network = mock.Mock(return_value=subnet)
+ self.network_client.find_network.return_value = subnet
arglist = [
'--gateway',
subnet.gateway_ip,
@@ -1057,7 +1049,7 @@ class TestListSubnet(TestSubnet):
def test_subnet_list_name(self):
subnet = network_fakes.FakeSubnet.create_one_subnet()
- self.network_client.find_network = mock.Mock(return_value=subnet)
+ self.network_client.find_network.return_value = subnet
arglist = [
'--name',
subnet.name,
@@ -1076,7 +1068,7 @@ class TestListSubnet(TestSubnet):
def test_subnet_list_subnet_range(self):
subnet = network_fakes.FakeSubnet.create_one_subnet()
- self.network_client.find_network = mock.Mock(return_value=subnet)
+ self.network_client.find_network.return_value = subnet
arglist = [
'--subnet-range',
subnet.cidr,
@@ -1098,10 +1090,9 @@ class TestListSubnet(TestSubnet):
subnet = network_fakes.FakeSubnet.create_one_subnet(
{'subnetpool_id': subnet_pool.id}
)
- self.network_client.find_network = mock.Mock(return_value=subnet)
- self.network_client.find_subnet_pool = mock.Mock(
- return_value=subnet_pool
- )
+ self.network_client.find_network.return_value = subnet
+ self.network_client.find_subnet_pool.return_value = subnet_pool
+
arglist = [
'--subnet-pool',
subnet_pool.name,
@@ -1123,10 +1114,9 @@ class TestListSubnet(TestSubnet):
subnet = network_fakes.FakeSubnet.create_one_subnet(
{'subnetpool_id': subnet_pool.id}
)
- self.network_client.find_network = mock.Mock(return_value=subnet)
- self.network_client.find_subnet_pool = mock.Mock(
- return_value=subnet_pool
- )
+ self.network_client.find_network.return_value = subnet
+ self.network_client.find_subnet_pool.return_value = subnet_pool
+
arglist = [
'--subnet-pool',
subnet_pool.id,
@@ -1182,9 +1172,9 @@ class TestSetSubnet(TestSubnet):
def setUp(self):
super().setUp()
- self.network_client.update_subnet = mock.Mock(return_value=None)
- self.network_client.set_tags = mock.Mock(return_value=None)
- self.network_client.find_subnet = mock.Mock(return_value=self._subnet)
+ self.network_client.update_subnet.return_value = None
+ self.network_client.set_tags.return_value = None
+ self.network_client.find_subnet.return_value = self._subnet
self.cmd = subnet_v2.SetSubnet(self.app, None)
def test_set_this(self):
@@ -1263,7 +1253,7 @@ class TestSetSubnet(TestSubnet):
'service_types': ["network:router_gateway"],
}
)
- self.network_client.find_subnet = mock.Mock(return_value=_testsubnet)
+ self.network_client.find_subnet.return_value = _testsubnet
arglist = [
'--dns-nameserver',
'10.0.0.2',
@@ -1329,7 +1319,7 @@ class TestSetSubnet(TestSubnet):
'dns_nameservers': ["10.0.0.1"],
}
)
- self.network_client.find_subnet = mock.Mock(return_value=_testsubnet)
+ self.network_client.find_subnet.return_value = _testsubnet
arglist = [
'--host-route',
'destination=10.30.30.30/24,gateway=10.30.30.1',
@@ -1379,7 +1369,7 @@ class TestSetSubnet(TestSubnet):
'dns_nameservers': ['10.0.0.1'],
}
)
- self.network_client.find_subnet = mock.Mock(return_value=_testsubnet)
+ self.network_client.find_subnet.return_value = _testsubnet
arglist = [
'--no-host-route',
'--no-allocation-pool',
@@ -1448,8 +1438,8 @@ class TestSetSubnet(TestSubnet):
'segment_id': None,
}
)
- self.network_client.find_subnet = mock.Mock(return_value=_subnet)
- self.network_client.find_segment = mock.Mock(return_value=_segment)
+ self.network_client.find_subnet.return_value = _subnet
+ self.network_client.find_segment.return_value = _segment
arglist = ['--network-segment', _segment.id, _subnet.name]
verifylist = [('network_segment', _segment.id)]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -1514,7 +1504,7 @@ class TestShowSubnet(TestSubnet):
# Get the command object to test
self.cmd = subnet_v2.ShowSubnet(self.app, None)
- self.network_client.find_subnet = mock.Mock(return_value=self._subnet)
+ self.network_client.find_subnet.return_value = self._subnet
def test_show_no_options(self):
arglist = []
@@ -1572,11 +1562,10 @@ class TestUnsetSubnet(TestSubnet):
'tags': ['green', 'red'],
}
)
- self.network_client.find_subnet = mock.Mock(
- return_value=self._testsubnet
- )
- self.network_client.update_subnet = mock.Mock(return_value=None)
- self.network_client.set_tags = mock.Mock(return_value=None)
+ self.network_client.find_subnet.return_value = self._testsubnet
+
+ self.network_client.update_subnet.return_value = None
+ self.network_client.set_tags.return_value = None
# Get the command object to test
self.cmd = subnet_v2.UnsetSubnet(self.app, None)
diff --git a/openstackclient/tests/unit/network/v2/test_subnet_pool.py b/openstackclient/tests/unit/network/v2/test_subnet_pool.py
index 40aa1e9..013550e 100644
--- a/openstackclient/tests/unit/network/v2/test_subnet_pool.py
+++ b/openstackclient/tests/unit/network/v2/test_subnet_pool.py
@@ -10,7 +10,6 @@
# License for the specific language governing permissions and limitations
# under the License.
-from unittest import mock
from unittest.mock import call
from osc_lib.cli import format_columns
@@ -76,16 +75,15 @@ class TestCreateSubnetPool(TestSubnetPool):
def setUp(self):
super().setUp()
- self.network_client.create_subnet_pool = mock.Mock(
- return_value=self._subnet_pool
- )
- self.network_client.set_tags = mock.Mock(return_value=None)
+ self.network_client.create_subnet_pool.return_value = self._subnet_pool
+
+ self.network_client.set_tags.return_value = None
# Get the command object to test
self.cmd = subnet_pool.CreateSubnetPool(self.app, None)
- self.network_client.find_address_scope = mock.Mock(
- return_value=self._address_scope
+ self.network_client.find_address_scope.return_value = (
+ self._address_scope
)
self.projects_mock.get.return_value = self.project
@@ -387,7 +385,7 @@ class TestDeleteSubnetPool(TestSubnetPool):
def setUp(self):
super().setUp()
- self.network_client.delete_subnet_pool = mock.Mock(return_value=None)
+ self.network_client.delete_subnet_pool.return_value = None
self.network_client.find_subnet_pool = (
network_fakes.FakeSubnetPool.get_subnet_pools(self._subnet_pools)
@@ -445,9 +443,7 @@ class TestDeleteSubnetPool(TestSubnetPool):
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
find_mock_result = [self._subnet_pools[0], exceptions.CommandError]
- self.network_client.find_subnet_pool = mock.Mock(
- side_effect=find_mock_result
- )
+ self.network_client.find_subnet_pool.side_effect = find_mock_result
try:
self.cmd.take_action(parsed_args)
@@ -514,9 +510,7 @@ class TestListSubnetPool(TestSubnetPool):
# Get the command object to test
self.cmd = subnet_pool.ListSubnetPool(self.app, None)
- self.network_client.subnet_pools = mock.Mock(
- return_value=self._subnet_pools
- )
+ self.network_client.subnet_pools.return_value = self._subnet_pools
def test_subnet_pool_list_no_option(self):
arglist = []
@@ -653,7 +647,7 @@ class TestListSubnetPool(TestSubnetPool):
def test_subnet_pool_list_name(self):
subnet_pool = network_fakes.FakeSubnetPool.create_one_subnet_pool()
- self.network_client.find_network = mock.Mock(return_value=subnet_pool)
+ self.network_client.find_network.return_value = subnet_pool
arglist = [
'--name',
subnet_pool.name,
@@ -672,9 +666,8 @@ class TestListSubnetPool(TestSubnetPool):
def test_subnet_pool_list_address_scope(self):
addr_scope = network_fakes.create_one_address_scope()
- self.network_client.find_address_scope = mock.Mock(
- return_value=addr_scope
- )
+ self.network_client.find_address_scope.return_value = addr_scope
+
arglist = [
'--address-scope',
addr_scope.id,
@@ -734,15 +727,13 @@ class TestSetSubnetPool(TestSubnetPool):
def setUp(self):
super().setUp()
- self.network_client.update_subnet_pool = mock.Mock(return_value=None)
- self.network_client.set_tags = mock.Mock(return_value=None)
+ self.network_client.update_subnet_pool.return_value = None
+ self.network_client.set_tags.return_value = None
- self.network_client.find_subnet_pool = mock.Mock(
- return_value=self._subnet_pool
- )
+ self.network_client.find_subnet_pool.return_value = self._subnet_pool
- self.network_client.find_address_scope = mock.Mock(
- return_value=self._address_scope
+ self.network_client.find_address_scope.return_value = (
+ self._address_scope
)
# Get the command object to test
@@ -1079,9 +1070,7 @@ class TestShowSubnetPool(TestSubnetPool):
def setUp(self):
super().setUp()
- self.network_client.find_subnet_pool = mock.Mock(
- return_value=self._subnet_pool
- )
+ self.network_client.find_subnet_pool.return_value = self._subnet_pool
# Get the command object to test
self.cmd = subnet_pool.ShowSubnetPool(self.app, None)
@@ -1122,11 +1111,10 @@ class TestUnsetSubnetPool(TestSubnetPool):
self._subnetpool = network_fakes.FakeSubnetPool.create_one_subnet_pool(
{'tags': ['green', 'red']}
)
- self.network_client.find_subnet_pool = mock.Mock(
- return_value=self._subnetpool
- )
- self.network_client.update_subnet_pool = mock.Mock(return_value=None)
- self.network_client.set_tags = mock.Mock(return_value=None)
+ self.network_client.find_subnet_pool.return_value = self._subnetpool
+
+ self.network_client.update_subnet_pool.return_value = None
+ self.network_client.set_tags.return_value = None
# Get the command object to test
self.cmd = subnet_pool.UnsetSubnetPool(self.app, None)
diff --git a/openstackclient/tests/unit/volume/test_find_resource.py b/openstackclient/tests/unit/volume/test_find_resource.py
index df087dd..614fa9a 100644
--- a/openstackclient/tests/unit/volume/test_find_resource.py
+++ b/openstackclient/tests/unit/volume/test_find_resource.py
@@ -21,15 +21,6 @@ from osc_lib import exceptions
from osc_lib import utils
from openstackclient.tests.unit import utils as test_utils
-from openstackclient.volume import client # noqa
-
-
-# Monkey patch for v1 cinderclient
-# NOTE(dtroyer): Do here because openstackclient.volume.client
-# doesn't do it until the client object is created now.
-volumes.Volume.NAME_ATTR = 'display_name'
-volume_snapshots.Snapshot.NAME_ATTR = 'display_name'
-
ID = '1after909'
NAME = 'PhilSpector'
@@ -42,14 +33,14 @@ class TestFindResourceVolumes(test_utils.TestCase):
api.client = mock.Mock()
api.client.get = mock.Mock()
resp = mock.Mock()
- body = {"volumes": [{"id": ID, 'display_name': NAME}]}
+ body = {"volumes": [{"id": ID, 'name': NAME}]}
api.client.get.side_effect = [Exception("Not found"), (resp, body)]
self.manager = volumes.VolumeManager(api)
def test_find(self):
result = utils.find_resource(self.manager, NAME)
self.assertEqual(ID, result.id)
- self.assertEqual(NAME, result.display_name)
+ self.assertEqual(NAME, result.name)
def test_not_find(self):
self.assertRaises(
@@ -67,14 +58,14 @@ class TestFindResourceVolumeSnapshots(test_utils.TestCase):
api.client = mock.Mock()
api.client.get = mock.Mock()
resp = mock.Mock()
- body = {"snapshots": [{"id": ID, 'display_name': NAME}]}
+ body = {"snapshots": [{"id": ID, 'name': NAME}]}
api.client.get.side_effect = [Exception("Not found"), (resp, body)]
self.manager = volume_snapshots.SnapshotManager(api)
def test_find(self):
result = utils.find_resource(self.manager, NAME)
self.assertEqual(ID, result.id)
- self.assertEqual(NAME, result.display_name)
+ self.assertEqual(NAME, result.name)
def test_not_find(self):
self.assertRaises(
diff --git a/openstackclient/tests/unit/volume/v2/test_consistency_group.py b/openstackclient/tests/unit/volume/v2/test_consistency_group.py
index dc62e5e..68021c8 100644
--- a/openstackclient/tests/unit/volume/v2/test_consistency_group.py
+++ b/openstackclient/tests/unit/volume/v2/test_consistency_group.py
@@ -129,7 +129,10 @@ class TestConsistencyGroupAddVolume(TestConsistencyGroup):
utils, 'find_resource', side_effect=find_mock_result
) as find_mock:
result = self.cmd.take_action(parsed_args)
- mock_error.assert_called_with("1 of 2 volumes failed to add.")
+ mock_error.assert_called_with(
+ '%(result)s of %(total)s volumes failed to add.',
+ {'result': 1, 'total': 2},
+ )
self.assertIsNone(result)
find_mock.assert_any_call(
self.consistencygroups_mock, self._consistency_group.id
@@ -602,7 +605,10 @@ class TestConsistencyGroupRemoveVolume(TestConsistencyGroup):
utils, 'find_resource', side_effect=find_mock_result
) as find_mock:
result = self.cmd.take_action(parsed_args)
- mock_error.assert_called_with("1 of 2 volumes failed to remove.")
+ mock_error.assert_called_with(
+ '%(result)s of %(total)s volumes failed to remove.',
+ {'result': 1, 'total': 2},
+ )
self.assertIsNone(result)
find_mock.assert_any_call(
self.consistencygroups_mock, self._consistency_group.id
diff --git a/openstackclient/tests/unit/volume/v2/test_volume.py b/openstackclient/tests/unit/volume/v2/test_volume.py
index b68020f..8a9f777 100644
--- a/openstackclient/tests/unit/volume/v2/test_volume.py
+++ b/openstackclient/tests/unit/volume/v2/test_volume.py
@@ -655,7 +655,7 @@ class TestVolumeDelete(volume_fakes.TestVolume):
arglist = [self.volumes[0].id]
verifylist = [
("force", False),
- ("purge", False),
+ ("cascade", False),
("volumes", [self.volumes[0].id]),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -674,7 +674,7 @@ class TestVolumeDelete(volume_fakes.TestVolume):
arglist = [v.id for v in self.volumes]
verifylist = [
('force', False),
- ('purge', False),
+ ('cascade', False),
('volumes', arglist),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -701,7 +701,7 @@ class TestVolumeDelete(volume_fakes.TestVolume):
]
verifylist = [
('force', False),
- ('purge', False),
+ ('cascade', False),
('volumes', [self.volumes[0].id, 'unexist_volume']),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -732,7 +732,7 @@ class TestVolumeDelete(volume_fakes.TestVolume):
]
verifylist = [
('force', False),
- ('purge', True),
+ ('cascade', True),
('volumes', [self.volumes[0].id]),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -754,7 +754,7 @@ class TestVolumeDelete(volume_fakes.TestVolume):
]
verifylist = [
('force', True),
- ('purge', False),
+ ('cascade', False),
('volumes', [self.volumes[0].id]),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -1618,7 +1618,8 @@ class TestVolumeSet(TestVolume):
result = self.cmd.take_action(parsed_args)
self.volumes_mock.retype.assert_not_called()
mock_warning.assert_called_with(
- "'--retype-policy' option will not work without '--type' option"
+ "'%s' option will not work without '--type' option",
+ '--retype-policy',
)
self.assertIsNone(result)
diff --git a/openstackclient/tests/unit/volume/v2/test_volume_backup.py b/openstackclient/tests/unit/volume/v2/test_volume_backup.py
index 7d4fba9..e7bbb69 100644
--- a/openstackclient/tests/unit/volume/v2/test_volume_backup.py
+++ b/openstackclient/tests/unit/volume/v2/test_volume_backup.py
@@ -565,7 +565,9 @@ class TestBackupShow(volume_fakes.TestVolume):
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
- self.volume_sdk_client.find_backup.assert_called_with(self.backup.id)
+ self.volume_sdk_client.find_backup.assert_called_with(
+ self.backup.id, ignore_missing=False
+ )
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, data)
diff --git a/openstackclient/tests/unit/volume/v3/test_volume.py b/openstackclient/tests/unit/volume/v3/test_volume.py
index 5fb35a0..3338ccf 100644
--- a/openstackclient/tests/unit/volume/v3/test_volume.py
+++ b/openstackclient/tests/unit/volume/v3/test_volume.py
@@ -37,6 +37,7 @@ class TestVolumeCreate(volume_fakes.TestVolume):
columns = (
'attachments',
'availability_zone',
+ 'backup_id',
'bootable',
'cluster_name',
'consistencygroup_id',
@@ -78,6 +79,7 @@ class TestVolumeCreate(volume_fakes.TestVolume):
self.datalist = (
self.volume.attachments,
self.volume.availability_zone,
+ self.volume.backup_id,
self.volume.is_bootable,
self.volume.cluster_name,
self.volume.consistency_group_id,
@@ -910,7 +912,7 @@ class TestVolumeDelete(volume_fakes.TestVolume):
arglist = [self.volumes[0].id]
verifylist = [
("force", False),
- ("purge", False),
+ ("cascade", False),
("volumes", [self.volumes[0].id]),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -929,7 +931,7 @@ class TestVolumeDelete(volume_fakes.TestVolume):
arglist = [v.id for v in self.volumes]
verifylist = [
('force', False),
- ('purge', False),
+ ('cascade', False),
('volumes', arglist),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -956,7 +958,7 @@ class TestVolumeDelete(volume_fakes.TestVolume):
]
verifylist = [
('force', False),
- ('purge', False),
+ ('cascade', False),
('volumes', [self.volumes[0].id, 'unexist_volume']),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -987,7 +989,29 @@ class TestVolumeDelete(volume_fakes.TestVolume):
]
verifylist = [
('force', False),
- ('purge', True),
+ ('cascade', True),
+ ('volumes', [self.volumes[0].id]),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ result = self.cmd.take_action(parsed_args)
+ self.assertIsNone(result)
+
+ self.volume_sdk_client.find_volume.assert_called_once_with(
+ self.volumes[0].id, ignore_missing=False
+ )
+ self.volume_sdk_client.delete_volume.assert_called_once_with(
+ self.volumes[0].id, cascade=True, force=False
+ )
+
+ def test_volume_delete_with_cascade(self):
+ arglist = [
+ '--cascade',
+ self.volumes[0].id,
+ ]
+ verifylist = [
+ ('force', False),
+ ('cascade', True),
('volumes', [self.volumes[0].id]),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -1009,7 +1033,7 @@ class TestVolumeDelete(volume_fakes.TestVolume):
]
verifylist = [
('force', True),
- ('purge', False),
+ ('cascade', False),
('volumes', [self.volumes[0].id]),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -1029,7 +1053,7 @@ class TestVolumeDelete(volume_fakes.TestVolume):
verifylist = [
("remote", True),
("force", False),
- ("purge", False),
+ ("cascade", False),
("volumes", [self.volumes[0].id]),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -1050,7 +1074,7 @@ class TestVolumeDelete(volume_fakes.TestVolume):
verifylist = [
('remote', True),
('force', False),
- ('purge', False),
+ ('cascade', False),
('volumes', arglist[1:]),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -1075,7 +1099,6 @@ class TestVolumeDelete(volume_fakes.TestVolume):
verifylist = [
('remote', True),
('force', False),
- ('purge', True),
('volumes', [self.volumes[0].id]),
]
@@ -1084,7 +1107,7 @@ class TestVolumeDelete(volume_fakes.TestVolume):
exceptions.CommandError, self.cmd.take_action, parsed_args
)
self.assertIn(
- "The --force and --purge options are not supported with the "
+ "The --force and --cascade options are not supported with the "
"--remote parameter.",
str(exc),
)
@@ -1102,7 +1125,7 @@ class TestVolumeDelete(volume_fakes.TestVolume):
verifylist = [
('remote', True),
('force', True),
- ('purge', False),
+ ('cascade', False),
('volumes', [self.volumes[0].id]),
]
@@ -1111,7 +1134,7 @@ class TestVolumeDelete(volume_fakes.TestVolume):
exceptions.CommandError, self.cmd.take_action, parsed_args
)
self.assertIn(
- "The --force and --purge options are not supported with the "
+ "The --force and --cascade options are not supported with the "
"--remote parameter.",
str(exc),
)
@@ -1996,7 +2019,8 @@ class TestVolumeSet(volume_fakes.TestVolume):
result = self.cmd.take_action(parsed_args)
self.volumes_mock.retype.assert_not_called()
mock_warning.assert_called_with(
- "'--retype-policy' option will not work without '--type' option"
+ "'%s' option will not work without '--type' option",
+ '--retype-policy',
)
self.assertIsNone(result)
@@ -2011,6 +2035,7 @@ class TestVolumeShow(volume_fakes.TestVolume):
self.columns = (
'attachments',
'availability_zone',
+ 'backup_id',
'bootable',
'cluster_name',
'consistencygroup_id',
@@ -2045,6 +2070,7 @@ class TestVolumeShow(volume_fakes.TestVolume):
self.data = (
self.volume.attachments,
self.volume.availability_zone,
+ self.volume.backup_id,
self.volume.is_bootable,
self.volume.cluster_name,
self.volume.consistency_group_id,
diff --git a/openstackclient/tests/unit/volume/v3/test_volume_backup.py b/openstackclient/tests/unit/volume/v3/test_volume_backup.py
index 5be0985..86bde78 100644
--- a/openstackclient/tests/unit/volume/v3/test_volume_backup.py
+++ b/openstackclient/tests/unit/volume/v3/test_volume_backup.py
@@ -17,6 +17,7 @@ from openstack.block_storage.v3 import backup as _backup
from openstack.block_storage.v3 import snapshot as _snapshot
from openstack.block_storage.v3 import volume as _volume
from openstack import exceptions as sdk_exceptions
+from openstack.identity.v3 import project as _project
from openstack.test import fakes as sdk_fakes
from osc_lib import exceptions
@@ -381,6 +382,7 @@ class TestBackupList(volume_fakes.TestVolume):
("marker", None),
("limit", None),
('all_projects', False),
+ ("project", None),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -395,11 +397,14 @@ class TestBackupList(volume_fakes.TestVolume):
all_tenants=False,
marker=None,
limit=None,
+ project_id=None,
)
self.assertEqual(self.columns, columns)
self.assertCountEqual(self.data, list(data))
def test_backup_list_with_options(self):
+ project = sdk_fakes.generate_fake_resource(_project.Project)
+ self.identity_sdk_client.find_project.return_value = project
arglist = [
"--long",
"--name",
@@ -413,6 +418,8 @@ class TestBackupList(volume_fakes.TestVolume):
"--all-projects",
"--limit",
"3",
+ "--project",
+ project.id,
]
verifylist = [
("long", True),
@@ -422,6 +429,7 @@ class TestBackupList(volume_fakes.TestVolume):
("marker", self.backups[0].id),
('all_projects', True),
("limit", 3),
+ ("project", project.id),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -440,6 +448,7 @@ class TestBackupList(volume_fakes.TestVolume):
all_tenants=True,
marker=self.backups[0].id,
limit=3,
+ project_id=project.id,
)
self.assertEqual(self.columns_long, columns)
self.assertCountEqual(self.data_long, list(data))