From 738fac67a10875ec048fb176ef0dc683185262c7 Mon Sep 17 00:00:00 2001 From: prazumovsky Date: Mon, 13 May 2019 16:12:01 +0400 Subject: [PATCH] Add optional property user_password to user context Add optional property user_password for specifying custom user password, which could escape of an issue, when password_regexp requirements defined in keystone config, but uuid4 generated password is invalid for these requirements. Change-Id: Ib23262e6b571754b6b59a9e2b1155e9ac51a2090 --- rally_openstack/contexts/keystone/users.py | 9 ++++++++- tests/unit/contexts/keystone/test_users.py | 14 ++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/rally_openstack/contexts/keystone/users.py b/rally_openstack/contexts/keystone/users.py index 27f1e168..c3a3fbe4 100644 --- a/rally_openstack/contexts/keystone/users.py +++ b/rally_openstack/contexts/keystone/users.py @@ -63,6 +63,11 @@ class UserGenerator(context.Context): "minimum": 1, "description": "The number of users to create per one " "tenant."}, + "user_password": { + "type": "string", + "description": "Specify custom user password instead of " + "randomly generated in case of password " + "requirements."}, "resource_management_workers": { "type": "integer", "minimum": 1, @@ -196,7 +201,9 @@ class UserGenerator(context.Context): for tenant_id in self.context["tenants"]: for user_id in range(users_per_tenant): username = self.generate_random_name() - password = str(uuid.uuid4()) + password = (str(uuid.uuid4()) + if self.config.get("user_password") is None + else self.config["user_password"]) args = (username, password, self.config["project_domain"], self.config["user_domain"], tenant_id) queue.append(args) diff --git a/tests/unit/contexts/keystone/test_users.py b/tests/unit/contexts/keystone/test_users.py index 50d26986..159f4a8d 100644 --- a/tests/unit/contexts/keystone/test_users.py +++ b/tests/unit/contexts/keystone/test_users.py @@ -362,6 +362,20 @@ class UserGeneratorForNewUsersTestCase(test.ScenarioTestCase): self.assertIn("id", user) self.assertIn("credential", user) + @mock.patch("%s.identity" % CTX) + def test__create_users_user_password(self, mock_identity): + self.context["config"]["users"]["users_per_tenant"] = 2 + self.context["config"]["users"]["user_password"] = "TrustMe" + user_generator = users.UserGenerator(self.context) + user_generator.context["tenants"] = {"t1": {"id": "t1", "name": "t1"}, + "t2": {"id": "t2", "name": "t2"}} + users_ = user_generator._create_users() + self.assertEqual(4, len(users_)) + for user in users_: + self.assertIn("id", user) + self.assertIn("credential", user) + self.assertEqual("TrustMe", user["credential"]["password"]) + @mock.patch("%s.identity" % CTX) def test__delete_tenants(self, mock_identity): user_generator = users.UserGenerator(self.context)