Merge "Make create_user domain-aware for V3CredsClient"

This commit is contained in:
Zuul 2021-02-16 21:37:52 +00:00 committed by Gerrit Code Review
commit f154c05cee
3 changed files with 43 additions and 0 deletions

View File

@ -0,0 +1,9 @@
---
fixes:
- |
[`bug 1613819 <https://bugs.launchpad.net/tempest/+bug/1613819>`_]
admin_domain_name and default_credentials_domain_name parameters
under [auth] now affect a domain used for creating test users just
as they affect it for projects. Previously a domain with an id set
to "default" had to be present in order for test user creation to
succeed with Keystone v3.

View File

@ -173,6 +173,22 @@ class V3CredsClient(CredsClient):
self.domains_client.update_domain(domain_id, enabled=False)
self.domains_client.delete_domain(domain_id)
def create_user(self, username, password, project=None, email=None,
domain_id=None):
params = {'name': username,
'password': password,
'domain_id': domain_id or self.creds_domain['id']}
# with keystone v3, a default project is not required
if project:
params[self.project_id_param] = project['id']
# email is not a first-class attribute of a user
if email:
params['email'] = email
user = self.users_client.create_user(**params)
if 'user' in user:
user = user['user']
return user
def get_credentials(
self, user, project, password, domain=None, system=None):
# User, project and domain already include both ID and name here,

View File

@ -111,3 +111,21 @@ class TestCredClientV3(base.TestCase):
self.assertIsNone(ret.project_name)
self.assertEqual(ret.system, {'system': 'all'})
self.assertEqual(ret.domain_name, 'some_domain')
def test_create_user(self):
self.users_client.create_user.return_value = {
'user': 'a_user'
}
fake_project = {
'id': 'fake_project_id',
}
res = self.creds_client.create_user('fake_username',
'fake_password',
fake_project,
'fake_email')
self.assertEqual('a_user', res)
self.users_client.create_user.assert_called_once_with(
name='fake_username', password='fake_password',
project_id=fake_project['id'],
email='fake_email',
domain_id='fake_domain_id')