mirror of
https://github.com/ansible/awx.git
synced 2026-05-08 09:57:35 -02:30
Feature: saved launchtime configurations
Consolidate prompts accept/reject logic in unified models Break out accept/reject logic for variables Surface new promptable fields on WFJT nodes, schedules Make schedules and workflows accurately reject variables that are not allowed by the prompting rules or the survey rules on the template Validate against unallowed extra_data in system job schedules Prevent schedule or WFJT node POST/PATCH with unprompted data Move system job days validation to new mechanism Add new psuedo-field for WFJT node credential Add validation for node related credentials Add related config model to unified job Use JobLaunchConfig model for launch RBAC check Support credential overwrite behavior with multi-creds change modern manual launch to use merge behavior Refactor JobLaunchSerializer, self.instance=None Modularize job launch view to create "modern" data Auto-create config object with every job Add create schedule endpoint for jobs
This commit is contained in:
@@ -16,13 +16,13 @@ from awx.main.models import (
|
||||
|
||||
|
||||
def mock_JT_resource_data():
|
||||
return ({}, [])
|
||||
return {}
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def job_template(mocker):
|
||||
mock_jt = mocker.MagicMock(pk=5)
|
||||
mock_jt.resource_validation_data = mock_JT_resource_data
|
||||
mock_jt.validation_errors = mock_JT_resource_data
|
||||
return mock_jt
|
||||
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ from rest_framework import serializers
|
||||
|
||||
|
||||
def mock_JT_resource_data():
|
||||
return ({}, [])
|
||||
return {}
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
@@ -28,7 +28,7 @@ def job_template(mocker):
|
||||
mock_jt = mocker.MagicMock(spec=JobTemplate)
|
||||
mock_jt.pk = 5
|
||||
mock_jt.host_config_key = '9283920492'
|
||||
mock_jt.resource_validation_data = mock_JT_resource_data
|
||||
mock_jt.validation_errors = mock_JT_resource_data
|
||||
return mock_jt
|
||||
|
||||
|
||||
|
||||
@@ -5,7 +5,6 @@ import mock
|
||||
# AWX
|
||||
from awx.api.serializers import (
|
||||
WorkflowJobTemplateSerializer,
|
||||
WorkflowNodeBaseSerializer,
|
||||
WorkflowJobTemplateNodeSerializer,
|
||||
WorkflowJobNodeSerializer,
|
||||
)
|
||||
@@ -54,7 +53,7 @@ class TestWorkflowNodeBaseSerializerGetRelated():
|
||||
return WorkflowJobTemplateNode(pk=1)
|
||||
|
||||
def test_workflow_unified_job_template_present(self, get_related_mock_and_run, workflow_job_template_node_related):
|
||||
related = get_related_mock_and_run(WorkflowNodeBaseSerializer, workflow_job_template_node_related)
|
||||
related = get_related_mock_and_run(WorkflowJobTemplateNodeSerializer, workflow_job_template_node_related)
|
||||
assert 'unified_job_template' in related
|
||||
assert related['unified_job_template'] == '/api/v2/%s/%d/' % ('job_templates', workflow_job_template_node_related.unified_job_template.pk)
|
||||
|
||||
@@ -63,7 +62,7 @@ class TestWorkflowNodeBaseSerializerGetRelated():
|
||||
assert 'unified_job_template' not in related
|
||||
|
||||
|
||||
@mock.patch('awx.api.serializers.WorkflowNodeBaseSerializer.get_related', lambda x,y: {})
|
||||
@mock.patch('awx.api.serializers.BaseSerializer.get_related', lambda x,y: {})
|
||||
class TestWorkflowJobTemplateNodeSerializerGetRelated():
|
||||
@pytest.fixture
|
||||
def workflow_job_template_node(self):
|
||||
@@ -92,6 +91,9 @@ class TestWorkflowJobTemplateNodeSerializerGetRelated():
|
||||
'always_nodes',
|
||||
])
|
||||
def test_get_related(self, test_get_related, workflow_job_template_node, related_resource_name):
|
||||
serializer = WorkflowJobTemplateNodeSerializer()
|
||||
print serializer.get_related(workflow_job_template_node)
|
||||
# import pdb; pdb.set_trace()
|
||||
test_get_related(WorkflowJobTemplateNodeSerializer,
|
||||
workflow_job_template_node,
|
||||
'workflow_job_template_nodes',
|
||||
@@ -139,17 +141,19 @@ class TestWorkflowJobTemplateNodeSerializerCharPrompts():
|
||||
def test_change_single_field(self, WFJT_serializer):
|
||||
"Test that a single prompt field can be changed without affecting other fields"
|
||||
internal_value = WFJT_serializer.to_internal_value({'job_type': 'check'})
|
||||
assert internal_value['char_prompts']['job_type'] == 'check'
|
||||
assert internal_value['char_prompts']['limit'] == 'webservers'
|
||||
assert internal_value['job_type'] == 'check'
|
||||
WFJT_serializer.instance.job_type = 'check'
|
||||
assert WFJT_serializer.instance.limit == 'webservers'
|
||||
|
||||
def test_null_single_field(self, WFJT_serializer):
|
||||
"Test that a single prompt field can be removed without affecting other fields"
|
||||
internal_value = WFJT_serializer.to_internal_value({'job_type': None})
|
||||
assert 'job_type' not in internal_value['char_prompts']
|
||||
assert internal_value['char_prompts']['limit'] == 'webservers'
|
||||
assert internal_value['job_type'] is None
|
||||
WFJT_serializer.instance.job_type = None
|
||||
assert WFJT_serializer.instance.limit == 'webservers'
|
||||
|
||||
|
||||
@mock.patch('awx.api.serializers.WorkflowNodeBaseSerializer.get_related', lambda x,y: {})
|
||||
@mock.patch('awx.api.serializers.WorkflowJobTemplateNodeSerializer.get_related', lambda x,y: {})
|
||||
class TestWorkflowJobNodeSerializerGetRelated():
|
||||
@pytest.fixture
|
||||
def workflow_job_node(self):
|
||||
|
||||
Reference in New Issue
Block a user