From de92d7d5acb9f1ded34b2868ea59b614bdf31895 Mon Sep 17 00:00:00 2001 From: lebaudantoine Date: Mon, 30 Jun 2025 14:09:03 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B(backend)=20prevent=20regex=20from?= =?UTF-8?q?=20matching=20empty=20string?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rework regex pattern to exclude empty string matches since url_encoded_folder_path is optional. Add additional test cases covering edge cases and failure scenarios to improve validation coverage and prevent false positives. --- src/backend/core/recording/event/parsers.py | 2 +- src/backend/core/tests/recording/event/test_parsers.py | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/backend/core/recording/event/parsers.py b/src/backend/core/recording/event/parsers.py index ccf12d6a..9fb195ed 100644 --- a/src/backend/core/recording/event/parsers.py +++ b/src/backend/core/recording/event/parsers.py @@ -86,7 +86,7 @@ class MinioParser: # pylint: disable=line-too-long self._filepath_regex = re.compile( - r"(?P(?:[^%]+%2F)*)?(?P[0-9a-fA-F\-]{36})\.(?P[a-zA-Z0-9]+)" + r"(?P(?:[^%]+%2F)+)?(?P[0-9a-fA-F\-]{36})\.(?P[a-zA-Z0-9]+)" ) @staticmethod diff --git a/src/backend/core/tests/recording/event/test_parsers.py b/src/backend/core/tests/recording/event/test_parsers.py index 080d98c3..65904c6c 100644 --- a/src/backend/core/tests/recording/event/test_parsers.py +++ b/src/backend/core/tests/recording/event/test_parsers.py @@ -129,8 +129,11 @@ def test_validate_invalid_filetype(minio_parser): @pytest.mark.parametrize( "invalid_filepath", [ - "invalid_filepath", + "invalid_filepath", # totally invalid string "recording/46d1a121-2426-484d-8fb3-09b5d886f7a8.ogg", + "recording/46d1a121-2426-484d-8fb3-09b5d886f7a8", # missing extension + "46d1a121-2426-484d-8fb3-09b5d886f7a8", # missing url_encoded_folder_path and extension + "", # empty string "recording%2F46d1a1212426484d8fb309b5d886f7a8.ogg", ], )