mirror of
https://github.com/ansible/awx.git
synced 2026-03-20 10:27:34 -02:30
Only perform prompts validation if prompts fields are submitted
This commit is contained in:
@@ -3750,7 +3750,11 @@ class LaunchConfigurationBaseSerializer(BaseSerializer):
|
|||||||
|
|
||||||
# Build unsaved version of this config, use it to detect prompts errors
|
# Build unsaved version of this config, use it to detect prompts errors
|
||||||
mock_obj = self._build_mock_obj(attrs)
|
mock_obj = self._build_mock_obj(attrs)
|
||||||
accepted, rejected, errors = ujt._accept_or_ignore_job_kwargs(_exclude_errors=self.exclude_errors, **mock_obj.prompts_dict())
|
if set(list(ujt.get_ask_mapping().keys()) + ['extra_data']) & set(attrs.keys()):
|
||||||
|
accepted, rejected, errors = ujt._accept_or_ignore_job_kwargs(_exclude_errors=self.exclude_errors, **mock_obj.prompts_dict())
|
||||||
|
else:
|
||||||
|
# Only perform validation of prompts if prompts fields are provided
|
||||||
|
errors = {}
|
||||||
|
|
||||||
# Remove all unprocessed $encrypted$ strings, indicating default usage
|
# Remove all unprocessed $encrypted$ strings, indicating default usage
|
||||||
if 'extra_data' in attrs and password_dict:
|
if 'extra_data' in attrs and password_dict:
|
||||||
|
|||||||
@@ -105,6 +105,30 @@ def test_encrypted_survey_answer(post, patch, admin_user, project, inventory, su
|
|||||||
assert decrypt_value(get_encryption_key('value', pk=None), schedule.extra_data['var1']) == 'bar'
|
assert decrypt_value(get_encryption_key('value', pk=None), schedule.extra_data['var1']) == 'bar'
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.django_db
|
||||||
|
def test_survey_password_default(post, patch, admin_user, project, inventory, survey_spec_factory):
|
||||||
|
job_template = JobTemplate.objects.create(
|
||||||
|
name='test-jt',
|
||||||
|
project=project,
|
||||||
|
playbook='helloworld.yml',
|
||||||
|
inventory=inventory,
|
||||||
|
ask_variables_on_launch=False,
|
||||||
|
survey_enabled=True,
|
||||||
|
survey_spec=survey_spec_factory([{'variable': 'var1', 'question_name': 'Q1', 'type': 'password', 'required': True, 'default': 'foobar'}]),
|
||||||
|
)
|
||||||
|
|
||||||
|
# test removal of $encrypted$
|
||||||
|
url = reverse('api:job_template_schedules_list', kwargs={'pk': job_template.id})
|
||||||
|
r = post(url, {'name': 'test sch', 'rrule': RRULE_EXAMPLE, 'extra_data': '{"var1": "$encrypted$"}'}, admin_user, expect=201)
|
||||||
|
schedule = Schedule.objects.get(pk=r.data['id'])
|
||||||
|
assert schedule.extra_data == {}
|
||||||
|
assert schedule.enabled is True
|
||||||
|
|
||||||
|
# test an unrelated change
|
||||||
|
patch(schedule.get_absolute_url(), data={'enabled': False}, user=admin_user, expect=200)
|
||||||
|
patch(schedule.get_absolute_url(), data={'enabled': True}, user=admin_user, expect=200)
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
'rrule, error',
|
'rrule, error',
|
||||||
|
|||||||
Reference in New Issue
Block a user