diff --git a/csp_advanced/tests.py b/csp_advanced/tests.py index 80ab2fc..9b1f3b3 100644 --- a/csp_advanced/tests.py +++ b/csp_advanced/tests.py @@ -77,20 +77,34 @@ class CSPCompileTest(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): - 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): - 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): - 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): self.assertEqual(callable_csp_dict({ - 'key': lambda: 'value', + 'key': self.make_request_taker('value'), 'name': 'mixed', - }), { + }, self.request, self.response), { 'key': 'value', 'name': 'mixed' }) diff --git a/csp_advanced/utils.py b/csp_advanced/utils.py index 49590d3..a4b7a98 100644 --- a/csp_advanced/utils.py +++ b/csp_advanced/utils.py @@ -1,10 +1,10 @@ -def callable_csp_dict(data): +def callable_csp_dict(data, request, response): if callable(data): - return data() + return data(request, response) result = {} for key, value in data.iteritems(): if callable(value): - result[key] = value() + result[key] = value(request, response) else: result[key] = value return result