from datetime import datetime from datetime import timezone import pytest from awx.main.models import JobEvent, ProjectUpdateEvent, AdHocCommandEvent, InventoryUpdateEvent, SystemJobEvent @pytest.mark.parametrize( 'job_identifier, cls', [ ['job_id', JobEvent], ['project_update_id', ProjectUpdateEvent], ['ad_hoc_command_id', AdHocCommandEvent], ['inventory_update_id', InventoryUpdateEvent], ['system_job_id', SystemJobEvent], ], ) @pytest.mark.parametrize('created', [datetime(2018, 1, 1).isoformat(), datetime(2018, 1, 1)]) def test_event_parse_created(job_identifier, cls, created): event = cls.create_from_data(**{job_identifier: 123, 'created': created}) assert event.created == datetime(2018, 1, 1).replace(tzinfo=timezone.utc) @pytest.mark.parametrize( 'job_identifier, cls', [ ['job_id', JobEvent], ['project_update_id', ProjectUpdateEvent], ['ad_hoc_command_id', AdHocCommandEvent], ['inventory_update_id', InventoryUpdateEvent], ['system_job_id', SystemJobEvent], ], ) def test_playbook_event_strip_invalid_keys(job_identifier, cls): event = cls.create_from_data(**{job_identifier: 123, 'extra_key': 'extra_value'}) assert getattr(event, job_identifier) == 123 assert not hasattr(event, 'extra_key') @pytest.mark.parametrize('field', ['play', 'role', 'task', 'playbook']) def test_really_long_event_fields(field): event = JobEvent.create_from_data(**{'job_id': 123, 'event_data': {field: 'X' * 4096}}) assert event.event_data[field] == 'X' * 1023 + '…'