python-openstackclient 8.3.0__py3-none-any.whl → 10.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- openstackclient/__init__.py +2 -6
- openstackclient/api/api.py +41 -23
- openstackclient/api/compute_v2.py +44 -25
- openstackclient/api/object_store_v1.py +75 -97
- openstackclient/api/volume_v2.py +2 -1
- openstackclient/api/volume_v3.py +2 -1
- openstackclient/common/availability_zone.py +58 -42
- openstackclient/common/clientmanager.py +56 -29
- openstackclient/common/configuration.py +10 -3
- openstackclient/common/envvars.py +2 -2
- openstackclient/common/extension.py +14 -5
- openstackclient/common/limits.py +10 -5
- openstackclient/common/module.py +14 -6
- openstackclient/common/pagination.py +8 -2
- openstackclient/common/progressbar.py +7 -6
- openstackclient/common/project_cleanup.py +13 -7
- openstackclient/common/quota.py +126 -114
- openstackclient/common/versions.py +8 -2
- openstackclient/compute/client.py +7 -3
- openstackclient/compute/v2/agent.py +17 -10
- openstackclient/compute/v2/aggregate.py +36 -22
- openstackclient/compute/v2/console.py +14 -8
- openstackclient/compute/v2/console_connection.py +11 -3
- openstackclient/compute/v2/flavor.py +39 -21
- openstackclient/compute/v2/host.py +14 -6
- openstackclient/compute/v2/hypervisor.py +14 -5
- openstackclient/compute/v2/hypervisor_stats.py +10 -2
- openstackclient/compute/v2/keypair.py +29 -14
- openstackclient/compute/v2/server.py +251 -171
- openstackclient/compute/v2/server_backup.py +10 -4
- openstackclient/compute/v2/server_event.py +21 -12
- openstackclient/compute/v2/server_group.py +21 -11
- openstackclient/compute/v2/server_image.py +19 -10
- openstackclient/compute/v2/server_migration.py +24 -10
- openstackclient/compute/v2/server_share.py +274 -0
- openstackclient/compute/v2/server_volume.py +10 -4
- openstackclient/compute/v2/service.py +14 -7
- openstackclient/compute/v2/usage.py +26 -21
- openstackclient/identity/client.py +8 -3
- openstackclient/identity/common.py +103 -41
- openstackclient/identity/v2_0/catalog.py +14 -7
- openstackclient/identity/v2_0/ec2creds.py +21 -10
- openstackclient/identity/v2_0/endpoint.py +23 -11
- openstackclient/identity/v2_0/project.py +25 -14
- openstackclient/identity/v2_0/role.py +28 -14
- openstackclient/identity/v2_0/role_assignment.py +9 -3
- openstackclient/identity/v2_0/service.py +26 -12
- openstackclient/identity/v2_0/token.py +12 -5
- openstackclient/identity/v2_0/user.py +26 -15
- openstackclient/identity/v3/access_rule.py +26 -12
- openstackclient/identity/v3/application_credential.py +59 -24
- openstackclient/identity/v3/catalog.py +14 -7
- openstackclient/identity/v3/consumer.py +22 -11
- openstackclient/identity/v3/credential.py +36 -16
- openstackclient/identity/v3/domain.py +37 -18
- openstackclient/identity/v3/ec2creds.py +25 -12
- openstackclient/identity/v3/endpoint.py +42 -20
- openstackclient/identity/v3/endpoint_group.py +28 -17
- openstackclient/identity/v3/federation_protocol.py +71 -50
- openstackclient/identity/v3/group.py +55 -32
- openstackclient/identity/v3/identity_provider.py +92 -57
- openstackclient/identity/v3/implied_role.py +21 -9
- openstackclient/identity/v3/limit.py +115 -92
- openstackclient/identity/v3/mapping.py +26 -13
- openstackclient/identity/v3/policy.py +23 -12
- openstackclient/identity/v3/project.py +211 -122
- openstackclient/identity/v3/region.py +36 -16
- openstackclient/identity/v3/registered_limit.py +116 -109
- openstackclient/identity/v3/role.py +61 -31
- openstackclient/identity/v3/role_assignment.py +23 -6
- openstackclient/identity/v3/service.py +36 -16
- openstackclient/identity/v3/service_provider.py +37 -15
- openstackclient/identity/v3/tag.py +23 -17
- openstackclient/identity/v3/token.py +30 -14
- openstackclient/identity/v3/trust.py +32 -14
- openstackclient/identity/v3/unscoped_saml.py +10 -2
- openstackclient/identity/v3/user.py +49 -26
- openstackclient/image/client.py +7 -3
- openstackclient/image/v1/image.py +33 -26
- openstackclient/image/v2/cache.py +14 -9
- openstackclient/image/v2/image.py +76 -49
- openstackclient/image/v2/info.py +7 -1
- openstackclient/image/v2/metadef_namespaces.py +109 -13
- openstackclient/image/v2/metadef_objects.py +28 -15
- openstackclient/image/v2/metadef_properties.py +24 -13
- openstackclient/image/v2/metadef_resource_type_association.py +14 -7
- openstackclient/image/v2/metadef_resource_types.py +7 -1
- openstackclient/image/v2/task.py +15 -6
- openstackclient/locale/tr_TR/LC_MESSAGES/openstackclient.po +7 -192
- openstackclient/network/client.py +7 -2
- openstackclient/network/common.py +16 -241
- openstackclient/network/utils.py +36 -22
- openstackclient/network/v2/address_group.py +27 -16
- openstackclient/network/v2/address_scope.py +24 -13
- openstackclient/network/v2/bgpvpn/bgpvpn.py +463 -0
- openstackclient/network/v2/bgpvpn/constants.py +30 -0
- openstackclient/network/v2/bgpvpn/network_association.py +214 -0
- openstackclient/network/v2/bgpvpn/port_association.py +490 -0
- openstackclient/network/v2/bgpvpn/router_association.py +288 -0
- openstackclient/network/v2/default_security_group_rule.py +19 -10
- openstackclient/network/v2/floating_ip.py +110 -159
- openstackclient/network/v2/floating_ip_port_forwarding.py +30 -18
- openstackclient/network/v2/fwaas/__init__.py +0 -0
- openstackclient/network/v2/fwaas/group.py +466 -0
- openstackclient/network/v2/fwaas/policy.py +518 -0
- openstackclient/network/v2/fwaas/rule.py +574 -0
- openstackclient/network/v2/ip_availability.py +13 -5
- openstackclient/network/v2/l3_conntrack_helper.py +22 -13
- openstackclient/network/v2/local_ip.py +24 -13
- openstackclient/network/v2/local_ip_association.py +14 -7
- openstackclient/network/v2/ndp_proxy.py +20 -11
- openstackclient/network/v2/network.py +129 -196
- openstackclient/network/v2/network_agent.py +46 -25
- openstackclient/network/v2/network_auto_allocated_topology.py +22 -11
- openstackclient/network/v2/network_flavor.py +27 -16
- openstackclient/network/v2/network_flavor_profile.py +23 -12
- openstackclient/network/v2/network_meter.py +21 -10
- openstackclient/network/v2/network_meter_rule.py +21 -11
- openstackclient/network/v2/network_qos_policy.py +25 -15
- openstackclient/network/v2/network_qos_rule.py +32 -17
- openstackclient/network/v2/network_qos_rule_type.py +13 -5
- openstackclient/network/v2/network_rbac.py +23 -12
- openstackclient/network/v2/network_segment.py +20 -11
- openstackclient/network/v2/network_segment_range.py +56 -29
- openstackclient/network/v2/network_service_provider.py +7 -1
- openstackclient/network/v2/network_trunk.py +38 -22
- openstackclient/network/v2/port.py +54 -29
- openstackclient/network/v2/router.py +75 -52
- openstackclient/network/v2/security_group.py +87 -157
- openstackclient/network/v2/security_group_rule.py +100 -280
- openstackclient/network/v2/subnet.py +49 -28
- openstackclient/network/v2/subnet_pool.py +30 -17
- openstackclient/network/v2/taas/tap_flow.py +22 -11
- openstackclient/network/v2/taas/tap_mirror.py +22 -11
- openstackclient/network/v2/taas/tap_service.py +23 -12
- openstackclient/object/client.py +7 -2
- openstackclient/object/v1/account.py +13 -6
- openstackclient/object/v1/container.py +25 -15
- openstackclient/object/v1/object.py +25 -15
- openstackclient/py.typed +0 -0
- openstackclient/shell.py +46 -10
- openstackclient/tests/functional/base.py +55 -20
- openstackclient/tests/functional/common/test_extension.py +4 -0
- openstackclient/tests/functional/common/test_quota.py +3 -1
- openstackclient/tests/functional/compute/v2/common.py +14 -13
- openstackclient/tests/functional/compute/v2/test_flavor.py +3 -1
- openstackclient/tests/functional/compute/v2/test_server.py +3 -0
- openstackclient/tests/functional/identity/v2/common.py +10 -6
- openstackclient/tests/functional/identity/v2/test_role.py +4 -4
- openstackclient/tests/functional/identity/v3/common.py +25 -19
- openstackclient/tests/functional/identity/v3/test_group.py +20 -20
- openstackclient/tests/functional/identity/v3/test_idp.py +3 -1
- openstackclient/tests/functional/identity/v3/test_limit.py +47 -0
- openstackclient/tests/functional/identity/v3/test_project.py +10 -10
- openstackclient/tests/functional/identity/v3/test_role.py +18 -18
- openstackclient/tests/functional/identity/v3/test_role_assignment.py +12 -12
- openstackclient/tests/functional/identity/v3/test_user.py +8 -8
- openstackclient/tests/functional/image/base.py +1 -6
- openstackclient/tests/functional/image/v2/test_metadef_objects.py +69 -0
- openstackclient/tests/functional/network/v2/common.py +5 -2
- openstackclient/tests/functional/network/v2/test_floating_ip.py +10 -4
- openstackclient/tests/functional/network/v2/test_ip_availability.py +4 -0
- openstackclient/tests/functional/network/v2/test_network_meter_rule.py +3 -2
- openstackclient/tests/functional/network/v2/test_network_segment.py +5 -0
- openstackclient/tests/functional/network/v2/test_subnet.py +13 -9
- openstackclient/tests/functional/object/v1/common.py +4 -0
- openstackclient/tests/functional/volume/v2/common.py +4 -0
- openstackclient/tests/functional/volume/v2/test_volume_snapshot.py +27 -11
- openstackclient/tests/functional/volume/v2/test_volume_type.py +2 -2
- openstackclient/tests/functional/volume/v3/common.py +4 -0
- openstackclient/tests/functional/volume/v3/test_volume_snapshot.py +56 -138
- openstackclient/tests/functional/volume/v3/test_volume_type.py +2 -2
- openstackclient/tests/unit/common/test_availability_zone.py +35 -49
- openstackclient/tests/unit/common/test_extension.py +2 -2
- openstackclient/tests/unit/common/test_module.py +12 -7
- openstackclient/tests/unit/common/test_project_cleanup.py +3 -1
- openstackclient/tests/unit/common/test_quota.py +62 -23
- openstackclient/tests/unit/compute/v2/fakes.py +25 -0
- openstackclient/tests/unit/compute/v2/test_flavor.py +28 -2
- openstackclient/tests/unit/compute/v2/test_keypair.py +6 -6
- openstackclient/tests/unit/compute/v2/test_server.py +17 -104
- openstackclient/tests/unit/compute/v2/test_server_share.py +287 -0
- openstackclient/tests/unit/identity/v3/fakes.py +3 -0
- openstackclient/tests/unit/identity/v3/test_group.py +4 -14
- openstackclient/tests/unit/identity/v3/test_identity_provider.py +303 -299
- openstackclient/tests/unit/identity/v3/test_limit.py +197 -145
- openstackclient/tests/unit/identity/v3/test_project.py +831 -512
- openstackclient/tests/unit/identity/v3/test_protocol.py +97 -88
- openstackclient/tests/unit/identity/v3/test_registered_limit.py +355 -220
- openstackclient/tests/unit/identity/v3/test_user.py +4 -4
- openstackclient/tests/unit/image/v2/test_image.py +16 -16
- openstackclient/tests/unit/image/v2/test_metadef_namespaces.py +105 -6
- openstackclient/tests/unit/network/test_common.py +0 -155
- openstackclient/tests/unit/network/v2/bgpvpn/__init__.py +0 -0
- openstackclient/tests/unit/network/v2/bgpvpn/fakes.py +179 -0
- openstackclient/tests/unit/network/v2/bgpvpn/test_bgpvpn.py +584 -0
- openstackclient/tests/unit/network/v2/bgpvpn/test_network_association.py +285 -0
- openstackclient/tests/unit/network/v2/bgpvpn/test_port_association.py +384 -0
- openstackclient/tests/unit/network/v2/bgpvpn/test_router_association.py +297 -0
- openstackclient/tests/unit/network/v2/fwaas/__init__.py +0 -0
- openstackclient/tests/unit/network/v2/fwaas/test_group.py +897 -0
- openstackclient/tests/unit/network/v2/fwaas/test_policy.py +869 -0
- openstackclient/tests/unit/network/v2/fwaas/test_rule.py +980 -0
- openstackclient/tests/unit/network/v2/taas/{test_osc_tap_flow.py → test_tap_flow.py} +18 -25
- openstackclient/tests/unit/network/v2/taas/{test_osc_tap_mirror.py → test_tap_mirror.py} +19 -29
- openstackclient/tests/unit/network/v2/taas/{test_osc_tap_service.py → test_tap_service.py} +19 -29
- openstackclient/tests/unit/network/v2/test_address_group.py +2 -2
- openstackclient/tests/unit/network/v2/{test_floating_ip_network.py → test_floating_ip.py} +3 -2
- openstackclient/tests/unit/network/v2/test_floating_ip_port_forwarding.py +13 -13
- openstackclient/tests/unit/network/v2/test_network_agent.py +8 -4
- openstackclient/tests/unit/network/v2/test_network_auto_allocated_topology.py +3 -3
- openstackclient/tests/unit/network/v2/test_network_flavor.py +2 -2
- openstackclient/tests/unit/network/v2/test_network_qos_policy.py +1 -1
- openstackclient/tests/unit/network/v2/test_network_qos_rule.py +2 -2
- openstackclient/tests/unit/network/v2/test_network_rbac.py +1 -1
- openstackclient/tests/unit/network/v2/test_network_segment.py +1 -1
- openstackclient/tests/unit/network/v2/test_network_segment_range.py +7 -10
- openstackclient/tests/unit/network/v2/test_network_trunk.py +1 -1
- openstackclient/tests/unit/network/v2/test_router.py +8 -9
- openstackclient/tests/unit/network/v2/{test_security_group_network.py → test_security_group.py} +1 -20
- openstackclient/tests/unit/network/v2/{test_security_group_rule_network.py → test_security_group_rule.py} +7 -41
- openstackclient/tests/unit/network/v2/test_subnet.py +2 -1
- openstackclient/tests/unit/network/v2/test_subnet_pool.py +2 -1
- openstackclient/tests/unit/object/v1/fakes.py +8 -7
- openstackclient/tests/unit/object/v1/test_container.py +65 -101
- openstackclient/tests/unit/object/v1/test_container_all.py +8 -1
- openstackclient/tests/unit/object/v1/test_object.py +44 -84
- openstackclient/tests/unit/object/v1/test_object_all.py +8 -1
- openstackclient/tests/unit/test_hacking.py +108 -0
- openstackclient/tests/unit/volume/v2/fakes.py +1 -0
- openstackclient/tests/unit/volume/v2/test_consistency_group.py +8 -2
- openstackclient/tests/unit/volume/v2/test_volume.py +7 -6
- openstackclient/tests/unit/volume/v2/test_volume_backup.py +1 -5
- openstackclient/tests/unit/volume/v2/test_volume_snapshot.py +2 -1
- openstackclient/tests/unit/volume/v2/test_volume_type.py +2 -4
- openstackclient/tests/unit/volume/v3/fakes.py +1 -0
- openstackclient/tests/unit/volume/v3/test_volume.py +94 -15
- openstackclient/tests/unit/volume/v3/test_volume_attachment.py +1 -1
- openstackclient/tests/unit/volume/v3/test_volume_backup.py +1 -5
- openstackclient/tests/unit/volume/v3/test_volume_snapshot.py +55 -1
- openstackclient/tests/unit/volume/v3/test_volume_type.py +2 -4
- openstackclient/volume/client.py +7 -3
- openstackclient/volume/v2/backup_record.py +15 -6
- openstackclient/volume/v2/consistency_group.py +37 -25
- openstackclient/volume/v2/consistency_group_snapshot.py +27 -12
- openstackclient/volume/v2/qos_specs.py +30 -19
- openstackclient/volume/v2/service.py +17 -6
- openstackclient/volume/v2/volume.py +69 -34
- openstackclient/volume/v2/volume_backend.py +19 -6
- openstackclient/volume/v2/volume_backup.py +48 -22
- openstackclient/volume/v2/volume_host.py +6 -4
- openstackclient/volume/v2/volume_snapshot.py +52 -26
- openstackclient/volume/v2/volume_transfer_request.py +33 -15
- openstackclient/volume/v2/volume_type.py +46 -27
- openstackclient/volume/v3/block_storage_cleanup.py +11 -3
- openstackclient/volume/v3/block_storage_cluster.py +19 -7
- openstackclient/volume/v3/block_storage_log_level.py +15 -6
- openstackclient/volume/v3/block_storage_manage.py +10 -4
- openstackclient/volume/v3/block_storage_resource_filter.py +17 -5
- openstackclient/volume/v3/service.py +16 -6
- openstackclient/volume/v3/volume.py +103 -46
- openstackclient/volume/v3/volume_attachment.py +43 -21
- openstackclient/volume/v3/volume_backup.py +55 -26
- openstackclient/volume/v3/volume_group.py +23 -13
- openstackclient/volume/v3/volume_group_snapshot.py +32 -13
- openstackclient/volume/v3/volume_group_type.py +26 -13
- openstackclient/volume/v3/volume_message.py +15 -7
- openstackclient/volume/v3/volume_snapshot.py +71 -34
- openstackclient/volume/v3/volume_transfer_request.py +33 -15
- openstackclient/volume/v3/volume_type.py +45 -27
- {python_openstackclient-8.3.0.dist-info → python_openstackclient-10.0.0.dist-info}/METADATA +6 -6
- {python_openstackclient-8.3.0.dist-info → python_openstackclient-10.0.0.dist-info}/RECORD +279 -267
- {python_openstackclient-8.3.0.dist-info → python_openstackclient-10.0.0.dist-info}/WHEEL +1 -1
- {python_openstackclient-8.3.0.dist-info → python_openstackclient-10.0.0.dist-info}/entry_points.txt +53 -1
- {python_openstackclient-8.3.0.dist-info → python_openstackclient-10.0.0.dist-info}/licenses/AUTHORS +9 -0
- python_openstackclient-10.0.0.dist-info/pbr.json +1 -0
- openstackclient/api/image_v1.py +0 -69
- openstackclient/api/image_v2.py +0 -79
- openstackclient/network/v2/floating_ip_pool.py +0 -38
- openstackclient/tests/functional/image/v1/test_image.py +0 -97
- openstackclient/tests/unit/api/test_image_v1.py +0 -96
- openstackclient/tests/unit/api/test_image_v2.py +0 -96
- openstackclient/tests/unit/network/v2/test_floating_ip_compute.py +0 -248
- openstackclient/tests/unit/network/v2/test_floating_ip_pool_compute.py +0 -49
- openstackclient/tests/unit/network/v2/test_floating_ip_pool_network.py +0 -39
- openstackclient/tests/unit/network/v2/test_network_compute.py +0 -404
- openstackclient/tests/unit/network/v2/test_security_group_compute.py +0 -392
- openstackclient/tests/unit/network/v2/test_security_group_rule_compute.py +0 -555
- python_openstackclient-8.3.0.dist-info/pbr.json +0 -1
- /openstackclient/{tests/functional/image/v1 → network/v2/bgpvpn}/__init__.py +0 -0
- {python_openstackclient-8.3.0.dist-info → python_openstackclient-10.0.0.dist-info}/licenses/LICENSE +0 -0
- {python_openstackclient-8.3.0.dist-info → python_openstackclient-10.0.0.dist-info}/top_level.txt +0 -0
|
@@ -12,108 +12,98 @@
|
|
|
12
12
|
# License for the specific language governing permissions and limitations
|
|
13
13
|
# under the License.
|
|
14
14
|
|
|
15
|
-
import copy
|
|
16
15
|
from unittest import mock
|
|
17
16
|
|
|
17
|
+
from osc_lib.cli import format_columns
|
|
18
18
|
from osc_lib import exceptions
|
|
19
19
|
|
|
20
|
+
from openstack.identity.v3 import domain as _domain
|
|
21
|
+
from openstack.identity.v3 import identity_provider as _identity_provider
|
|
22
|
+
from openstack.test import fakes as sdk_fakes
|
|
20
23
|
from openstackclient.identity.v3 import identity_provider
|
|
21
|
-
from openstackclient.tests.unit import fakes
|
|
22
24
|
from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
|
|
23
25
|
from openstackclient.tests.unit import utils as test_utils
|
|
24
26
|
|
|
25
27
|
|
|
26
|
-
class
|
|
27
|
-
def setUp(self):
|
|
28
|
-
super().setUp()
|
|
29
|
-
|
|
30
|
-
# Identity Provider mocks
|
|
31
|
-
federation_lib = self.identity_client.federation
|
|
32
|
-
self.identity_providers_mock = federation_lib.identity_providers
|
|
33
|
-
self.identity_providers_mock.reset_mock()
|
|
34
|
-
|
|
35
|
-
# Domain mocks
|
|
36
|
-
self.domains_mock = self.identity_client.domains
|
|
37
|
-
self.domains_mock.reset_mock()
|
|
38
|
-
self.domain = identity_fakes.FakeDomain.create_one_domain(
|
|
39
|
-
identity_fakes.DOMAIN
|
|
40
|
-
)
|
|
41
|
-
self.domains_mock.list.return_value = [self.domain]
|
|
42
|
-
self.domains_mock.get.return_value = self.domain
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
class TestIdentityProviderCreate(TestIdentityProvider):
|
|
28
|
+
class TestIdentityProviderCreate(identity_fakes.TestFederatedIdentity):
|
|
46
29
|
columns = (
|
|
30
|
+
'authorization_ttl',
|
|
47
31
|
'description',
|
|
48
32
|
'domain_id',
|
|
49
33
|
'enabled',
|
|
50
34
|
'id',
|
|
51
35
|
'remote_ids',
|
|
52
36
|
)
|
|
53
|
-
datalist = (
|
|
54
|
-
identity_fakes.idp_description,
|
|
55
|
-
identity_fakes.domain_id,
|
|
56
|
-
True,
|
|
57
|
-
identity_fakes.idp_id,
|
|
58
|
-
identity_fakes.formatted_idp_remote_ids,
|
|
59
|
-
)
|
|
60
37
|
|
|
61
38
|
def setUp(self):
|
|
62
39
|
super().setUp()
|
|
63
40
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
41
|
+
self.domain = sdk_fakes.generate_fake_resource(_domain.Domain)
|
|
42
|
+
self.idp = sdk_fakes.generate_fake_resource(
|
|
43
|
+
_identity_provider.IdentityProvider,
|
|
44
|
+
domain_id=self.domain.id,
|
|
45
|
+
remote_ids=['entity1', 'entity2'],
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
self.identity_sdk_client.create_identity_provider.return_value = (
|
|
49
|
+
self.idp
|
|
50
|
+
)
|
|
51
|
+
self.identity_sdk_client.find_domain.return_value = self.domain
|
|
52
|
+
|
|
53
|
+
self.datalist = (
|
|
54
|
+
self.idp.authorization_ttl,
|
|
55
|
+
self.idp.description,
|
|
56
|
+
self.domain.id,
|
|
57
|
+
self.idp.is_enabled,
|
|
58
|
+
self.idp.id,
|
|
59
|
+
format_columns.ListColumn(self.idp.remote_ids),
|
|
60
|
+
)
|
|
67
61
|
self.cmd = identity_provider.CreateIdentityProvider(self.app, None)
|
|
68
62
|
|
|
69
63
|
def test_create_identity_provider_no_options(self):
|
|
70
64
|
arglist = [
|
|
71
|
-
|
|
65
|
+
self.idp.id,
|
|
72
66
|
]
|
|
73
67
|
verifylist = [
|
|
74
|
-
('identity_provider_id',
|
|
68
|
+
('identity_provider_id', self.idp.id),
|
|
75
69
|
]
|
|
76
70
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
77
71
|
columns, data = self.cmd.take_action(parsed_args)
|
|
78
72
|
|
|
79
73
|
# Set expected values
|
|
80
74
|
kwargs = {
|
|
81
|
-
'
|
|
82
|
-
'enabled': True,
|
|
83
|
-
'description': None,
|
|
84
|
-
'domain_id': None,
|
|
75
|
+
'is_enabled': True,
|
|
85
76
|
}
|
|
86
77
|
|
|
87
|
-
self.
|
|
88
|
-
id=
|
|
78
|
+
self.identity_sdk_client.create_identity_provider.assert_called_with(
|
|
79
|
+
id=self.idp.id, **kwargs
|
|
89
80
|
)
|
|
90
81
|
|
|
91
82
|
self.assertEqual(self.columns, columns)
|
|
83
|
+
|
|
92
84
|
self.assertCountEqual(self.datalist, data)
|
|
93
85
|
|
|
94
86
|
def test_create_identity_provider_description(self):
|
|
95
87
|
arglist = [
|
|
96
88
|
'--description',
|
|
97
|
-
|
|
98
|
-
|
|
89
|
+
self.idp.description,
|
|
90
|
+
self.idp.id,
|
|
99
91
|
]
|
|
100
92
|
verifylist = [
|
|
101
|
-
('identity_provider_id',
|
|
102
|
-
('description',
|
|
93
|
+
('identity_provider_id', self.idp.id),
|
|
94
|
+
('description', self.idp.description),
|
|
103
95
|
]
|
|
104
96
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
105
97
|
columns, data = self.cmd.take_action(parsed_args)
|
|
106
98
|
|
|
107
99
|
# Set expected values
|
|
108
100
|
kwargs = {
|
|
109
|
-
'
|
|
110
|
-
'
|
|
111
|
-
'domain_id': None,
|
|
112
|
-
'enabled': True,
|
|
101
|
+
'description': self.idp.description,
|
|
102
|
+
'is_enabled': True,
|
|
113
103
|
}
|
|
114
104
|
|
|
115
|
-
self.
|
|
116
|
-
id=
|
|
105
|
+
self.identity_sdk_client.create_identity_provider.assert_called_with(
|
|
106
|
+
id=self.idp.id, **kwargs
|
|
117
107
|
)
|
|
118
108
|
|
|
119
109
|
self.assertEqual(self.columns, columns)
|
|
@@ -121,27 +111,25 @@ class TestIdentityProviderCreate(TestIdentityProvider):
|
|
|
121
111
|
|
|
122
112
|
def test_create_identity_provider_remote_id(self):
|
|
123
113
|
arglist = [
|
|
124
|
-
|
|
114
|
+
self.idp.id,
|
|
125
115
|
'--remote-id',
|
|
126
|
-
|
|
116
|
+
self.idp.remote_ids[0],
|
|
127
117
|
]
|
|
128
118
|
verifylist = [
|
|
129
|
-
('identity_provider_id',
|
|
130
|
-
('remote_ids',
|
|
119
|
+
('identity_provider_id', self.idp.id),
|
|
120
|
+
('remote_ids', self.idp.remote_ids[:1]),
|
|
131
121
|
]
|
|
132
122
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
133
123
|
columns, data = self.cmd.take_action(parsed_args)
|
|
134
124
|
|
|
135
125
|
# Set expected values
|
|
136
126
|
kwargs = {
|
|
137
|
-
'remote_ids':
|
|
138
|
-
'
|
|
139
|
-
'domain_id': None,
|
|
140
|
-
'enabled': True,
|
|
127
|
+
'remote_ids': self.idp.remote_ids[:1],
|
|
128
|
+
'is_enabled': True,
|
|
141
129
|
}
|
|
142
130
|
|
|
143
|
-
self.
|
|
144
|
-
id=
|
|
131
|
+
self.identity_sdk_client.create_identity_provider.assert_called_with(
|
|
132
|
+
id=self.idp.id, **kwargs
|
|
145
133
|
)
|
|
146
134
|
|
|
147
135
|
self.assertEqual(self.columns, columns)
|
|
@@ -150,28 +138,26 @@ class TestIdentityProviderCreate(TestIdentityProvider):
|
|
|
150
138
|
def test_create_identity_provider_remote_ids_multiple(self):
|
|
151
139
|
arglist = [
|
|
152
140
|
'--remote-id',
|
|
153
|
-
|
|
141
|
+
self.idp.remote_ids[0],
|
|
154
142
|
'--remote-id',
|
|
155
|
-
|
|
156
|
-
|
|
143
|
+
self.idp.remote_ids[1],
|
|
144
|
+
self.idp.id,
|
|
157
145
|
]
|
|
158
146
|
verifylist = [
|
|
159
|
-
('identity_provider_id',
|
|
160
|
-
('remote_ids',
|
|
147
|
+
('identity_provider_id', self.idp.id),
|
|
148
|
+
('remote_ids', self.idp.remote_ids),
|
|
161
149
|
]
|
|
162
150
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
163
151
|
columns, data = self.cmd.take_action(parsed_args)
|
|
164
152
|
|
|
165
153
|
# Set expected values
|
|
166
154
|
kwargs = {
|
|
167
|
-
'remote_ids':
|
|
168
|
-
'
|
|
169
|
-
'domain_id': None,
|
|
170
|
-
'enabled': True,
|
|
155
|
+
'remote_ids': self.idp.remote_ids,
|
|
156
|
+
'is_enabled': True,
|
|
171
157
|
}
|
|
172
158
|
|
|
173
|
-
self.
|
|
174
|
-
id=
|
|
159
|
+
self.identity_sdk_client.create_identity_provider.assert_called_with(
|
|
160
|
+
id=self.idp.id, **kwargs
|
|
175
161
|
)
|
|
176
162
|
|
|
177
163
|
self.assertEqual(self.columns, columns)
|
|
@@ -181,16 +167,16 @@ class TestIdentityProviderCreate(TestIdentityProvider):
|
|
|
181
167
|
arglist = [
|
|
182
168
|
'--remote-id-file',
|
|
183
169
|
'/tmp/file_name',
|
|
184
|
-
|
|
170
|
+
self.idp.id,
|
|
185
171
|
]
|
|
186
172
|
verifylist = [
|
|
187
|
-
('identity_provider_id',
|
|
173
|
+
('identity_provider_id', self.idp.id),
|
|
188
174
|
('remote_id_file', '/tmp/file_name'),
|
|
189
175
|
]
|
|
190
176
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
191
177
|
|
|
192
178
|
mocker = mock.Mock()
|
|
193
|
-
mocker.return_value = "\n".join(
|
|
179
|
+
mocker.return_value = "\n".join(self.idp.remote_ids)
|
|
194
180
|
with mock.patch(
|
|
195
181
|
"openstackclient.identity.v3.identity_provider."
|
|
196
182
|
"utils.read_blob_file_contents",
|
|
@@ -200,83 +186,80 @@ class TestIdentityProviderCreate(TestIdentityProvider):
|
|
|
200
186
|
|
|
201
187
|
# Set expected values
|
|
202
188
|
kwargs = {
|
|
203
|
-
'remote_ids':
|
|
204
|
-
'
|
|
205
|
-
'domain_id': None,
|
|
206
|
-
'enabled': True,
|
|
189
|
+
'remote_ids': self.idp.remote_ids,
|
|
190
|
+
'is_enabled': True,
|
|
207
191
|
}
|
|
208
192
|
|
|
209
|
-
self.
|
|
210
|
-
id=
|
|
193
|
+
self.identity_sdk_client.create_identity_provider.assert_called_with(
|
|
194
|
+
id=self.idp.id, **kwargs
|
|
211
195
|
)
|
|
212
196
|
|
|
213
197
|
self.assertEqual(self.columns, columns)
|
|
214
198
|
self.assertCountEqual(self.datalist, data)
|
|
215
199
|
|
|
216
200
|
def test_create_identity_provider_disabled(self):
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
self.
|
|
201
|
+
idp_disabled = sdk_fakes.generate_fake_resource(
|
|
202
|
+
_identity_provider.IdentityProvider,
|
|
203
|
+
domain_id=self.domain.id,
|
|
204
|
+
remote_ids=['entity1', 'entity2'],
|
|
205
|
+
is_enabled=False,
|
|
206
|
+
)
|
|
207
|
+
self.identity_sdk_client.create_identity_provider.return_value = (
|
|
208
|
+
idp_disabled
|
|
209
|
+
)
|
|
210
|
+
self.cmd = identity_provider.CreateIdentityProvider(self.app, None)
|
|
224
211
|
|
|
225
212
|
arglist = [
|
|
226
213
|
'--disable',
|
|
227
|
-
|
|
214
|
+
idp_disabled.id,
|
|
228
215
|
]
|
|
229
216
|
verifylist = [
|
|
230
|
-
('identity_provider_id',
|
|
217
|
+
('identity_provider_id', idp_disabled.id),
|
|
231
218
|
]
|
|
232
219
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
233
220
|
columns, data = self.cmd.take_action(parsed_args)
|
|
234
221
|
|
|
235
222
|
# Set expected values
|
|
236
223
|
kwargs = {
|
|
237
|
-
'
|
|
238
|
-
'enabled': False,
|
|
239
|
-
'description': None,
|
|
240
|
-
'domain_id': None,
|
|
224
|
+
'is_enabled': False,
|
|
241
225
|
}
|
|
242
226
|
|
|
243
|
-
self.
|
|
244
|
-
id=
|
|
227
|
+
self.identity_sdk_client.create_identity_provider.assert_called_with(
|
|
228
|
+
id=idp_disabled.id, **kwargs
|
|
245
229
|
)
|
|
246
230
|
|
|
247
231
|
self.assertEqual(self.columns, columns)
|
|
248
232
|
datalist = (
|
|
249
|
-
|
|
250
|
-
|
|
233
|
+
idp_disabled.authorization_ttl,
|
|
234
|
+
idp_disabled.description,
|
|
235
|
+
self.domain.id,
|
|
251
236
|
False,
|
|
252
|
-
|
|
253
|
-
|
|
237
|
+
idp_disabled.id,
|
|
238
|
+
format_columns.ListColumn(self.idp.remote_ids),
|
|
254
239
|
)
|
|
255
240
|
self.assertCountEqual(datalist, data)
|
|
256
241
|
|
|
257
242
|
def test_create_identity_provider_domain_name(self):
|
|
258
243
|
arglist = [
|
|
259
244
|
'--domain',
|
|
260
|
-
|
|
261
|
-
|
|
245
|
+
self.domain.name,
|
|
246
|
+
self.idp.id,
|
|
262
247
|
]
|
|
263
248
|
verifylist = [
|
|
264
|
-
('identity_provider_id',
|
|
265
|
-
('domain',
|
|
249
|
+
('identity_provider_id', self.idp.id),
|
|
250
|
+
('domain', self.domain.name),
|
|
266
251
|
]
|
|
267
252
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
268
253
|
columns, data = self.cmd.take_action(parsed_args)
|
|
269
254
|
|
|
270
255
|
# Set expected values
|
|
271
256
|
kwargs = {
|
|
272
|
-
'
|
|
273
|
-
'
|
|
274
|
-
'domain_id': identity_fakes.domain_id,
|
|
275
|
-
'enabled': True,
|
|
257
|
+
'domain_id': self.domain.id,
|
|
258
|
+
'is_enabled': True,
|
|
276
259
|
}
|
|
277
260
|
|
|
278
|
-
self.
|
|
279
|
-
id=
|
|
261
|
+
self.identity_sdk_client.create_identity_provider.assert_called_with(
|
|
262
|
+
id=self.idp.id, **kwargs
|
|
280
263
|
)
|
|
281
264
|
|
|
282
265
|
self.assertEqual(self.columns, columns)
|
|
@@ -285,26 +268,24 @@ class TestIdentityProviderCreate(TestIdentityProvider):
|
|
|
285
268
|
def test_create_identity_provider_domain_id(self):
|
|
286
269
|
arglist = [
|
|
287
270
|
'--domain',
|
|
288
|
-
|
|
289
|
-
|
|
271
|
+
self.domain.id,
|
|
272
|
+
self.idp.id,
|
|
290
273
|
]
|
|
291
274
|
verifylist = [
|
|
292
|
-
('identity_provider_id',
|
|
293
|
-
('domain',
|
|
275
|
+
('identity_provider_id', self.idp.id),
|
|
276
|
+
('domain', self.domain.id),
|
|
294
277
|
]
|
|
295
278
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
296
279
|
columns, data = self.cmd.take_action(parsed_args)
|
|
297
280
|
|
|
298
281
|
# Set expected values
|
|
299
282
|
kwargs = {
|
|
300
|
-
'
|
|
301
|
-
'
|
|
302
|
-
'domain_id': identity_fakes.domain_id,
|
|
303
|
-
'enabled': True,
|
|
283
|
+
'domain_id': self.domain.id,
|
|
284
|
+
'is_enabled': True,
|
|
304
285
|
}
|
|
305
286
|
|
|
306
|
-
self.
|
|
307
|
-
id=
|
|
287
|
+
self.identity_sdk_client.create_identity_provider.assert_called_with(
|
|
288
|
+
id=self.idp.id, **kwargs
|
|
308
289
|
)
|
|
309
290
|
|
|
310
291
|
self.assertEqual(self.columns, columns)
|
|
@@ -314,10 +295,10 @@ class TestIdentityProviderCreate(TestIdentityProvider):
|
|
|
314
295
|
arglist = [
|
|
315
296
|
'--authorization-ttl',
|
|
316
297
|
'60',
|
|
317
|
-
|
|
298
|
+
self.idp.id,
|
|
318
299
|
]
|
|
319
300
|
verifylist = [
|
|
320
|
-
('identity_provider_id',
|
|
301
|
+
('identity_provider_id', self.idp.id),
|
|
321
302
|
('authorization_ttl', 60),
|
|
322
303
|
]
|
|
323
304
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
@@ -325,15 +306,12 @@ class TestIdentityProviderCreate(TestIdentityProvider):
|
|
|
325
306
|
|
|
326
307
|
# Set expected values
|
|
327
308
|
kwargs = {
|
|
328
|
-
'
|
|
329
|
-
'description': None,
|
|
330
|
-
'domain_id': None,
|
|
331
|
-
'enabled': True,
|
|
309
|
+
'is_enabled': True,
|
|
332
310
|
'authorization_ttl': 60,
|
|
333
311
|
}
|
|
334
312
|
|
|
335
|
-
self.
|
|
336
|
-
id=
|
|
313
|
+
self.identity_sdk_client.create_identity_provider.assert_called_with(
|
|
314
|
+
id=self.idp.id, **kwargs
|
|
337
315
|
)
|
|
338
316
|
|
|
339
317
|
self.assertEqual(self.columns, columns)
|
|
@@ -343,10 +321,10 @@ class TestIdentityProviderCreate(TestIdentityProvider):
|
|
|
343
321
|
arglist = [
|
|
344
322
|
'--authorization-ttl',
|
|
345
323
|
'0',
|
|
346
|
-
|
|
324
|
+
self.idp.id,
|
|
347
325
|
]
|
|
348
326
|
verifylist = [
|
|
349
|
-
('identity_provider_id',
|
|
327
|
+
('identity_provider_id', self.idp.id),
|
|
350
328
|
('authorization_ttl', 0),
|
|
351
329
|
]
|
|
352
330
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
@@ -354,15 +332,12 @@ class TestIdentityProviderCreate(TestIdentityProvider):
|
|
|
354
332
|
|
|
355
333
|
# Set expected values
|
|
356
334
|
kwargs = {
|
|
357
|
-
'
|
|
358
|
-
'description': None,
|
|
359
|
-
'domain_id': None,
|
|
360
|
-
'enabled': True,
|
|
335
|
+
'is_enabled': True,
|
|
361
336
|
'authorization_ttl': 0,
|
|
362
337
|
}
|
|
363
338
|
|
|
364
|
-
self.
|
|
365
|
-
id=
|
|
339
|
+
self.identity_sdk_client.create_identity_provider.assert_called_with(
|
|
340
|
+
id=self.idp.id, **kwargs
|
|
366
341
|
)
|
|
367
342
|
|
|
368
343
|
self.assertEqual(self.columns, columns)
|
|
@@ -372,10 +347,10 @@ class TestIdentityProviderCreate(TestIdentityProvider):
|
|
|
372
347
|
arglist = [
|
|
373
348
|
'--authorization-ttl',
|
|
374
349
|
'-60',
|
|
375
|
-
|
|
350
|
+
self.idp.id,
|
|
376
351
|
]
|
|
377
352
|
verifylist = [
|
|
378
|
-
('identity_provider_id',
|
|
353
|
+
('identity_provider_id', self.idp.id),
|
|
379
354
|
('authorization_ttl', -60),
|
|
380
355
|
]
|
|
381
356
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
@@ -387,7 +362,7 @@ class TestIdentityProviderCreate(TestIdentityProvider):
|
|
|
387
362
|
arglist = [
|
|
388
363
|
'--authorization-ttl',
|
|
389
364
|
'spam',
|
|
390
|
-
|
|
365
|
+
self.idp.id,
|
|
391
366
|
]
|
|
392
367
|
verifylist = []
|
|
393
368
|
self.assertRaises(
|
|
@@ -399,53 +374,46 @@ class TestIdentityProviderCreate(TestIdentityProvider):
|
|
|
399
374
|
)
|
|
400
375
|
|
|
401
376
|
|
|
402
|
-
class TestIdentityProviderDelete(
|
|
377
|
+
class TestIdentityProviderDelete(identity_fakes.TestFederatedIdentity):
|
|
403
378
|
def setUp(self):
|
|
404
379
|
super().setUp()
|
|
405
380
|
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
None,
|
|
409
|
-
copy.deepcopy(identity_fakes.IDENTITY_PROVIDER),
|
|
410
|
-
loaded=True,
|
|
381
|
+
self.idp = sdk_fakes.generate_fake_resource(
|
|
382
|
+
_identity_provider.IdentityProvider
|
|
411
383
|
)
|
|
412
384
|
|
|
413
|
-
self.
|
|
385
|
+
self.identity_sdk_client.delete_identity_provider.return_value = None
|
|
414
386
|
self.cmd = identity_provider.DeleteIdentityProvider(self.app, None)
|
|
415
387
|
|
|
416
388
|
def test_delete_identity_provider(self):
|
|
417
389
|
arglist = [
|
|
418
|
-
|
|
390
|
+
self.idp.id,
|
|
419
391
|
]
|
|
420
392
|
verifylist = [
|
|
421
|
-
('identity_provider', [
|
|
393
|
+
('identity_provider', [self.idp.id]),
|
|
422
394
|
]
|
|
423
395
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
424
396
|
|
|
425
397
|
result = self.cmd.take_action(parsed_args)
|
|
426
398
|
|
|
427
|
-
self.
|
|
428
|
-
|
|
399
|
+
self.identity_sdk_client.delete_identity_provider.assert_called_with(
|
|
400
|
+
self.idp.id,
|
|
429
401
|
)
|
|
430
402
|
self.assertIsNone(result)
|
|
431
403
|
|
|
432
404
|
|
|
433
|
-
class TestIdentityProviderList(
|
|
405
|
+
class TestIdentityProviderList(identity_fakes.TestFederatedIdentity):
|
|
434
406
|
def setUp(self):
|
|
435
407
|
super().setUp()
|
|
436
408
|
|
|
437
|
-
self.
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
409
|
+
self.domain = sdk_fakes.generate_fake_resource(_domain.Domain)
|
|
410
|
+
self.idp = sdk_fakes.generate_fake_resource(
|
|
411
|
+
_identity_provider.IdentityProvider,
|
|
412
|
+
domain_id=self.domain.id,
|
|
413
|
+
remote_ids=['entity1', 'entity2'],
|
|
441
414
|
)
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
None,
|
|
445
|
-
copy.deepcopy(identity_fakes.IDENTITY_PROVIDER),
|
|
446
|
-
loaded=True,
|
|
447
|
-
),
|
|
448
|
-
]
|
|
415
|
+
|
|
416
|
+
self.identity_sdk_client.identity_providers.return_value = [self.idp]
|
|
449
417
|
|
|
450
418
|
# Get the command object to test
|
|
451
419
|
self.cmd = identity_provider.ListIdentityProvider(self.app, None)
|
|
@@ -460,23 +428,23 @@ class TestIdentityProviderList(TestIdentityProvider):
|
|
|
460
428
|
# containing the data to be listed.
|
|
461
429
|
columns, data = self.cmd.take_action(parsed_args)
|
|
462
430
|
|
|
463
|
-
self.
|
|
431
|
+
self.identity_sdk_client.identity_providers.assert_called_with()
|
|
464
432
|
|
|
465
433
|
collist = ('ID', 'Enabled', 'Domain ID', 'Description')
|
|
466
434
|
self.assertEqual(collist, columns)
|
|
467
435
|
datalist = (
|
|
468
436
|
(
|
|
469
|
-
|
|
437
|
+
self.idp.id,
|
|
470
438
|
True,
|
|
471
|
-
|
|
472
|
-
|
|
439
|
+
self.domain.id,
|
|
440
|
+
self.idp.description,
|
|
473
441
|
),
|
|
474
442
|
)
|
|
475
443
|
self.assertCountEqual(datalist, tuple(data))
|
|
476
444
|
|
|
477
445
|
def test_identity_provider_list_ID_option(self):
|
|
478
|
-
arglist = ['--id',
|
|
479
|
-
verifylist = [('id',
|
|
446
|
+
arglist = ['--id', self.idp.id]
|
|
447
|
+
verifylist = [('id', self.idp.id)]
|
|
480
448
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
481
449
|
|
|
482
450
|
# In base command class Lister in cliff, abstract method take_action()
|
|
@@ -484,17 +452,19 @@ class TestIdentityProviderList(TestIdentityProvider):
|
|
|
484
452
|
# containing the data to be listed.
|
|
485
453
|
columns, data = self.cmd.take_action(parsed_args)
|
|
486
454
|
|
|
487
|
-
kwargs = {'id':
|
|
488
|
-
self.
|
|
455
|
+
kwargs = {'id': self.idp.id}
|
|
456
|
+
self.identity_sdk_client.identity_providers.assert_called_with(
|
|
457
|
+
**kwargs
|
|
458
|
+
)
|
|
489
459
|
|
|
490
460
|
collist = ('ID', 'Enabled', 'Domain ID', 'Description')
|
|
491
461
|
self.assertEqual(collist, columns)
|
|
492
462
|
datalist = (
|
|
493
463
|
(
|
|
494
|
-
|
|
464
|
+
self.idp.id,
|
|
495
465
|
True,
|
|
496
|
-
|
|
497
|
-
|
|
466
|
+
self.domain.id,
|
|
467
|
+
self.idp.description,
|
|
498
468
|
),
|
|
499
469
|
)
|
|
500
470
|
self.assertCountEqual(datalist, tuple(data))
|
|
@@ -509,38 +479,35 @@ class TestIdentityProviderList(TestIdentityProvider):
|
|
|
509
479
|
# containing the data to be listed.
|
|
510
480
|
columns, data = self.cmd.take_action(parsed_args)
|
|
511
481
|
|
|
512
|
-
kwargs = {'
|
|
513
|
-
self.
|
|
482
|
+
kwargs = {'is_enabled': True}
|
|
483
|
+
self.identity_sdk_client.identity_providers.assert_called_with(
|
|
484
|
+
**kwargs
|
|
485
|
+
)
|
|
514
486
|
|
|
515
487
|
collist = ('ID', 'Enabled', 'Domain ID', 'Description')
|
|
516
488
|
self.assertEqual(collist, columns)
|
|
517
489
|
datalist = (
|
|
518
490
|
(
|
|
519
|
-
|
|
491
|
+
self.idp.id,
|
|
520
492
|
True,
|
|
521
|
-
|
|
522
|
-
|
|
493
|
+
self.domain.id,
|
|
494
|
+
self.idp.description,
|
|
523
495
|
),
|
|
524
496
|
)
|
|
525
497
|
self.assertCountEqual(datalist, tuple(data))
|
|
526
498
|
|
|
527
499
|
|
|
528
|
-
class TestIdentityProviderSet(
|
|
529
|
-
columns = (
|
|
530
|
-
'description',
|
|
531
|
-
'enabled',
|
|
532
|
-
'id',
|
|
533
|
-
'remote_ids',
|
|
534
|
-
)
|
|
535
|
-
datalist = (
|
|
536
|
-
identity_fakes.idp_description,
|
|
537
|
-
True,
|
|
538
|
-
identity_fakes.idp_id,
|
|
539
|
-
identity_fakes.idp_remote_ids,
|
|
540
|
-
)
|
|
541
|
-
|
|
500
|
+
class TestIdentityProviderSet(identity_fakes.TestFederatedIdentity):
|
|
542
501
|
def setUp(self):
|
|
543
502
|
super().setUp()
|
|
503
|
+
|
|
504
|
+
self.domain = sdk_fakes.generate_fake_resource(_domain.Domain)
|
|
505
|
+
self.idp = sdk_fakes.generate_fake_resource(
|
|
506
|
+
_identity_provider.IdentityProvider,
|
|
507
|
+
domain_id=self.domain.id,
|
|
508
|
+
remote_ids=['entity1', 'entity2'],
|
|
509
|
+
)
|
|
510
|
+
|
|
544
511
|
self.cmd = identity_provider.SetIdentityProvider(self.app, None)
|
|
545
512
|
|
|
546
513
|
def test_identity_provider_set_description(self):
|
|
@@ -548,26 +515,33 @@ class TestIdentityProviderSet(TestIdentityProvider):
|
|
|
548
515
|
|
|
549
516
|
def prepare(self):
|
|
550
517
|
"""Prepare fake return objects before the test is executed"""
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
518
|
+
new_description = 'new desc'
|
|
519
|
+
|
|
520
|
+
self.updated_idp = sdk_fakes.generate_fake_resource(
|
|
521
|
+
_identity_provider.IdentityProvider,
|
|
522
|
+
id=self.idp.id,
|
|
523
|
+
description=new_description,
|
|
524
|
+
domain_id=self.domain.id,
|
|
525
|
+
remote_ids=self.idp.remote_ids,
|
|
526
|
+
)
|
|
527
|
+
self.identity_sdk_client.update_identity_provider.return_value = (
|
|
528
|
+
self.updated_idp
|
|
529
|
+
)
|
|
555
530
|
|
|
556
531
|
prepare(self)
|
|
557
|
-
|
|
558
|
-
arglist = ['--description', new_description, identity_fakes.idp_id]
|
|
532
|
+
arglist = ['--description', self.updated_idp.description, self.idp.id]
|
|
559
533
|
verifylist = [
|
|
560
|
-
('identity_provider',
|
|
561
|
-
('description',
|
|
534
|
+
('identity_provider', self.idp.id),
|
|
535
|
+
('description', self.updated_idp.description),
|
|
562
536
|
('enable', False),
|
|
563
537
|
('disable', False),
|
|
564
538
|
('remote_ids', None),
|
|
565
539
|
]
|
|
566
540
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
567
541
|
self.cmd.take_action(parsed_args)
|
|
568
|
-
self.
|
|
569
|
-
|
|
570
|
-
description=
|
|
542
|
+
self.identity_sdk_client.update_identity_provider.assert_called_with(
|
|
543
|
+
self.idp.id,
|
|
544
|
+
description=self.updated_idp.description,
|
|
571
545
|
)
|
|
572
546
|
|
|
573
547
|
def test_identity_provider_disable(self):
|
|
@@ -578,34 +552,40 @@ class TestIdentityProviderSet(TestIdentityProvider):
|
|
|
578
552
|
|
|
579
553
|
def prepare(self):
|
|
580
554
|
"""Prepare fake return objects before the test is executed"""
|
|
581
|
-
updated_idp =
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
555
|
+
self.updated_idp = sdk_fakes.generate_fake_resource(
|
|
556
|
+
_identity_provider.IdentityProvider,
|
|
557
|
+
id=self.idp.id,
|
|
558
|
+
enabled=False,
|
|
559
|
+
domain_id=self.domain.id,
|
|
560
|
+
remote_ids=self.idp.remote_ids,
|
|
561
|
+
)
|
|
562
|
+
self.identity_sdk_client.update_identity_provider.return_value = (
|
|
563
|
+
self.updated_idp
|
|
564
|
+
)
|
|
585
565
|
|
|
586
566
|
prepare(self)
|
|
587
567
|
arglist = [
|
|
588
568
|
'--disable',
|
|
589
|
-
|
|
569
|
+
self.idp.id,
|
|
590
570
|
'--remote-id',
|
|
591
|
-
|
|
571
|
+
self.idp.remote_ids[0],
|
|
592
572
|
'--remote-id',
|
|
593
|
-
|
|
573
|
+
self.idp.remote_ids[1],
|
|
594
574
|
]
|
|
595
575
|
verifylist = [
|
|
596
|
-
('identity_provider',
|
|
576
|
+
('identity_provider', self.idp.id),
|
|
597
577
|
('description', None),
|
|
598
578
|
('enable', False),
|
|
599
579
|
('disable', True),
|
|
600
|
-
('remote_ids',
|
|
580
|
+
('remote_ids', self.idp.remote_ids),
|
|
601
581
|
]
|
|
602
582
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
603
583
|
|
|
604
584
|
self.cmd.take_action(parsed_args)
|
|
605
|
-
self.
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
remote_ids=
|
|
585
|
+
self.identity_sdk_client.update_identity_provider.assert_called_with(
|
|
586
|
+
self.idp.id,
|
|
587
|
+
is_enabled=False,
|
|
588
|
+
remote_ids=self.idp.remote_ids,
|
|
609
589
|
)
|
|
610
590
|
|
|
611
591
|
def test_identity_provider_enable(self):
|
|
@@ -616,36 +596,40 @@ class TestIdentityProviderSet(TestIdentityProvider):
|
|
|
616
596
|
|
|
617
597
|
def prepare(self):
|
|
618
598
|
"""Prepare fake return objects before the test is executed"""
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
599
|
+
self.updated_idp = sdk_fakes.generate_fake_resource(
|
|
600
|
+
_identity_provider.IdentityProvider,
|
|
601
|
+
id=self.idp.id,
|
|
602
|
+
is_enabled=True,
|
|
603
|
+
domain_id=self.domain.id,
|
|
604
|
+
remote_ids=self.idp.remote_ids,
|
|
605
|
+
)
|
|
606
|
+
self.identity_sdk_client.update_identity_provider.return_value = (
|
|
607
|
+
self.updated_idp
|
|
623
608
|
)
|
|
624
|
-
self.identity_providers_mock.update.return_value = resources
|
|
625
609
|
|
|
626
610
|
prepare(self)
|
|
627
611
|
arglist = [
|
|
628
612
|
'--enable',
|
|
629
|
-
|
|
613
|
+
self.idp.id,
|
|
630
614
|
'--remote-id',
|
|
631
|
-
|
|
615
|
+
self.idp.remote_ids[0],
|
|
632
616
|
'--remote-id',
|
|
633
|
-
|
|
617
|
+
self.idp.remote_ids[1],
|
|
634
618
|
]
|
|
635
619
|
verifylist = [
|
|
636
|
-
('identity_provider',
|
|
620
|
+
('identity_provider', self.idp.id),
|
|
637
621
|
('description', None),
|
|
638
622
|
('enable', True),
|
|
639
623
|
('disable', False),
|
|
640
|
-
('remote_ids',
|
|
624
|
+
('remote_ids', self.idp.remote_ids),
|
|
641
625
|
]
|
|
642
626
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
643
627
|
|
|
644
628
|
self.cmd.take_action(parsed_args)
|
|
645
|
-
self.
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
remote_ids=
|
|
629
|
+
self.identity_sdk_client.update_identity_provider.assert_called_with(
|
|
630
|
+
self.idp.id,
|
|
631
|
+
is_enabled=True,
|
|
632
|
+
remote_ids=self.idp.remote_ids,
|
|
649
633
|
)
|
|
650
634
|
|
|
651
635
|
def test_identity_provider_replace_remote_ids(self):
|
|
@@ -658,20 +642,25 @@ class TestIdentityProviderSet(TestIdentityProvider):
|
|
|
658
642
|
"""Prepare fake return objects before the test is executed"""
|
|
659
643
|
self.new_remote_id = 'new_entity'
|
|
660
644
|
|
|
661
|
-
updated_idp =
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
645
|
+
self.updated_idp = sdk_fakes.generate_fake_resource(
|
|
646
|
+
_identity_provider.IdentityProvider,
|
|
647
|
+
id=self.idp.id,
|
|
648
|
+
domain_id=self.domain.id,
|
|
649
|
+
remote_ids=[self.new_remote_id],
|
|
650
|
+
)
|
|
651
|
+
self.identity_sdk_client.update_identity_provider.return_value = (
|
|
652
|
+
self.updated_idp
|
|
653
|
+
)
|
|
665
654
|
|
|
666
655
|
prepare(self)
|
|
667
656
|
arglist = [
|
|
668
657
|
'--enable',
|
|
669
|
-
|
|
658
|
+
self.idp.id,
|
|
670
659
|
'--remote-id',
|
|
671
660
|
self.new_remote_id,
|
|
672
661
|
]
|
|
673
662
|
verifylist = [
|
|
674
|
-
('identity_provider',
|
|
663
|
+
('identity_provider', self.idp.id),
|
|
675
664
|
('description', None),
|
|
676
665
|
('enable', True),
|
|
677
666
|
('disable', False),
|
|
@@ -680,9 +669,9 @@ class TestIdentityProviderSet(TestIdentityProvider):
|
|
|
680
669
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
681
670
|
|
|
682
671
|
self.cmd.take_action(parsed_args)
|
|
683
|
-
self.
|
|
684
|
-
|
|
685
|
-
|
|
672
|
+
self.identity_sdk_client.update_identity_provider.assert_called_with(
|
|
673
|
+
self.idp.id,
|
|
674
|
+
is_enabled=True,
|
|
686
675
|
remote_ids=[self.new_remote_id],
|
|
687
676
|
)
|
|
688
677
|
|
|
@@ -696,20 +685,25 @@ class TestIdentityProviderSet(TestIdentityProvider):
|
|
|
696
685
|
"""Prepare fake return objects before the test is executed"""
|
|
697
686
|
self.new_remote_id = 'new_entity'
|
|
698
687
|
|
|
699
|
-
updated_idp =
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
688
|
+
self.updated_idp = sdk_fakes.generate_fake_resource(
|
|
689
|
+
_identity_provider.IdentityProvider,
|
|
690
|
+
id=self.idp.id,
|
|
691
|
+
domain_id=self.domain.id,
|
|
692
|
+
remote_ids=[self.new_remote_id],
|
|
693
|
+
)
|
|
694
|
+
self.identity_sdk_client.update_identity_provider.return_value = (
|
|
695
|
+
self.updated_idp
|
|
696
|
+
)
|
|
703
697
|
|
|
704
698
|
prepare(self)
|
|
705
699
|
arglist = [
|
|
706
700
|
'--enable',
|
|
707
|
-
|
|
701
|
+
self.idp.id,
|
|
708
702
|
'--remote-id-file',
|
|
709
703
|
self.new_remote_id,
|
|
710
704
|
]
|
|
711
705
|
verifylist = [
|
|
712
|
-
('identity_provider',
|
|
706
|
+
('identity_provider', self.idp.id),
|
|
713
707
|
('description', None),
|
|
714
708
|
('enable', True),
|
|
715
709
|
('disable', False),
|
|
@@ -725,35 +719,31 @@ class TestIdentityProviderSet(TestIdentityProvider):
|
|
|
725
719
|
mocker,
|
|
726
720
|
):
|
|
727
721
|
self.cmd.take_action(parsed_args)
|
|
728
|
-
self.
|
|
729
|
-
|
|
730
|
-
|
|
722
|
+
self.identity_sdk_client.update_identity_provider.assert_called_with(
|
|
723
|
+
self.idp.id,
|
|
724
|
+
is_enabled=True,
|
|
731
725
|
remote_ids=[self.new_remote_id],
|
|
732
726
|
)
|
|
733
727
|
|
|
734
728
|
def test_identity_provider_no_options(self):
|
|
735
729
|
def prepare(self):
|
|
736
730
|
"""Prepare fake return objects before the test is executed"""
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
731
|
+
self.updated_idp = sdk_fakes.generate_fake_resource(
|
|
732
|
+
_identity_provider.IdentityProvider,
|
|
733
|
+
id=self.idp.id,
|
|
734
|
+
domain_id=self.domain.id,
|
|
735
|
+
remote_ids=self.idp.remote_ids,
|
|
741
736
|
)
|
|
742
|
-
self.
|
|
743
|
-
|
|
744
|
-
resources = fakes.FakeResource(
|
|
745
|
-
None,
|
|
746
|
-
copy.deepcopy(identity_fakes.IDENTITY_PROVIDER),
|
|
747
|
-
loaded=True,
|
|
737
|
+
self.identity_sdk_client.update_identity_provider.return_value = (
|
|
738
|
+
self.updated_idp
|
|
748
739
|
)
|
|
749
|
-
self.identity_providers_mock.update.return_value = resources
|
|
750
740
|
|
|
751
741
|
prepare(self)
|
|
752
742
|
arglist = [
|
|
753
|
-
|
|
743
|
+
self.idp.id,
|
|
754
744
|
]
|
|
755
745
|
verifylist = [
|
|
756
|
-
('identity_provider',
|
|
746
|
+
('identity_provider', self.idp.id),
|
|
757
747
|
('enable', False),
|
|
758
748
|
('disable', False),
|
|
759
749
|
('remote_ids', None),
|
|
@@ -765,15 +755,21 @@ class TestIdentityProviderSet(TestIdentityProvider):
|
|
|
765
755
|
def test_identity_provider_set_authttl_positive(self):
|
|
766
756
|
def prepare(self):
|
|
767
757
|
"""Prepare fake return objects before the test is executed"""
|
|
768
|
-
updated_idp =
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
758
|
+
self.updated_idp = sdk_fakes.generate_fake_resource(
|
|
759
|
+
_identity_provider.IdentityProvider,
|
|
760
|
+
id=self.idp.id,
|
|
761
|
+
authorization_ttl=60,
|
|
762
|
+
domain_id=self.domain.id,
|
|
763
|
+
remote_ids=self.idp.remote_ids,
|
|
764
|
+
)
|
|
765
|
+
self.identity_sdk_client.update_identity_provider.return_value = (
|
|
766
|
+
self.updated_idp
|
|
767
|
+
)
|
|
772
768
|
|
|
773
769
|
prepare(self)
|
|
774
|
-
arglist = ['--authorization-ttl', '60',
|
|
770
|
+
arglist = ['--authorization-ttl', '60', self.idp.id]
|
|
775
771
|
verifylist = [
|
|
776
|
-
('identity_provider',
|
|
772
|
+
('identity_provider', self.idp.id),
|
|
777
773
|
('enable', False),
|
|
778
774
|
('disable', False),
|
|
779
775
|
('remote_ids', None),
|
|
@@ -781,23 +777,29 @@ class TestIdentityProviderSet(TestIdentityProvider):
|
|
|
781
777
|
]
|
|
782
778
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
783
779
|
self.cmd.take_action(parsed_args)
|
|
784
|
-
self.
|
|
785
|
-
|
|
780
|
+
self.identity_sdk_client.update_identity_provider.assert_called_with(
|
|
781
|
+
self.idp.id,
|
|
786
782
|
authorization_ttl=60,
|
|
787
783
|
)
|
|
788
784
|
|
|
789
785
|
def test_identity_provider_set_authttl_zero(self):
|
|
790
786
|
def prepare(self):
|
|
791
787
|
"""Prepare fake return objects before the test is executed"""
|
|
792
|
-
updated_idp =
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
788
|
+
self.updated_idp = sdk_fakes.generate_fake_resource(
|
|
789
|
+
_identity_provider.IdentityProvider,
|
|
790
|
+
id=self.idp.id,
|
|
791
|
+
authorization_ttl=0,
|
|
792
|
+
domain_id=self.domain.id,
|
|
793
|
+
remote_ids=self.idp.remote_ids,
|
|
794
|
+
)
|
|
795
|
+
self.identity_sdk_client.update_identity_provider.return_value = (
|
|
796
|
+
self.updated_idp
|
|
797
|
+
)
|
|
796
798
|
|
|
797
799
|
prepare(self)
|
|
798
|
-
arglist = ['--authorization-ttl', '0',
|
|
800
|
+
arglist = ['--authorization-ttl', '0', self.idp.id]
|
|
799
801
|
verifylist = [
|
|
800
|
-
('identity_provider',
|
|
802
|
+
('identity_provider', self.idp.id),
|
|
801
803
|
('enable', False),
|
|
802
804
|
('disable', False),
|
|
803
805
|
('remote_ids', None),
|
|
@@ -805,15 +807,15 @@ class TestIdentityProviderSet(TestIdentityProvider):
|
|
|
805
807
|
]
|
|
806
808
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
807
809
|
self.cmd.take_action(parsed_args)
|
|
808
|
-
self.
|
|
809
|
-
|
|
810
|
+
self.identity_sdk_client.update_identity_provider.assert_called_with(
|
|
811
|
+
self.idp.id,
|
|
810
812
|
authorization_ttl=0,
|
|
811
813
|
)
|
|
812
814
|
|
|
813
815
|
def test_identity_provider_set_authttl_negative(self):
|
|
814
|
-
arglist = ['--authorization-ttl', '-1',
|
|
816
|
+
arglist = ['--authorization-ttl', '-1', self.idp.id]
|
|
815
817
|
verifylist = [
|
|
816
|
-
('identity_provider',
|
|
818
|
+
('identity_provider', self.idp.id),
|
|
817
819
|
('enable', False),
|
|
818
820
|
('disable', False),
|
|
819
821
|
('remote_ids', None),
|
|
@@ -825,7 +827,7 @@ class TestIdentityProviderSet(TestIdentityProvider):
|
|
|
825
827
|
)
|
|
826
828
|
|
|
827
829
|
def test_identity_provider_set_authttl_not_int(self):
|
|
828
|
-
arglist = ['--authorization-ttl', 'spam',
|
|
830
|
+
arglist = ['--authorization-ttl', 'spam', self.idp.id]
|
|
829
831
|
verifylist = []
|
|
830
832
|
self.assertRaises(
|
|
831
833
|
test_utils.ParserException,
|
|
@@ -836,47 +838,49 @@ class TestIdentityProviderSet(TestIdentityProvider):
|
|
|
836
838
|
)
|
|
837
839
|
|
|
838
840
|
|
|
839
|
-
class TestIdentityProviderShow(
|
|
841
|
+
class TestIdentityProviderShow(identity_fakes.TestFederatedIdentity):
|
|
840
842
|
def setUp(self):
|
|
841
843
|
super().setUp()
|
|
842
844
|
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
loaded=True,
|
|
845
|
+
self.idp = sdk_fakes.generate_fake_resource(
|
|
846
|
+
_identity_provider.IdentityProvider,
|
|
847
|
+
remote_ids=['entity1', 'entity2'],
|
|
847
848
|
)
|
|
848
849
|
|
|
849
|
-
self.
|
|
850
|
-
Exception("Not found"),
|
|
851
|
-
ret,
|
|
852
|
-
]
|
|
853
|
-
self.identity_providers_mock.get.return_value = ret
|
|
850
|
+
self.identity_sdk_client.get_identity_provider.return_value = self.idp
|
|
854
851
|
|
|
855
|
-
# Get the command object to test
|
|
856
852
|
self.cmd = identity_provider.ShowIdentityProvider(self.app, None)
|
|
857
853
|
|
|
858
854
|
def test_identity_provider_show(self):
|
|
859
855
|
arglist = [
|
|
860
|
-
|
|
856
|
+
self.idp.id,
|
|
861
857
|
]
|
|
862
858
|
verifylist = [
|
|
863
|
-
('identity_provider',
|
|
859
|
+
('identity_provider', self.idp.id),
|
|
864
860
|
]
|
|
865
861
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
866
862
|
|
|
867
863
|
columns, data = self.cmd.take_action(parsed_args)
|
|
868
864
|
|
|
869
|
-
self.
|
|
870
|
-
|
|
865
|
+
self.identity_sdk_client.get_identity_provider.assert_called_with(
|
|
866
|
+
self.idp.id,
|
|
871
867
|
)
|
|
872
868
|
|
|
873
|
-
collist = (
|
|
869
|
+
collist = (
|
|
870
|
+
'authorization_ttl',
|
|
871
|
+
'description',
|
|
872
|
+
'domain_id',
|
|
873
|
+
'enabled',
|
|
874
|
+
'id',
|
|
875
|
+
'remote_ids',
|
|
876
|
+
)
|
|
874
877
|
self.assertEqual(collist, columns)
|
|
875
878
|
datalist = (
|
|
876
|
-
|
|
877
|
-
|
|
879
|
+
self.idp.authorization_ttl,
|
|
880
|
+
self.idp.description,
|
|
881
|
+
self.idp.domain_id,
|
|
878
882
|
True,
|
|
879
|
-
|
|
880
|
-
|
|
883
|
+
self.idp.id,
|
|
884
|
+
format_columns.ListColumn(self.idp.remote_ids),
|
|
881
885
|
)
|
|
882
886
|
self.assertCountEqual(datalist, data)
|