diff options
author | Jenkins <jenkins@review.openstack.org> | 2014-11-26 12:56:42 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2014-11-26 12:56:42 +0000 |
commit | f7e3f7082cbcc34f75049f45b455d0f9b6d3c2ac (patch) | |
tree | 77f67eec0bc9f4b204c95d6ca6198eedd49a5957 | |
parent | dedd11a209d23e5b47c0b221777c702ccfc2c9a0 (diff) | |
parent | d09ba29a5f16ad26fb01abfc9791c1ef7a845bc7 (diff) | |
download | neutron-f7e3f7082cbcc34f75049f45b455d0f9b6d3c2ac.tar.gz |
Merge "Fix context.elevated" into stable/juno
-rw-r--r-- | neutron/context.py | 2 | ||||
-rw-r--r-- | neutron/tests/unit/test_api_v2_resource.py | 10 |
2 files changed, 11 insertions, 1 deletions
diff --git a/neutron/context.py b/neutron/context.py index f248e70250..1da9b77423 100644 --- a/neutron/context.py +++ b/neutron/context.py @@ -144,7 +144,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 91e24de711..ae3dad5a7c 100644 --- a/neutron/tests/unit/test_api_v2_resource.py +++ b/neutron/tests/unit/test_api_v2_resource.py @@ -94,6 +94,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('/') |