From 98fae47ad1b9b72e41d444ce6f96cf5f2a3b6f0c Mon Sep 17 00:00:00 2001 From: Ann Kamyshnikova Date: Thu, 20 Nov 2014 19:13:52 +0300 Subject: [PATCH] Fix context.elevated The current version of elevated method sets for the original context the admin role too. This change fix this. Added unittest. Closes-bug: #1386932 Change-Id: Ife881112efa151e53bfa4b7af35643dcf2d1114f --- neutron/context.py | 2 +- neutron/tests/unit/test_api_v2_resource.py | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/neutron/context.py b/neutron/context.py index 107022fb9..7d294427a 100644 --- a/neutron/context.py +++ b/neutron/context.py @@ -145,7 +145,7 @@ class ContextBase(common_context.RequestContext): context.is_admin = True if 'admin' not in [x.lower() for x in context.roles]: - context.roles.append('admin') + context.roles = context.roles + ["admin"] if read_deleted is not None: context.read_deleted = read_deleted diff --git a/neutron/tests/unit/test_api_v2_resource.py b/neutron/tests/unit/test_api_v2_resource.py index 223b05267..12f30afca 100644 --- a/neutron/tests/unit/test_api_v2_resource.py +++ b/neutron/tests/unit/test_api_v2_resource.py @@ -89,6 +89,16 @@ class RequestTestCase(base.BaseTestCase): def test_context_without_neutron_context(self): self.assertTrue(self.req.context.is_admin) + def test_request_context_elevated(self): + user_context = context.Context( + 'fake_user', 'fake_project', admin=False) + self.assertFalse(user_context.is_admin) + admin_context = user_context.elevated() + self.assertFalse(user_context.is_admin) + self.assertTrue(admin_context.is_admin) + self.assertNotIn('admin', user_context.roles) + self.assertIn('admin', admin_context.roles) + def test_best_match_language(self): # Test that we are actually invoking language negotiation by webop request = wsgi.Request.blank('/') -- 2.45.2