Fix to solve None user id in existing_users context
This fix contains following changes - removed keystone version specific tenant_id fetch logic - called get_user_id api to fetch correct value of user_id - Updated Unittest case to cover modified code. Change-Id: Id0c8135abe9d980b5a5f11e0123d7e9904c4f473 Closes-Bug: #1602157
This commit is contained in:
parent
1960263f5b
commit
a5025142ff
|
@ -52,15 +52,10 @@ class ExistingUsers(users.UserContextMixin, context.Context):
|
|||
user_credential = objects.Credential(**user)
|
||||
user_kclient = osclients.Clients(user_credential).keystone()
|
||||
|
||||
if user_kclient.version == "2.0":
|
||||
tenant_id = user_kclient.tenant_id
|
||||
tenant_name = user_kclient.tenant_name
|
||||
else:
|
||||
tenant_name = user_kclient.project_name
|
||||
tenant_id = user_kclient.project_id
|
||||
|
||||
if not tenant_id:
|
||||
tenant_id = user_kclient.get_project_id(tenant_name)
|
||||
user_name = user_kclient.username
|
||||
tenant_name = user_kclient.project_name
|
||||
user_id = user_kclient.get_user_id(user_name)
|
||||
tenant_id = user_kclient.get_project_id(tenant_name)
|
||||
|
||||
if tenant_id not in self.context["tenants"]:
|
||||
self.context["tenants"][tenant_id] = {
|
||||
|
@ -70,7 +65,7 @@ class ExistingUsers(users.UserContextMixin, context.Context):
|
|||
|
||||
self.context["users"].append({
|
||||
"credential": user_credential,
|
||||
"id": user_kclient.user_id,
|
||||
"id": user_id,
|
||||
"tenant_id": tenant_id
|
||||
})
|
||||
|
||||
|
|
|
@ -24,19 +24,25 @@ class ExistingUserTestCase(test.TestCase):
|
|||
|
||||
@mock.patch("%s.keystone.existing_users.osclients.Clients" % CTX)
|
||||
@mock.patch("%s.keystone.existing_users.objects.Credential" % CTX)
|
||||
def test_setup_keystonev2(self, mock_credential, mock_clients):
|
||||
user1 = mock.MagicMock(tenant_id="1", version="2.0")
|
||||
user2 = mock.MagicMock(tenant_id="1", version="2.0")
|
||||
user3 = mock.MagicMock(tenant_id="2", version="2.0")
|
||||
def test_setup(self, mock_credential, mock_clients):
|
||||
user1 = mock.MagicMock(tenant_id="1", user_id="1",
|
||||
project_name="proj", username="usr")
|
||||
user2 = mock.MagicMock(tenant_id="1", user_id="2",
|
||||
project_name="proj", username="usr")
|
||||
user3 = mock.MagicMock(tenant_id="2", user_id="3",
|
||||
project_name="proj", username="usr")
|
||||
|
||||
mock_clients.return_value.keystone.side_effect = [
|
||||
user1, user2, user3
|
||||
]
|
||||
user_list = [user1, user2, user3]
|
||||
for u in user_list:
|
||||
u.get_user_id.return_value = u.user_id
|
||||
u.get_project_id.return_value = u.tenant_id
|
||||
|
||||
mock_clients.return_value.keystone.side_effect = user_list
|
||||
|
||||
context = {
|
||||
"task": mock.MagicMock(),
|
||||
"config": {
|
||||
"existing_users": [user1, user2, user3]
|
||||
"existing_users": user_list
|
||||
}
|
||||
}
|
||||
existing_users.ExistingUsers(context).setup()
|
||||
|
@ -53,44 +59,6 @@ class ExistingUserTestCase(test.TestCase):
|
|||
context["users"][0]
|
||||
)
|
||||
self.assertEqual(["1", "2"], sorted(context["tenants"].keys()))
|
||||
self.assertEqual({"id": "1", "name": user1.tenant_name},
|
||||
context["tenants"]["1"])
|
||||
self.assertEqual({"id": "2", "name": user3.tenant_name},
|
||||
context["tenants"]["2"])
|
||||
|
||||
@mock.patch("%s.keystone.existing_users.osclients.Clients" % CTX)
|
||||
@mock.patch("%s.keystone.existing_users.objects.Credential" % CTX)
|
||||
def test_setup_keystonev3(self, mock_credential, mock_clients):
|
||||
user1 = mock.MagicMock(project_id="1", version="3")
|
||||
user2 = mock.MagicMock(project_id="1", version="3")
|
||||
user3 = mock.MagicMock(project_id=None, version="3")
|
||||
|
||||
user3.get_project_id.return_value = "2"
|
||||
|
||||
mock_clients.return_value.keystone.side_effect = [
|
||||
user1, user2, user3
|
||||
]
|
||||
|
||||
context = {
|
||||
"task": mock.MagicMock(),
|
||||
"config": {
|
||||
"existing_users": [user1, user2, user3]
|
||||
}
|
||||
}
|
||||
existing_users.ExistingUsers(context).setup()
|
||||
|
||||
self.assertIn("users", context)
|
||||
self.assertIn("tenants", context)
|
||||
self.assertEqual(3, len(context["users"]))
|
||||
self.assertEqual(
|
||||
{
|
||||
"id": user1.user_id,
|
||||
"credential": mock_credential.return_value,
|
||||
"tenant_id": "1"
|
||||
},
|
||||
context["users"][0]
|
||||
)
|
||||
self.assertEqual(["1", "2"], sorted(context["tenants"].keys()))
|
||||
self.assertEqual({"id": "1", "name": user1.project_name},
|
||||
context["tenants"]["1"])
|
||||
self.assertEqual({"id": "2", "name": user3.project_name},
|
||||
|
|
Loading…
Reference in New Issue