diff --git a/raven/processors.py b/raven/processors.py index a5509b6c9..85e299093 100644 --- a/raven/processors.py +++ b/raven/processors.py @@ -38,6 +38,9 @@ def process(self, data, **kwargs): if 'extra' in data: data['extra'] = self.filter_extra(data['extra']) + if 'user' in data: + data['user'] = self.filter_user(data['user']) + return data def filter_stacktrace(self, data): @@ -49,6 +52,9 @@ def filter_http(self, data): def filter_extra(self, data): return data + def filter_user(self, data): + return data + class RemovePostDataProcessor(Processor): """Removes HTTP post data.""" @@ -134,6 +140,9 @@ def filter_http(self, data): def filter_extra(self, data): return varmap(self.sanitize, data) + def filter_user(self, data): + return varmap(self.sanitize, data) + def _sanitize_keyvals(self, keyvals, delimiter): sanitized_keyvals = [] for keyval in keyvals.split(delimiter): diff --git a/tests/processors/tests.py b/tests/processors/tests.py index dca07e44d..112b7160a 100644 --- a/tests/processors/tests.py +++ b/tests/processors/tests.py @@ -83,6 +83,13 @@ def get_extra_data(): return data +def get_user_data(): + data = get_extra_data() + + data['user'] = VARS + return data + + class SanitizeKeysProcessorTest(TestCase): def setUp(self): @@ -135,6 +142,14 @@ def test_extra(self): extra = result['extra'] self._check_vars_sanitized(extra, self.proc.MASK) + def test_user(self): + data = get_user_data() + result = self.proc.process(data) + + self.assertTrue('user' in result) + user = result['user'] + self._check_vars_sanitized(user, self.proc.MASK) + def test_querystring_as_string(self): data = get_http_data() data['request']['query_string'] = 'foo=bar&custom_key1=nope&custom_key2=nope&custom_key3=%7B%27key2%27%3A+%27nope%27%2C+%27key1%27%3A+%27nope%27%7D'