From 7915db2bdb0a3faf97eb5827db2ee2c6d9bbf523 Mon Sep 17 00:00:00 2001 From: David Davis Date: Mon, 18 Sep 2023 16:17:54 -0400 Subject: [PATCH] Add name regex filters for repo endpoint fixes #4432 --- CHANGES/4432.feature | 1 + pulpcore/app/viewsets/repository.py | 2 +- pulpcore/tests/functional/api/test_repos.py | 21 +++++++++++++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 CHANGES/4432.feature diff --git a/CHANGES/4432.feature b/CHANGES/4432.feature new file mode 100644 index 0000000000..f1efcff366 --- /dev/null +++ b/CHANGES/4432.feature @@ -0,0 +1 @@ +Added regex name filters (``name__regex`` and ``name__iregex``) to the repositories endpoint. diff --git a/pulpcore/app/viewsets/repository.py b/pulpcore/app/viewsets/repository.py index b7496737b0..77e501c778 100644 --- a/pulpcore/app/viewsets/repository.py +++ b/pulpcore/app/viewsets/repository.py @@ -92,7 +92,7 @@ class RepositoryFilter(BaseFilterSet): class Meta: model = Repository fields = { - "name": NAME_FILTER_OPTIONS, + "name": NAME_FILTER_OPTIONS + ["regex", "iregex"], "retain_repo_versions": NULLABLE_NUMERIC_FILTER_OPTIONS, } diff --git a/pulpcore/tests/functional/api/test_repos.py b/pulpcore/tests/functional/api/test_repos.py index 91d4a518e8..a5fee2241a 100644 --- a/pulpcore/tests/functional/api/test_repos.py +++ b/pulpcore/tests/functional/api/test_repos.py @@ -48,3 +48,24 @@ def test_repository_content_filters( # but not in its latest version anymore results = file_repository_api_client.list(latest_with_content=content.pulp_href).results assert results == [] + + +@pytest.mark.parallel +def test_repository_name_regex_filters( + file_repository_factory, + file_repository_api_client, +): + """Test repository's name regex filters.""" + repo = file_repository_factory(name="regex-test-repo") + pattern = "regex-test.*" + + results = file_repository_api_client.list(name__regex=pattern).results + assert results == [repo] + + # upper case pattern + results = file_repository_api_client.list(name__regex=pattern.upper()).results + assert results == [] + + # upper case pattern with iregex + results = file_repository_api_client.list(name__iregex=pattern.upper()).results + assert results == [repo]