fix: reset state before evaluating named urls (#15683)

This commit is contained in:
Peter Braun 2024-12-04 15:53:24 +01:00 committed by GitHub
parent cb04ad8ef5
commit 055d853c54
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 13 additions and 0 deletions

View File

@ -20,6 +20,7 @@ from awx.main import migrations
from awx.main.utils.profiling import AWXProfiler
from awx.main.utils.common import memoize
from awx.urls import get_urlpatterns
from awx.main.utils.named_url_graph import reset_counters
logger = logging.getLogger('awx.main.middleware')
@ -112,6 +113,7 @@ class URLModificationMiddleware(MiddlewareMixin):
@classmethod
def _named_url_to_pk(cls, node, resource, named_url):
kwargs = {}
reset_counters()
if node.populate_named_url_query_kwargs(kwargs, named_url):
match = node.model.objects.filter(**kwargs).first()
if match:

View File

@ -265,3 +265,14 @@ class TestConvertNamedUrl:
URLModificationMiddleware._convert_named_url(f'/api/{prefix}v2/organizations/test_org/inventories/')
== f'/api/{prefix}v2/organizations/{test_org.pk}/inventories/'
)
def test_named_job_template(self):
org = Organization.objects.create(name='test_org')
tpl = JobTemplate.objects.create(name='test_tpl', organization=org)
# first, cause a '404' - we want to verify that no state from previous requests is carried over when named
# urls are resolved
assert URLModificationMiddleware._convert_named_url('/api/v2/job_templates/test/tpl++test_org/') == '/api/v2/job_templates/test/tpl++test_org/'
# try to resolve a valid url - it should succeed
assert URLModificationMiddleware._convert_named_url('/api/v2/job_templates/test_tpl++test_org/') == f'/api/v2/job_templates/{tpl.pk}/'