mirror of
https://github.com/ansible/awx.git
synced 2026-05-19 14:57:39 -02:30
unit test for node prompt values
This commit is contained in:
@@ -2290,7 +2290,7 @@ class WorkflowJobTemplateNodeSerializer(WorkflowNodeBaseSerializer):
|
|||||||
|
|
||||||
def extract_char_prompts(self, data):
|
def extract_char_prompts(self, data):
|
||||||
char_prompts = {}
|
char_prompts = {}
|
||||||
for fd in ['job_type', 'job_tags', 'skip_tags', 'limit', 'skip_tags']:
|
for fd in ['job_type', 'job_tags', 'skip_tags', 'limit']:
|
||||||
if data.get(fd, None):
|
if data.get(fd, None):
|
||||||
char_prompts[fd] = data[fd]
|
char_prompts[fd] = data[fd]
|
||||||
return char_prompts
|
return char_prompts
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ import json
|
|||||||
|
|
||||||
__all__ = ['WorkflowJobTemplate', 'WorkflowJob', 'WorkflowJobOptions', 'WorkflowJobNode', 'WorkflowJobTemplateNode',]
|
__all__ = ['WorkflowJobTemplate', 'WorkflowJob', 'WorkflowJobOptions', 'WorkflowJobNode', 'WorkflowJobTemplateNode',]
|
||||||
|
|
||||||
CHAR_PROMPTS_LIST = ['job_type', 'job_tags', 'skip_tags', 'limit', 'skip_tags']
|
CHAR_PROMPTS_LIST = ['job_type', 'job_tags', 'skip_tags', 'limit']
|
||||||
|
|
||||||
class WorkflowNodeBase(CreatedModifiedModel):
|
class WorkflowNodeBase(CreatedModifiedModel):
|
||||||
class Meta:
|
class Meta:
|
||||||
@@ -173,7 +173,7 @@ class WorkflowJobNode(WorkflowNodeBase):
|
|||||||
WJ_json_extra_vars = yaml.safe_load(self.workflow_job.extra_vars)
|
WJ_json_extra_vars = yaml.safe_load(self.workflow_job.extra_vars)
|
||||||
except yaml.YAMLError:
|
except yaml.YAMLError:
|
||||||
WJ_json_extra_vars = {}
|
WJ_json_extra_vars = {}
|
||||||
extra_vars.update(WJ_json_extra_vars)
|
extra_vars.update(WJ_json_extra_vars)
|
||||||
# TODO: merge artifacts, add ancestor_artifacts to kwargs
|
# TODO: merge artifacts, add ancestor_artifacts to kwargs
|
||||||
if extra_vars:
|
if extra_vars:
|
||||||
data['extra_vars'] = extra_vars
|
data['extra_vars'] = extra_vars
|
||||||
|
|||||||
@@ -1,7 +1,12 @@
|
|||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from awx.main.models.jobs import JobTemplate
|
from awx.main.models.jobs import JobTemplate
|
||||||
from awx.main.models.workflow import WorkflowJobTemplateNode, WorkflowJobInheritNodesMixin, WorkflowJobNode
|
from awx.main.models.inventory import Inventory
|
||||||
|
from awx.main.models.credential import Credential
|
||||||
|
from awx.main.models.workflow import (
|
||||||
|
WorkflowJobTemplateNode, WorkflowJobInheritNodesMixin,
|
||||||
|
WorkflowJob, WorkflowJobNode
|
||||||
|
)
|
||||||
|
|
||||||
class TestWorkflowJobInheritNodesMixin():
|
class TestWorkflowJobInheritNodesMixin():
|
||||||
class TestCreateWorkflowJobNodes():
|
class TestCreateWorkflowJobNodes():
|
||||||
@@ -79,3 +84,37 @@ class TestWorkflowJobInheritNodesMixin():
|
|||||||
job_nodes[i].success_nodes.add.assert_any_call(job_nodes[i + 1])
|
job_nodes[i].success_nodes.add.assert_any_call(job_nodes[i + 1])
|
||||||
|
|
||||||
|
|
||||||
|
class TestWorkflowJobHelperMethods:
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def workflow_job_unit(self):
|
||||||
|
return WorkflowJob(name='workflow', status='new')
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def workflow_job_node_unit(self, workflow_job_unit, job_template_factory):
|
||||||
|
# note: factory sets ask_inventory_on_launch to true when not provided
|
||||||
|
jt = job_template_factory(name='example-jt', persisted=False).job_template
|
||||||
|
return WorkflowJobNode(workflow_job=workflow_job_unit, unified_job_template=jt)
|
||||||
|
|
||||||
|
def test_null_kwargs(self, workflow_job_node_unit):
|
||||||
|
assert workflow_job_node_unit.get_job_kwargs() == {}
|
||||||
|
|
||||||
|
def test_inherit_workflow_job_extra_vars(self, workflow_job_node_unit):
|
||||||
|
workflow_job = workflow_job_node_unit.workflow_job
|
||||||
|
workflow_job.extra_vars = '{"a": 84}'
|
||||||
|
assert workflow_job_node_unit.get_job_kwargs() == {'extra_vars': {'a': 84}}
|
||||||
|
|
||||||
|
def test_char_prompts_and_res_node_prompts(self, workflow_job_node_unit):
|
||||||
|
barnyard_kwargs = dict(
|
||||||
|
job_type='scan',
|
||||||
|
job_tags='quack',
|
||||||
|
limit='duck',
|
||||||
|
skip_tags='oink'
|
||||||
|
)
|
||||||
|
workflow_job_node_unit.char_prompts = barnyard_kwargs
|
||||||
|
inv = Inventory(name='example-inv')
|
||||||
|
cred = Credential(name='example-inv', kind='ssh', username='asdf', password='asdf')
|
||||||
|
workflow_job_node_unit.inventory = inv
|
||||||
|
workflow_job_node_unit.credential = cred
|
||||||
|
assert workflow_job_node_unit.get_job_kwargs() == dict(
|
||||||
|
inventory=inv, credential=cred, **barnyard_kwargs)
|
||||||
|
|||||||
Reference in New Issue
Block a user