mirror of
https://github.com/ansible/awx.git
synced 2026-05-13 20:37:39 -02:30
fix the handling of wrong survey spec
This commit is contained in:
@@ -151,7 +151,15 @@ import json
|
|||||||
|
|
||||||
def update_survey(module, last_request):
|
def update_survey(module, last_request):
|
||||||
spec_endpoint = last_request.get('related', {}).get('survey_spec')
|
spec_endpoint = last_request.get('related', {}).get('survey_spec')
|
||||||
module.post_endpoint(spec_endpoint, **{'data': module.params.get('survey_spec')})
|
if module.params.get('survey_spec') == {}:
|
||||||
|
response = module.delete_endpoint(spec_endpoint)
|
||||||
|
if response['status_code'] != 200:
|
||||||
|
# Not sure how to make this actually return a non 200 to test what to dump in the respinse
|
||||||
|
module.fail_json(msg="Failed to delete survey: {0}".format(response['json']))
|
||||||
|
else:
|
||||||
|
response = module.post_endpoint(spec_endpoint, **{'data': module.params.get('survey_spec')})
|
||||||
|
if response['status_code'] != 200:
|
||||||
|
module.fail_json(msg="Failed to update survey: {0}".format(response['json']['error']))
|
||||||
module.exit_json(**module.json_output)
|
module.exit_json(**module.json_output)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -177,6 +177,38 @@ def test_job_template_with_survey_spec(run_module, admin_user, project, inventor
|
|||||||
assert ActivityStream.objects.count() == prior_ct
|
assert ActivityStream.objects.count() == prior_ct
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.django_db
|
||||||
|
def test_job_template_with_wrong_survey_spec(run_module, admin_user, project, inventory, survey_spec):
|
||||||
|
result = run_module('tower_job_template', dict(
|
||||||
|
name='foo',
|
||||||
|
playbook='helloworld.yml',
|
||||||
|
project=project.name,
|
||||||
|
inventory=inventory.name,
|
||||||
|
survey_spec=survey_spec,
|
||||||
|
survey_enabled=True
|
||||||
|
), admin_user)
|
||||||
|
assert not result.get('failed', False), result.get('msg', result)
|
||||||
|
assert result.get('changed', False), result
|
||||||
|
jt = JobTemplate.objects.get(pk=result['id'])
|
||||||
|
|
||||||
|
assert jt.survey_spec == survey_spec
|
||||||
|
|
||||||
|
prior_ct = ActivityStream.objects.count()
|
||||||
|
|
||||||
|
del survey_spec['description']
|
||||||
|
|
||||||
|
result = run_module('tower_job_template', dict(
|
||||||
|
name='foo',
|
||||||
|
playbook='helloworld.yml',
|
||||||
|
project=project.name,
|
||||||
|
inventory=inventory.name,
|
||||||
|
survey_spec=survey_spec,
|
||||||
|
survey_enabled=True
|
||||||
|
), admin_user)
|
||||||
|
assert result.get('failed', True)
|
||||||
|
assert result.get('msg') == "Failed to update survey: Field 'description' is missing from survey spec."
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_job_template_with_survey_encrypted_default(run_module, admin_user, project, inventory, silence_warning):
|
def test_job_template_with_survey_encrypted_default(run_module, admin_user, project, inventory, silence_warning):
|
||||||
spec = {
|
spec = {
|
||||||
|
|||||||
@@ -81,6 +81,34 @@ def test_survey_spec_only_changed(run_module, admin_user, organization, survey_s
|
|||||||
assert wfjt.survey_spec == survey_spec
|
assert wfjt.survey_spec == survey_spec
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.django_db
|
||||||
|
def test_survey_spec_only_changed(run_module, admin_user, organization, survey_spec):
|
||||||
|
wfjt = WorkflowJobTemplate.objects.create(
|
||||||
|
organization=organization, name='foo-workflow',
|
||||||
|
survey_enabled=True, survey_spec=survey_spec
|
||||||
|
)
|
||||||
|
result = run_module('tower_workflow_job_template', {
|
||||||
|
'name': 'foo-workflow',
|
||||||
|
'organization': organization.name,
|
||||||
|
'state': 'present'
|
||||||
|
}, admin_user)
|
||||||
|
assert not result.get('failed', False), result.get('msg', result)
|
||||||
|
assert not result.get('changed', True), result
|
||||||
|
wfjt.refresh_from_db()
|
||||||
|
assert wfjt.survey_spec == survey_spec
|
||||||
|
|
||||||
|
del survey_spec['description']
|
||||||
|
|
||||||
|
result = run_module('tower_workflow_job_template', {
|
||||||
|
'name': 'foo-workflow',
|
||||||
|
'organization': organization.name,
|
||||||
|
'survey_spec': survey_spec,
|
||||||
|
'state': 'present'
|
||||||
|
}, admin_user)
|
||||||
|
assert result.get('failed', True)
|
||||||
|
assert result.get('msg') == "Failed to update survey: Field 'description' is missing from survey spec."
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_associate_only_on_success(run_module, admin_user, organization, project):
|
def test_associate_only_on_success(run_module, admin_user, organization, project):
|
||||||
wfjt = WorkflowJobTemplate.objects.create(
|
wfjt = WorkflowJobTemplate.objects.create(
|
||||||
|
|||||||
Reference in New Issue
Block a user