From 60b7309c08b66e09112a0ff5eb163446ea38eb1d Mon Sep 17 00:00:00 2001 From: jangsutsr Date: Mon, 22 Aug 2016 16:33:03 -0400 Subject: [PATCH 1/3] Resolve extra vars display mix-up with passworded survey questions. --- awx/main/models/jobs.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/awx/main/models/jobs.py b/awx/main/models/jobs.py index c233269ce9..5df339186b 100644 --- a/awx/main/models/jobs.py +++ b/awx/main/models/jobs.py @@ -746,9 +746,14 @@ class Job(UnifiedJob, JobOptions): Hides fields marked as passwords in survey. ''' if self.survey_passwords: - extra_vars = json.loads(self.extra_vars) - extra_vars.update(self.survey_passwords) - return json.dumps(extra_vars) + try: + extra_vars = json.loads(self.extra_vars) + for key, value in self.survey_passwords.items(): + if key in extra_vars: + extra_vars[key] = value + return json.dumps(extra_vars) + except ValueError: + pass else: return self.extra_vars From c3f844cfe03a23a5d6207ba99b5dc6abac9b94a1 Mon Sep 17 00:00:00 2001 From: jangsutsr Date: Tue, 23 Aug 2016 20:00:08 -0400 Subject: [PATCH 2/3] Add unit test. --- awx/main/tests/unit/models/test_job_unit.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/awx/main/tests/unit/models/test_job_unit.py b/awx/main/tests/unit/models/test_job_unit.py index 1b66681dcf..9de1f77ee6 100644 --- a/awx/main/tests/unit/models/test_job_unit.py +++ b/awx/main/tests/unit/models/test_job_unit.py @@ -32,6 +32,21 @@ def test_job_survey_password_redaction(): 'secret_key': '$encrypted$', 'SSN': '$encrypted$'} +@pytest.mark.survey +def test_survey_passwords_not_in_extra_vars(): + """Tests that survey passwords not included in extra_vars are + not included when displaying job information""" + job = Job( + name="test-survey-not-in", + extra_vars=json.dumps({ + 'submitter_email': 'foobar@redhat.com'}), + survey_passwords={ + 'secret_key': '$encrypted$', + 'SSN': '$encrypted$'}) + assert json.loads(job.display_extra_vars()) == { + 'submitter_email': 'foobar@redhat.com', + } + def test_job_safe_args_redacted_passwords(job): """Verify that safe_args hides passwords in the job extra_vars""" kwargs = {'ansible_version': '2.1'} From 8576dcda194e5afee507ba6843a3e88fbe1c69b6 Mon Sep 17 00:00:00 2001 From: jangsutsr Date: Wed, 24 Aug 2016 10:58:53 -0400 Subject: [PATCH 3/3] Remove legacy exception handling. --- awx/main/models/jobs.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/awx/main/models/jobs.py b/awx/main/models/jobs.py index 5df339186b..4709ab43c6 100644 --- a/awx/main/models/jobs.py +++ b/awx/main/models/jobs.py @@ -746,14 +746,11 @@ class Job(UnifiedJob, JobOptions): Hides fields marked as passwords in survey. ''' if self.survey_passwords: - try: - extra_vars = json.loads(self.extra_vars) - for key, value in self.survey_passwords.items(): - if key in extra_vars: - extra_vars[key] = value - return json.dumps(extra_vars) - except ValueError: - pass + extra_vars = json.loads(self.extra_vars) + for key, value in self.survey_passwords.items(): + if key in extra_vars: + extra_vars[key] = value + return json.dumps(extra_vars) else: return self.extra_vars