Make identity v2 user_client use **kwargs
As we discussed on
http://lists.openstack.org/pipermail/openstack-dev/2015-July/068864.html
All http POST/PUT methods need to contain **kwargs as their arguments.
This patch makes identity v2 user_client use **kwargs.
Also adding some doc link.
Partially implements blueprint consistent-service-method-names
Change-Id: I058e74a205ff9223113ad9fed8be61e6b66e7045
diff --git a/tempest/api/identity/admin/v2/test_tokens.py b/tempest/api/identity/admin/v2/test_tokens.py
index ee04420..2297a9d 100644
--- a/tempest/api/identity/admin/v2/test_tokens.py
+++ b/tempest/api/identity/admin/v2/test_tokens.py
@@ -30,8 +30,10 @@
tenant = self.tenants_client.create_tenant(tenant_name)['tenant']
self.data.tenants.append(tenant)
# second:create a user
- user = self.users_client.create_user(user_name, user_password,
- tenant['id'], '')['user']
+ user = self.users_client.create_user(name=user_name,
+ password=user_password,
+ tenantId=tenant['id'],
+ email='')['user']
self.data.users.append(user)
# then get a token for the user
body = self.token_client.auth(user_name,
@@ -62,8 +64,10 @@
user_password = data_utils.rand_password()
tenant_id = None # No default tenant so will get unscoped token.
email = ''
- user = self.users_client.create_user(user_name, user_password,
- tenant_id, email)['user']
+ user = self.users_client.create_user(name=user_name,
+ password=user_password,
+ tenantId=tenant_id,
+ email=email)['user']
self.data.users.append(user)
# Create a couple tenants.
diff --git a/tempest/api/identity/admin/v2/test_users.py b/tempest/api/identity/admin/v2/test_users.py
index d860d2f..0f783b3 100644
--- a/tempest/api/identity/admin/v2/test_users.py
+++ b/tempest/api/identity/admin/v2/test_users.py
@@ -36,9 +36,10 @@
def test_create_user(self):
# Create a user
self.data.setup_test_tenant()
- user = self.users_client.create_user(self.alt_user, self.alt_password,
- self.data.tenant['id'],
- self.alt_email)['user']
+ user = self.users_client.create_user(name=self.alt_user,
+ password=self.alt_password,
+ tenantId=self.data.tenant['id'],
+ email=self.alt_email)['user']
self.data.users.append(user)
self.assertEqual(self.alt_user, user['name'])
@@ -47,9 +48,10 @@
# Create a user with enabled : False
self.data.setup_test_tenant()
name = data_utils.rand_name('test_user')
- user = self.users_client.create_user(name, self.alt_password,
- self.data.tenant['id'],
- self.alt_email,
+ user = self.users_client.create_user(name=name,
+ password=self.alt_password,
+ tenantId=self.data.tenant['id'],
+ email=self.alt_email,
enabled=False)['user']
self.data.users.append(user)
self.assertEqual(name, user['name'])
@@ -61,9 +63,10 @@
# Test case to check if updating of user attributes is successful.
test_user = data_utils.rand_name('test_user')
self.data.setup_test_tenant()
- user = self.users_client.create_user(test_user, self.alt_password,
- self.data.tenant['id'],
- self.alt_email)['user']
+ user = self.users_client.create_user(name=test_user,
+ password=self.alt_password,
+ tenantId=self.data.tenant['id'],
+ email=self.alt_email)['user']
# Delete the User at the end of this method
self.addCleanup(self.users_client.delete_user, user['id'])
# Updating user details with new values
@@ -87,9 +90,10 @@
# Delete a user
test_user = data_utils.rand_name('test_user')
self.data.setup_test_tenant()
- user = self.users_client.create_user(test_user, self.alt_password,
- self.data.tenant['id'],
- self.alt_email)['user']
+ user = self.users_client.create_user(name=test_user,
+ password=self.alt_password,
+ tenantId=self.data.tenant['id'],
+ email=self.alt_email)['user']
self.users_client.delete_user(user['id'])
@test.idempotent_id('aca696c3-d645-4f45-b728-63646045beb1')
@@ -139,16 +143,18 @@
fetched_user_ids = list()
password1 = data_utils.rand_password()
alt_tenant_user1 = data_utils.rand_name('tenant_user1')
- user1 = self.users_client.create_user(alt_tenant_user1, password1,
- self.data.tenant['id'],
- 'user1@123')['user']
+ user1 = self.users_client.create_user(name=alt_tenant_user1,
+ password=password1,
+ tenantId=self.data.tenant['id'],
+ email='user1@123')['user']
user_ids.append(user1['id'])
self.data.users.append(user1)
password2 = data_utils.rand_password()
alt_tenant_user2 = data_utils.rand_name('tenant_user2')
- user2 = self.users_client.create_user(alt_tenant_user2, password2,
- self.data.tenant['id'],
- 'user2@123')['user']
+ user2 = self.users_client.create_user(name=alt_tenant_user2,
+ password=password2,
+ tenantId=self.data.tenant['id'],
+ email='user2@123')['user']
user_ids.append(user2['id'])
self.data.users.append(user2)
# List of users for the respective tenant ID
@@ -180,9 +186,11 @@
alt_user2 = data_utils.rand_name('second_user')
alt_password2 = data_utils.rand_password()
- second_user = self.users_client.create_user(alt_user2, alt_password2,
- self.data.tenant['id'],
- 'user2@123')['user']
+ second_user = self.users_client.create_user(
+ name=alt_user2,
+ password=alt_password2,
+ tenantId=self.data.tenant['id'],
+ email='user2@123')['user']
user_ids.append(second_user['id'])
self.data.users.append(second_user)
role = self.roles_client.assign_user_role(tenant['id'],
diff --git a/tempest/api/identity/admin/v2/test_users_negative.py b/tempest/api/identity/admin/v2/test_users_negative.py
index 5fda4c14..78b89fa 100644
--- a/tempest/api/identity/admin/v2/test_users_negative.py
+++ b/tempest/api/identity/admin/v2/test_users_negative.py
@@ -35,9 +35,9 @@
self.data.setup_test_tenant()
self.assertRaises(lib_exc.Forbidden,
self.non_admin_users_client.create_user,
- self.alt_user, self.alt_password,
- self.data.tenant['id'],
- self.alt_email)
+ name=self.alt_user, password=self.alt_password,
+ tenantId=self.data.tenant['id'],
+ email=self.alt_email)
@test.attr(type=['negative'])
@test.idempotent_id('d80d0c2f-4514-4d1e-806d-0930dfc5a187')
@@ -45,8 +45,9 @@
# User with an empty name should not be created
self.data.setup_test_tenant()
self.assertRaises(lib_exc.BadRequest, self.users_client.create_user,
- '', self.alt_password, self.data.tenant['id'],
- self.alt_email)
+ name='', password=self.alt_password,
+ tenantId=self.data.tenant['id'],
+ email=self.alt_email)
@test.attr(type=['negative'])
@test.idempotent_id('7704b4f3-3b75-4b82-87cc-931d41c8f780')
@@ -54,8 +55,9 @@
# Length of user name filed should be restricted to 255 characters
self.data.setup_test_tenant()
self.assertRaises(lib_exc.BadRequest, self.users_client.create_user,
- 'a' * 256, self.alt_password,
- self.data.tenant['id'], self.alt_email)
+ name='a' * 256, password=self.alt_password,
+ tenantId=self.data.tenant['id'],
+ email=self.alt_email)
@test.attr(type=['negative'])
@test.idempotent_id('57ae8558-120c-4723-9308-3751474e7ecf')
@@ -63,16 +65,20 @@
# Duplicate user should not be created
self.data.setup_test_user()
self.assertRaises(lib_exc.Conflict, self.users_client.create_user,
- self.data.user['name'], self.data.user_password,
- self.data.tenant['id'], self.data.user['email'])
+ name=self.data.user['name'],
+ password=self.data.user_password,
+ tenantId=self.data.tenant['id'],
+ email=self.data.user['email'])
@test.attr(type=['negative'])
@test.idempotent_id('0132cc22-7c4f-42e1-9e50-ac6aad31d59a')
def test_create_user_for_non_existent_tenant(self):
# Attempt to create a user in a non-existent tenant should fail
self.assertRaises(lib_exc.NotFound, self.users_client.create_user,
- self.alt_user, self.alt_password, '49ffgg99999',
- self.alt_email)
+ name=self.alt_user,
+ password=self.alt_password,
+ tenantId='49ffgg99999',
+ email=self.alt_email)
@test.attr(type=['negative'])
@test.idempotent_id('55bbb103-d1ae-437b-989b-bcdf8175c1f4')
@@ -88,8 +94,9 @@
self.addCleanup(self.client.auth_provider.clear_auth)
self.assertRaises(lib_exc.Unauthorized, self.users_client.create_user,
- self.alt_user, self.alt_password,
- self.data.tenant['id'], self.alt_email)
+ name=self.alt_user, password=self.alt_password,
+ tenantId=self.data.tenant['id'],
+ email=self.alt_email)
@test.attr(type=['negative'])
@test.idempotent_id('23a2f3da-4a1a-41da-abdd-632328a861ad')
@@ -98,9 +105,9 @@
self.data.setup_test_tenant()
name = data_utils.rand_name('test_user')
self.assertRaises(lib_exc.BadRequest, self.users_client.create_user,
- name, self.alt_password,
- self.data.tenant['id'],
- self.alt_email, enabled=3)
+ name=name, password=self.alt_password,
+ tenantId=self.data.tenant['id'],
+ email=self.alt_email, enabled=3)
@test.attr(type=['negative'])
@test.idempotent_id('3d07e294-27a0-4144-b780-a2a1bf6fee19')
diff --git a/tempest/api/identity/base.py b/tempest/api/identity/base.py
index 31420d1..bc1b158 100644
--- a/tempest/api/identity/base.py
+++ b/tempest/api/identity/base.py
@@ -215,11 +215,10 @@
self.domains = []
def _create_test_user(self, **kwargs):
- username = data_utils.rand_name('test_user')
self.user_password = data_utils.rand_password()
self.user = self.users_client.create_user(
- username, password=self.user_password,
- email=username + '@testmail.tm', **kwargs)['user']
+ password=self.user_password,
+ **kwargs)['user']
self.users.append(self.user)
def setup_test_role(self):
@@ -256,7 +255,10 @@
def setup_test_user(self):
"""Set up a test user."""
self.setup_test_tenant()
- self._create_test_user(tenant_id=self.tenant['id'])
+ username = data_utils.rand_name('test_user')
+ email = username + '@testmail.tm'
+ self._create_test_user(name=username, email=email,
+ tenantId=self.tenant['id'])
def setup_test_tenant(self):
"""Set up a test tenant."""
@@ -271,7 +273,10 @@
def setup_test_user(self):
"""Set up a test user."""
self.setup_test_project()
- self._create_test_user(project_id=self.project['id'])
+ username = data_utils.rand_name('test_user')
+ email = username + '@testmail.tm'
+ self._create_test_user(user_name=username, email=email,
+ project_id=self.project['id'])
def setup_test_project(self):
"""Set up a test project."""
diff --git a/tempest/cmd/javelin.py b/tempest/cmd/javelin.py
index 1f433eb..7ce6225 100755
--- a/tempest/cmd/javelin.py
+++ b/tempest/cmd/javelin.py
@@ -391,8 +391,9 @@
% u['name'])
except lib_exc.NotFound:
admin.users.create_user(
- u['name'], u['pass'], tenant['id'],
- "%s@%s" % (u['name'], tenant['id']),
+ name=u['name'], password=u['pass'],
+ tenantId=tenant['id'],
+ email="%s@%s" % (u['name'], tenant['id']),
enabled=True)
diff --git a/tempest/common/cred_client.py b/tempest/common/cred_client.py
index aac036b..48d81ca 100644
--- a/tempest/common/cred_client.py
+++ b/tempest/common/cred_client.py
@@ -40,8 +40,9 @@
self.roles_client = roles_client
def create_user(self, username, password, project, email):
- user = self.users_client.create_user(
- username, password, project['id'], email)
+ params = self._create_user_params(username, password,
+ project['id'], email)
+ user = self.users_client.create_user(**params)
if 'user' in user:
user = user['user']
return user
@@ -101,6 +102,13 @@
users_client,
roles_client)
+ def _create_user_params(self, username, password, project_id, email):
+ params = {'name': username,
+ 'password': password,
+ 'tenantId': project_id,
+ 'email': email}
+ return params
+
def create_project(self, name, description):
tenant = self.projects_client.create_tenant(
name=name, description=description)['tenant']
@@ -143,6 +151,13 @@
msg = "Requested domain %s could not be found" % domain_name
raise lib_exc.InvalidCredentials(msg)
+ def _create_user_params(self, username, password, project_id, email):
+ params = {'user_name': username,
+ 'password': password,
+ 'project_id': project_id,
+ 'email': email}
+ return params
+
def create_project(self, name, description):
project = self.projects_client.create_project(
name=name, description=description,
diff --git a/tempest/services/identity/v2/json/users_client.py b/tempest/services/identity/v2/json/users_client.py
index 6573b6e..1048840 100644
--- a/tempest/services/identity/v2/json/users_client.py
+++ b/tempest/services/identity/v2/json/users_client.py
@@ -11,6 +11,7 @@
# 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
@@ -18,18 +19,13 @@
class UsersClient(rest_client.RestClient):
api_version = "v2.0"
- def create_user(self, name, password, tenant_id, email, **kwargs):
- """Create a user."""
- post_body = {
- 'name': name,
- 'password': password,
- 'email': email
- }
- if tenant_id is not None:
- post_body['tenantId'] = tenant_id
- if kwargs.get('enabled') is not None:
- post_body['enabled'] = kwargs.get('enabled')
- post_body = json.dumps({'user': post_body})
+ def create_user(self, **kwargs):
+ """Create a user.
+
+ Available params: see http://developer.openstack.org/
+ api-ref-identity-admin-v2.html#admin-createUser
+ """
+ post_body = json.dumps({'user': kwargs})
resp, body = self.post('users', post_body)
self.expected_success(200, resp.status)
body = json.loads(body)
@@ -48,21 +44,36 @@
return rest_client.ResponseBody(resp, body)
def show_user(self, user_id):
- """GET a user."""
+ """GET a user.
+
+ Available params: see http://developer.openstack.org/
+ api-ref-identity-admin-v2.html#admin-showUser
+ """
resp, body = self.get("users/%s" % user_id)
self.expected_success(200, resp.status)
body = json.loads(body)
return rest_client.ResponseBody(resp, body)
def delete_user(self, user_id):
- """Delete a user."""
+ """Delete a user.
+
+ Available params: see http://developer.openstack.org/
+ api-ref-identity-admin-v2.html#admin-deleteUser
+ """
resp, body = self.delete("users/%s" % user_id)
self.expected_success(204, resp.status)
return rest_client.ResponseBody(resp, body)
- def list_users(self):
- """Get the list of users."""
- resp, body = self.get("users")
+ def list_users(self, **params):
+ """Get the list of users.
+
+ Available params: see http://developer.openstack.org/
+ api-ref-identity-admin-v2.html#admin-listUsers
+ """
+ url = "users"
+ 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)
diff --git a/tempest/tests/cmd/test_javelin.py b/tempest/tests/cmd/test_javelin.py
index 2d0256a..50660ff 100644
--- a/tempest/tests/cmd/test_javelin.py
+++ b/tempest/tests/cmd/test_javelin.py
@@ -120,11 +120,12 @@
fake_tenant_id = self.fake_object['tenant']['id']
fake_email = "%s@%s" % (self.fake_object['user'], fake_tenant_id)
mocked_function = self.fake_client.users.create_user
- mocked_function.assert_called_once_with(self.fake_object['name'],
- self.fake_object['password'],
- fake_tenant_id,
- fake_email,
- enabled=True)
+ mocked_function.assert_called_once_with(
+ name=self.fake_object['name'],
+ password=self.fake_object['password'],
+ tenantId=fake_tenant_id,
+ email=fake_email,
+ enabled=True)
def test_create_user_missing_tenant(self):
self.useFixture(mockpatch.Patch(