From 87093ec8af4fa7ff912051dedb9fba49056c4b9a Mon Sep 17 00:00:00 2001 From: AlanCoding Date: Wed, 4 May 2016 13:56:31 -0400 Subject: [PATCH 1/2] reject runtime extra vars that are strings --- awx/api/serializers.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/awx/api/serializers.py b/awx/api/serializers.py index 5eab0bea9a..572b4246ad 100644 --- a/awx/api/serializers.py +++ b/awx/api/serializers.py @@ -2234,8 +2234,9 @@ class JobLaunchSerializer(BaseSerializer): except (ValueError, TypeError): try: extra_vars = yaml.safe_load(extra_vars) - except (yaml.YAMLError, TypeError, AttributeError): - errors['extra_vars'] = 'Must be valid JSON or YAML' + assert isinstance(extra_vars, dict) + except (yaml.YAMLError, TypeError, AttributeError, AssertionError): + errors['extra_vars'] = 'Must be a valid JSON or YAML dictionary' if not isinstance(extra_vars, dict): extra_vars = {} From 44d57bf4c31c19cbc0d28f816cad670470e88a0e Mon Sep 17 00:00:00 2001 From: AlanCoding Date: Wed, 4 May 2016 17:04:10 -0400 Subject: [PATCH 2/2] update test to new error message --- awx/main/tests/functional/api/test_job_runtime_params.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/awx/main/tests/functional/api/test_job_runtime_params.py b/awx/main/tests/functional/api/test_job_runtime_params.py index a1069da198..6f76fdf1b6 100644 --- a/awx/main/tests/functional/api/test_job_runtime_params.py +++ b/awx/main/tests/functional/api/test_job_runtime_params.py @@ -159,7 +159,7 @@ def test_job_reject_invalid_prompted_extra_vars(runtime_data, job_template_promp dict(extra_vars='{"unbalanced brackets":'), user('admin', True)) assert response.status_code == 400 - assert response.data['extra_vars'] == ['Must be valid JSON or YAML'] + assert response.data['extra_vars'] == ['Must be a valid JSON or YAML dictionary'] @pytest.mark.django_db @pytest.mark.job_runtime_vars