diff --git a/releasenotes/notes/identity-clients-as-library-e663c6132fcac6c2.yaml b/releasenotes/notes/identity-clients-as-library-e663c6132fcac6c2.yaml index f9173a007e..1f3d9305ff 100644 --- a/releasenotes/notes/identity-clients-as-library-e663c6132fcac6c2.yaml +++ b/releasenotes/notes/identity-clients-as-library-e663c6132fcac6c2.yaml @@ -7,6 +7,7 @@ features: any maintenance changes. * endpoints_client(v2) + * endpoints_client(v3) * roles_client(v2) * services_client(v2) * tenants_client(v2) diff --git a/tempest/services/identity/v3/json/endpoints_client.py b/tempest/lib/services/identity/v3/endpoints_client.py similarity index 100% rename from tempest/services/identity/v3/json/endpoints_client.py rename to tempest/lib/services/identity/v3/endpoints_client.py diff --git a/tempest/services/identity/v3/__init__.py b/tempest/services/identity/v3/__init__.py index 144c5a9726..b9ed4fa67a 100644 --- a/tempest/services/identity/v3/__init__.py +++ b/tempest/services/identity/v3/__init__.py @@ -12,11 +12,11 @@ # License for the specific language governing permissions and limitations under # the License. +from tempest.lib.services.identity.v3.endpoints_client import EndPointsClient from tempest.lib.services.identity.v3.token_client import V3TokenClient from tempest.services.identity.v3.json.credentials_client import \ CredentialsClient from tempest.services.identity.v3.json.domains_client import DomainsClient -from tempest.services.identity.v3.json.endpoints_client import EndPointsClient from tempest.services.identity.v3.json.groups_client import GroupsClient from tempest.services.identity.v3.json.identity_client import IdentityClient from tempest.services.identity.v3.json.policies_client import PoliciesClient @@ -27,7 +27,7 @@ from tempest.services.identity.v3.json.services_client import ServicesClient from tempest.services.identity.v3.json.trusts_client import TrustsClient from tempest.services.identity.v3.json.users_clients import UsersClient -__all__ = ['V3TokenClient', 'CredentialsClient', 'DomainsClient', - 'EndPointsClient', 'GroupsClient', 'IdentityClient', - 'PoliciesClient', 'ProjectsClient', 'RegionsClient', 'RolesClient', - 'ServicesClient', 'TrustsClient', 'UsersClient', ] +__all__ = ['EndPointsClient', 'V3TokenClient', 'CredentialsClient', + 'DomainsClient', 'GroupsClient', 'IdentityClient', 'PoliciesClient', + 'ProjectsClient', 'RegionsClient', 'RolesClient', 'ServicesClient', + 'TrustsClient', 'UsersClient', ] diff --git a/tempest/tests/lib/services/identity/v3/test_endpoints_client.py b/tempest/tests/lib/services/identity/v3/test_endpoints_client.py new file mode 100644 index 0000000000..f8c553fb37 --- /dev/null +++ b/tempest/tests/lib/services/identity/v3/test_endpoints_client.py @@ -0,0 +1,100 @@ +# Copyright 2016 Red Hat, Inc. +# +# 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 tempest.lib.services.identity.v3 import endpoints_client +from tempest.tests.lib import fake_auth_provider +from tempest.tests.lib.services import base + + +class TestEndpointsClient(base.BaseServiceTest): + FAKE_CREATE_ENDPOINT = { + "endpoint": { + "id": 1, + "tenantId": 1, + "region": "North", + "type": "compute", + "publicURL": "https://compute.north.public.com/v1", + "internalURL": "https://compute.north.internal.com/v1", + "adminURL": "https://compute.north.internal.com/v1" + } + } + + FAKE_LIST_ENDPOINTS = { + "endpoints": [ + { + "id": 1, + "tenantId": "1", + "region": "North", + "type": "compute", + "publicURL": "https://compute.north.public.com/v1", + "internalURL": "https://compute.north.internal.com/v1", + "adminURL": "https://compute.north.internal.com/v1" + }, + { + "id": 2, + "tenantId": "1", + "region": "South", + "type": "compute", + "publicURL": "https://compute.north.public.com/v1", + "internalURL": "https://compute.north.internal.com/v1", + "adminURL": "https://compute.north.internal.com/v1" + } + ] + } + + def setUp(self): + super(TestEndpointsClient, self).setUp() + fake_auth = fake_auth_provider.FakeAuthProvider() + self.client = endpoints_client.EndPointsClient(fake_auth, + 'identity', 'regionOne') + + def _test_create_endpoint(self, bytes_body=False): + self.check_service_client_function( + self.client.create_endpoint, + 'tempest.lib.common.rest_client.RestClient.post', + self.FAKE_CREATE_ENDPOINT, + bytes_body, + status=201, + service_id="b344506af7644f6794d9cb316600b020", + region="region-demo", + publicurl="https://compute.north.public.com/v1", + adminurl="https://compute.north.internal.com/v1", + internalurl="https://compute.north.internal.com/v1") + + def _test_list_endpoints(self, bytes_body=False): + self.check_service_client_function( + self.client.list_endpoints, + 'tempest.lib.common.rest_client.RestClient.get', + self.FAKE_LIST_ENDPOINTS, + bytes_body) + + def test_create_endpoint_with_str_body(self): + self._test_create_endpoint() + + def test_create_endpoint_with_bytes_body(self): + self._test_create_endpoint(bytes_body=True) + + def test_list_endpoints_with_str_body(self): + self._test_list_endpoints() + + def test_list_endpoints_with_bytes_body(self): + self._test_list_endpoints(bytes_body=True) + + def test_delete_endpoint(self): + self.check_service_client_function( + self.client.delete_endpoint, + 'tempest.lib.common.rest_client.RestClient.delete', + {}, + endpoint_id="b344506af7644f6794d9cb316600b020", + status=204)