From 1adeb833fb2d2240ff034426b222e7da7815eb23 Mon Sep 17 00:00:00 2001 From: AlanCoding Date: Wed, 28 Nov 2018 10:23:09 -0500 Subject: [PATCH] clean up unwanted data in activity stream of nodes --- awx/main/models/jobs.py | 3 +++ awx/main/signals.py | 2 +- .../functional/models/test_activity_stream.py | 14 ++++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/awx/main/models/jobs.py b/awx/main/models/jobs.py index 64d7811028..a989ed579d 100644 --- a/awx/main/models/jobs.py +++ b/awx/main/models/jobs.py @@ -963,6 +963,9 @@ class LaunchTimeConfigBase(BaseModel): else: return self.extra_vars + def display_extra_data(self): + return self.display_extra_vars() + @property def _credential(self): ''' diff --git a/awx/main/signals.py b/awx/main/signals.py index aa343fae42..ce21f92e8d 100644 --- a/awx/main/signals.py +++ b/awx/main/signals.py @@ -506,7 +506,7 @@ def activity_stream_delete(sender, instance, **kwargs): _type = type(instance) if getattr(_type, '_deferred', False): return - changes.update(model_to_dict(instance)) + changes.update(model_to_dict(instance, model_serializer_mapping)) object1 = camelcase_to_underscore(instance.__class__.__name__) if type(instance) == OAuth2AccessToken: changes['token'] = CENSOR_VALUE diff --git a/awx/main/tests/functional/models/test_activity_stream.py b/awx/main/tests/functional/models/test_activity_stream.py index 1c59f1644d..ed0bb78e0e 100644 --- a/awx/main/tests/functional/models/test_activity_stream.py +++ b/awx/main/tests/functional/models/test_activity_stream.py @@ -236,3 +236,17 @@ def test_survey_create_diff(job_template, survey_spec_factory): before, after = model_instance_diff(old, job_template, model_serializer_mapping)['survey_spec'] assert before == '{}' assert json.loads(after) == survey_spec_factory('foo') + + +@pytest.mark.django_db +def test_saved_passwords_hidden_activity(workflow_job_template, job_template_with_survey_passwords): + node_with_passwords = workflow_job_template.workflow_nodes.create( + unified_job_template=job_template_with_survey_passwords, + extra_data={'bbbb': '$encrypted$fooooo'}, + survey_passwords={'bbbb': '$encrypted$'} + ) + node_with_passwords.delete() + entry = ActivityStream.objects.order_by('timestamp').last() + changes = json.loads(entry.changes) + assert 'survey_passwords' not in changes + assert json.loads(changes['extra_data'])['bbbb'] == '$encrypted$'