mirror of
https://github.com/ansible/awx.git
synced 2026-03-05 02:31:03 -03:30
Added test for Chainable Undefined Behavior
Signed-off-by: Will Haines <william.haines@colorado.edu>
This commit is contained in:
@@ -3,7 +3,7 @@ __metaclass__ = type
|
|||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from awx.main.models import NotificationTemplate
|
from awx.main.models import NotificationTemplate, Job
|
||||||
|
|
||||||
|
|
||||||
def compare_with_encrypted(model_config, param_config):
|
def compare_with_encrypted(model_config, param_config):
|
||||||
@@ -109,3 +109,32 @@ def test_deprecated_to_modern_no_op(run_module, admin_user, organization):
|
|||||||
), admin_user)
|
), admin_user)
|
||||||
assert not result.get('failed', False), result.get('msg', result)
|
assert not result.get('failed', False), result.get('msg', result)
|
||||||
assert not result.pop('changed', None), result
|
assert not result.pop('changed', None), result
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.django_db
|
||||||
|
def test_build_notification_message_undefined(run_module, admin_user, organization):
|
||||||
|
"""Job notification templates may encounter undefined values in the context when they are
|
||||||
|
rendered. Make sure that accessing attributes or items of an undefined value returns another
|
||||||
|
instance of Undefined, rather than raising an UndefinedError. This enables the use of expressions
|
||||||
|
like "{{ job.created_by.first_name | default('unknown') }}"."""
|
||||||
|
job = Job.objects.create(name='foobar')
|
||||||
|
|
||||||
|
nt_config = {
|
||||||
|
'url': 'http://www.example.com/hook',
|
||||||
|
'headers': {
|
||||||
|
'X-Custom-Header': 'value123'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
custom_start_template = {'body': '{"started_by": "{{ job.summary_fields.created_by.username | default(\'My Placeholder\') }}"}'}
|
||||||
|
messages = {'started': custom_start_template, 'success': None, 'error': None, 'workflow_approval': None}
|
||||||
|
result = run_module('tower_notification_template', dict(
|
||||||
|
name='foo-notification-template',
|
||||||
|
organization=organization.name,
|
||||||
|
notification_type='webhook',
|
||||||
|
notification_configuration=nt_config,
|
||||||
|
messages=messages,
|
||||||
|
), admin_user)
|
||||||
|
nt = NotificationTemplate.objects.get(id=result['id'])
|
||||||
|
|
||||||
|
_, body = job.build_notification_message(nt, 'running')
|
||||||
|
assert '{"started_by": "My Placeholder"}' in body
|
||||||
Reference in New Issue
Block a user