Fix show_deleted errors in RequestContext

get_admin_context takes a read_deleted argument which is ignored,
and we don't include the read_deleted value in to_dict output.
Fixing this means we can respect this flag in the DB API, which
currently we do not.

Change-Id: Id0906983b93cd2526580942390f7992fb2cb5504
blueprint: request-scoping-policy
This commit is contained in:
Steven Hardy 2013-11-29 15:26:41 +00:00
parent 16d6aceb44
commit 8aa2b48cdf
2 changed files with 12 additions and 3 deletions

View File

@ -93,15 +93,16 @@ class RequestContext(context.RequestContext):
'roles': self.roles, 'roles': self.roles,
'is_admin': self.is_admin, 'is_admin': self.is_admin,
'user': self.user, 'user': self.user,
'request_id': self.request_id} 'request_id': self.request_id,
'show_deleted': self.show_deleted}
@classmethod @classmethod
def from_dict(cls, values): def from_dict(cls, values):
return cls(**values) return cls(**values)
def get_admin_context(read_deleted="no"): def get_admin_context(show_deleted=False):
return RequestContext(is_admin=True) return RequestContext(is_admin=True, show_deleted=show_deleted)
class ContextMiddleware(wsgi.Middleware): class ContextMiddleware(wsgi.Middleware):

View File

@ -31,6 +31,7 @@ class TestRequestContext(HeatTestCase):
'user': 'mick', 'user': 'mick',
'password': 'foo', 'password': 'foo',
'trust_id': None, 'trust_id': None,
'show_deleted': False,
'roles': ['arole', 'notadmin'], 'roles': ['arole', 'notadmin'],
'tenant_id': '456tenant', 'tenant_id': '456tenant',
'tenant': 'atenant', 'tenant': 'atenant',
@ -48,6 +49,7 @@ class TestRequestContext(HeatTestCase):
tenant_id=self.ctx.get('tenant_id'), tenant_id=self.ctx.get('tenant_id'),
auth_url=self.ctx.get('auth_url'), auth_url=self.ctx.get('auth_url'),
roles=self.ctx.get('roles'), roles=self.ctx.get('roles'),
show_deleted=self.ctx.get('show_deleted'),
is_admin=self.ctx.get('is_admin')) is_admin=self.ctx.get('is_admin'))
ctx_dict = ctx.to_dict() ctx_dict = ctx.to_dict()
del(ctx_dict['request_id']) del(ctx_dict['request_id'])
@ -71,6 +73,12 @@ class TestRequestContext(HeatTestCase):
def test_get_admin_context(self): def test_get_admin_context(self):
ctx = context.get_admin_context() ctx = context.get_admin_context()
self.assertTrue(ctx.is_admin) self.assertTrue(ctx.is_admin)
self.assertFalse(ctx.show_deleted)
def test_get_admin_context_show_deleted(self):
ctx = context.get_admin_context(show_deleted=True)
self.assertTrue(ctx.is_admin)
self.assertTrue(ctx.show_deleted)
def test_admin_context_policy_true(self): def test_admin_context_policy_true(self):
policy_check = 'heat.common.policy.Enforcer.check_is_admin' policy_check = 'heat.common.policy.Enforcer.check_is_admin'