mirror of
https://github.com/ansible/awx.git
synced 2026-02-17 03:00:04 -03:30
fix KeyError for default, added tests
This commit is contained in:
@@ -127,8 +127,8 @@ class SurveyJobTemplateMixin(models.Model):
|
|||||||
# Overwrite with job template extra vars with survey default vars
|
# Overwrite with job template extra vars with survey default vars
|
||||||
if self.survey_enabled and 'spec' in self.survey_spec:
|
if self.survey_enabled and 'spec' in self.survey_spec:
|
||||||
for survey_element in self.survey_spec.get("spec", []):
|
for survey_element in self.survey_spec.get("spec", []):
|
||||||
default = survey_element['default']
|
default = survey_element.get('default')
|
||||||
variable_key = survey_element['variable']
|
variable_key = survey_element.get('variable')
|
||||||
if survey_element.get('type') == 'password':
|
if survey_element.get('type') == 'password':
|
||||||
if variable_key in kwargs_extra_vars:
|
if variable_key in kwargs_extra_vars:
|
||||||
kw_value = kwargs_extra_vars[variable_key]
|
kw_value = kwargs_extra_vars[variable_key]
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
import mock
|
import mock
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
|
from collections import namedtuple
|
||||||
|
|
||||||
from awx.api.views import (
|
from awx.api.views import (
|
||||||
ApiV1RootView,
|
ApiV1RootView,
|
||||||
JobTemplateLabelList,
|
JobTemplateLabelList,
|
||||||
|
JobTemplateSurveySpec,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -65,3 +68,16 @@ class TestJobTemplateLabelList:
|
|||||||
|
|
||||||
super(JobTemplateLabelList, view).unattach(mock_request, None, None)
|
super(JobTemplateLabelList, view).unattach(mock_request, None, None)
|
||||||
assert mixin_unattach.called_with(mock_request, None, None)
|
assert mixin_unattach.called_with(mock_request, None, None)
|
||||||
|
|
||||||
|
|
||||||
|
class TestJobTemplateSurveySpec(object):
|
||||||
|
@mock.patch('awx.api.views.feature_enabled', lambda feature: True)
|
||||||
|
def test_get_password_type(self, mocker, mock_response_new):
|
||||||
|
JobTemplate = namedtuple('JobTemplate', 'survey_spec')
|
||||||
|
obj = JobTemplate(survey_spec={'spec':[{'type': 'password', 'default': 'my_default'}]})
|
||||||
|
with mocker.patch.object(JobTemplateSurveySpec, 'get_object', return_value=obj):
|
||||||
|
view = JobTemplateSurveySpec()
|
||||||
|
response = view.get(mocker.MagicMock())
|
||||||
|
assert response == mock_response_new
|
||||||
|
# which there was a better way to do this!
|
||||||
|
assert response.call_args[0][1]['spec'][0]['default'] == '$encrypted$'
|
||||||
|
|||||||
@@ -84,3 +84,18 @@ def test_job_template_survey_variable_validation(job_template_factory):
|
|||||||
}
|
}
|
||||||
obj.survey_enabled = True
|
obj.survey_enabled = True
|
||||||
assert obj.survey_variable_validation({"a": 5}) == ["Value 5 for 'a' expected to be a string."]
|
assert obj.survey_variable_validation({"a": 5}) == ["Value 5 for 'a' expected to be a string."]
|
||||||
|
|
||||||
|
|
||||||
|
def test_job_template_survey_mixin(job_template_factory):
|
||||||
|
objects = job_template_factory(
|
||||||
|
'survey_mixin_test',
|
||||||
|
organization='org1',
|
||||||
|
inventory='inventory1',
|
||||||
|
credential='cred1',
|
||||||
|
persisted=False,
|
||||||
|
)
|
||||||
|
obj = objects.job_template
|
||||||
|
obj.survey_enabled = True
|
||||||
|
obj.survey_spec = {'spec': [{'default':'my_default', 'type':'password', 'variable':'my_variable'}]}
|
||||||
|
kwargs = obj._update_unified_job_kwargs(extra_vars={'my_variable':'$encrypted$'})
|
||||||
|
assert kwargs['extra_vars'] == '{"my_variable": "my_default"}'
|
||||||
|
|||||||
Reference in New Issue
Block a user