diff --git a/awx/main/tests/unit/utils/conftest.py b/awx/main/tests/unit/utils/conftest.py new file mode 100644 index 0000000000..16f7b25ea4 --- /dev/null +++ b/awx/main/tests/unit/utils/conftest.py @@ -0,0 +1,14 @@ +import logging + +import pytest + +_VALIDATION_SIGNALS_LOGGER = 'ansible_base.lib.utils.validation_signals' + + +@pytest.fixture(autouse=True) +def capture_validation_signal_logs_for_bypass_tests(request, caplog): + """DAB caplog pattern (pytest + xdist); only for bypass observability tests.""" + if request.module.__name__ != 'awx.main.tests.unit.utils.test_validation_bypass_observability': + return + caplog.set_level(logging.DEBUG) + caplog.set_level(logging.WARNING, logger=_VALIDATION_SIGNALS_LOGGER) diff --git a/awx/main/tests/unit/utils/test_validation_bypass_observability.py b/awx/main/tests/unit/utils/test_validation_bypass_observability.py index 5510d3ab4d..f431d0adea 100644 --- a/awx/main/tests/unit/utils/test_validation_bypass_observability.py +++ b/awx/main/tests/unit/utils/test_validation_bypass_observability.py @@ -80,13 +80,21 @@ def test_audit_bulk_model_instances_logs_host_description_on_bulk_create(caplog) @pytest.mark.django_db @pytest.mark.usefixtures('capture_validation_signal_logs') def test_audit_workflow_job_nodes_skips_when_serializer_already_logged(caplog): - from ansible_base.lib.utils.validation_signals import register_serializer_validation_rejection + from ansible_base.lib.utils.validation_signals import ( + get_validation_context_token, + register_serializer_validation_rejection, + reset_validation_context, + ) wfj = WorkflowJob.objects.create(name='wf-audit-limit-dedupe') node = WorkflowJobNode(workflow_job=wfj, identifier='wf-node-1') node.limit = '' register_serializer_validation_rejection('main.WorkflowJobNode', 'limit') - audit_workflow_job_nodes_for_bulk_create([node]) + token = get_validation_context_token() + try: + audit_workflow_job_nodes_for_bulk_create([node]) + finally: + reset_validation_context(token) assert 'ORM bypass' not in caplog.text diff --git a/requirements/requirements_git.txt b/requirements/requirements_git.txt index 4e5e1a54c1..cf1d077c16 100644 --- a/requirements/requirements_git.txt +++ b/requirements/requirements_git.txt @@ -21,5 +21,5 @@ certifi @ git+https://github.com/ansible/system-certifi.git@devel ansible-runner @ git+https://github.com/ansible/ansible-runner.git@devel awx-plugins-core[credentials-github-app] @ git+https://github.com/ansible/awx-plugins.git@devel # AAP-86051: bulk_validation_audit + validation bypass observability (django-ansible-base#1147); revert to @devel after merge -django-ansible-base[feature-flags,jwt-consumer,rbac,resource-registry,rest-filters] @ git+https://github.com/vidyanambiar/django-ansible-base@282fb8e13c97656847a5879ac050108d3ba2b35a +django-ansible-base[feature-flags,jwt-consumer,rbac,resource-registry,rest-filters] @ git+https://github.com/vidyanambiar/django-ansible-base@d2cdd4fb3ff1ac9530f3bee81224a47f08225751 awx-plugins-interfaces @ git+https://github.com/ansible/awx_plugins.interfaces.git