Define v3 trusts_client as library

Migrate v3 API trusts_client to tempest.lib and add unit tests for the
service client.
Partially implements blueprint consistent-service-method-names

Change-Id: I3aab5f4906718e94612e4e62a460ba13418cdc1c
This commit is contained in:
Daniel Mellado 2016-09-01 10:29:24 +00:00
parent d00166fb46
commit c8d641a0f9
4 changed files with 166 additions and 14 deletions

View File

@ -1,12 +1,13 @@
---
features:
- |
Define identity service clients as libraries
Define identity service clients as libraries.
Add new service clients to the library interface so the other projects can use these modules as stable libraries without
any maintenance changes.
* identity_client(v2)
* groups_client(v3)
* trusts_client(v3)
* users_client(v3)
* identity_client(v3)
* roles_client(v3)

View File

@ -13,6 +13,7 @@
# limitations under the License.
from oslo_serialization import jsonutils as json
from six.moves.urllib import parse as urllib
from tempest.lib.common import rest_client
@ -38,16 +39,16 @@ class TrustsClient(rest_client.RestClient):
self.expected_success(204, resp.status)
return rest_client.ResponseBody(resp, body)
def list_trusts(self, trustor_user_id=None, trustee_user_id=None):
"""GET trusts."""
if trustor_user_id:
resp, body = self.get("OS-TRUST/trusts?trustor_user_id=%s"
% trustor_user_id)
elif trustee_user_id:
resp, body = self.get("OS-TRUST/trusts?trustee_user_id=%s"
% trustee_user_id)
else:
resp, body = self.get("OS-TRUST/trusts")
def list_trusts(self, **params):
"""Returns trusts
Available params: see http://developer.openstack.org/
api-ref/identity/v3-ext/index.html#list-trusts
"""
url = "OS-TRUST/trusts/"
if params:
url += '?%s' % urllib.urlencode(params)
resp, body = self.get(url)
self.expected_success(200, resp.status)
body = json.loads(body)
return rest_client.ResponseBody(resp, body)

View File

@ -23,14 +23,14 @@ from tempest.lib.services.identity.v3.regions_client import RegionsClient
from tempest.lib.services.identity.v3.roles_client import RolesClient
from tempest.lib.services.identity.v3.services_client import ServicesClient
from tempest.lib.services.identity.v3.token_client import V3TokenClient
from tempest.lib.services.identity.v3.trusts_client import TrustsClient
from tempest.lib.services.identity.v3.users_client import UsersClient
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.trusts_client import TrustsClient
__all__ = ['EndPointsClient', 'GroupsClient', 'IdentityClient',
'InheritedRolesClient', 'PoliciesClient', 'ProjectsClient',
'RegionsClient', 'RolesClient', 'ServicesClient', 'V3TokenClient',
'UsersClient', 'CredentialsClient', 'DomainsClient',
'TrustsClient', ]
'TrustsClient', 'UsersClient', 'CredentialsClient', 'DomainsClient',
]

View File

@ -0,0 +1,150 @@
# 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 trusts_client
from tempest.tests.lib import fake_auth_provider
from tempest.tests.lib.services import base
class TestTrustsClient(base.BaseServiceTest):
FAKE_CREATE_TRUST = {
"trust": {
"expires_at": "2013-02-27T18:30:59.999999Z",
"impersonation": True,
"allow_redelegation": True,
"project_id": "ddef321",
"roles": [
{
"name": "member"
}
],
"trustee_user_id": "86c0d5",
"trustor_user_id": "a0fdfd"
}
}
FAKE_LIST_TRUSTS = {
"trusts": [
{
"id": "1ff900",
"expires_at":
"2013-02-27T18:30:59.999999Z",
"impersonation": True,
"links": {
"self":
"http://example.com/identity/v3/OS-TRUST/trusts/1ff900"
},
"project_id": "0f1233",
"trustee_user_id": "86c0d5",
"trustor_user_id": "a0fdfd"
},
{
"id": "f4513a",
"impersonation": False,
"links": {
"self":
"http://example.com/identity/v3/OS-TRUST/trusts/f45513a"
},
"project_id": "0f1233",
"trustee_user_id": "86c0d5",
"trustor_user_id": "3cd2ce"
}
]
}
FAKE_TRUST_INFO = {
"trust": {
"id": "987fe8",
"expires_at": "2013-02-27T18:30:59.999999Z",
"impersonation": True,
"links": {
"self":
"http://example.com/identity/v3/OS-TRUST/trusts/987fe8"
},
"roles": [
{
"id": "ed7b78",
"links": {
"self":
"http://example.com/identity/v3/roles/ed7b78"
},
"name": "member"
}
],
"roles_links": {
"next": None,
"previous": None,
"self":
"http://example.com/identity/v3/OS-TRUST/trusts/1ff900/roles"
},
"project_id": "0f1233",
"trustee_user_id": "be34d1",
"trustor_user_id": "56ae32"
}
}
def setUp(self):
super(TestTrustsClient, self).setUp()
fake_auth = fake_auth_provider.FakeAuthProvider()
self.client = trusts_client.TrustsClient(fake_auth, 'identity',
'regionOne')
def _test_create_trust(self, bytes_body=False):
self.check_service_client_function(
self.client.create_trust,
'tempest.lib.common.rest_client.RestClient.post',
self.FAKE_CREATE_TRUST,
bytes_body,
status=201)
def _test_show_trust(self, bytes_body=False):
self.check_service_client_function(
self.client.show_trust,
'tempest.lib.common.rest_client.RestClient.get',
self.FAKE_TRUST_INFO,
bytes_body,
trust_id="1ff900")
def _test_list_trusts(self, bytes_body=False):
self.check_service_client_function(
self.client.list_trusts,
'tempest.lib.common.rest_client.RestClient.get',
self.FAKE_LIST_TRUSTS,
bytes_body)
def test_create_trust_with_str_body(self):
self._test_create_trust()
def test_create_trust_with_bytes_body(self):
self._test_create_trust(bytes_body=True)
def test_show_trust_with_str_body(self):
self._test_show_trust()
def test_show_trust_with_bytes_body(self):
self._test_show_trust(bytes_body=True)
def test_list_trusts_with_str_body(self):
self._test_list_trusts()
def test_list_trusts_with_bytes_body(self):
self._test_list_trusts(bytes_body=True)
def test_delete_trust(self):
self.check_service_client_function(
self.client.delete_trust,
'tempest.lib.common.rest_client.RestClient.delete',
{},
trust_id="1ff900",
status=204)