Make callable_csp_dict handle pass request and response.

This commit is contained in:
Quantum 2017-07-15 00:32:06 -04:00
parent 46338c5bfc
commit e4ac7c7509
2 changed files with 22 additions and 8 deletions

View file

@ -77,20 +77,34 @@ class CSPCompileTest(SimpleTestCase):
class CallableCSPDictTest(SimpleTestCase): class CallableCSPDictTest(SimpleTestCase):
request = object()
response = object()
def make_request_taker(self, output):
def func(request, response):
self.assertEqual(request, self.request)
self.assertEqual(response, self.response)
return output
return func
def test_callable(self): def test_callable(self):
self.assertEqual(callable_csp_dict(lambda: {'key': 'value'}), {'key': 'value'}) self.assertEqual(callable_csp_dict(
self.make_request_taker({'key': 'value'}), self.request, self.response
), {'key': 'value'})
def test_normal_dict(self): def test_normal_dict(self):
self.assertEqual(callable_csp_dict({'key': 'value'}), {'key': 'value'}) self.assertEqual(callable_csp_dict({'key': 'value'}, None, None), {'key': 'value'})
def test_callable_entry(self): def test_callable_entry(self):
self.assertEqual(callable_csp_dict({'key': lambda: 'value'}), {'key': 'value'}) self.assertEqual(callable_csp_dict(
{'key': self.make_request_taker('value')}, self.request, self.response
), {'key': 'value'})
def test_mixed_entry(self): def test_mixed_entry(self):
self.assertEqual(callable_csp_dict({ self.assertEqual(callable_csp_dict({
'key': lambda: 'value', 'key': self.make_request_taker('value'),
'name': 'mixed', 'name': 'mixed',
}), { }, self.request, self.response), {
'key': 'value', 'key': 'value',
'name': 'mixed' 'name': 'mixed'
}) })

View file

@ -1,10 +1,10 @@
def callable_csp_dict(data): def callable_csp_dict(data, request, response):
if callable(data): if callable(data):
return data() return data(request, response)
result = {} result = {}
for key, value in data.iteritems(): for key, value in data.iteritems():
if callable(value): if callable(value):
result[key] = value() result[key] = value(request, response)
else: else:
result[key] = value result[key] = value
return result return result