From 4412a5789ac96a2344b7ae4bf059f9bc9fb8189f Mon Sep 17 00:00:00 2001 From: kompotkot Date: Wed, 9 Mar 2022 13:05:31 +0000 Subject: [PATCH] Test cases for name_normalization --- backend/moonstreamapi/actions.py | 5 ++++- backend/moonstreamapi/routes/queries.py | 1 + backend/moonstreamapi/text_actions.py | 19 +++++++++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 backend/moonstreamapi/text_actions.py diff --git a/backend/moonstreamapi/actions.py b/backend/moonstreamapi/actions.py index 1d6a52f0..eb774327 100644 --- a/backend/moonstreamapi/actions.py +++ b/backend/moonstreamapi/actions.py @@ -62,6 +62,7 @@ class NameNormalizationException(Exception): Raised on actions when slugify can't normalize name. """ + class ResourceQueryFetchException(Exception): """ Exception in queries API @@ -560,7 +561,9 @@ def name_normalization(query_name: str) -> str: Sanitize provided query name. """ try: - normalized_query_name = slugify(query_name, max_length=50) + normalized_query_name = slugify( + query_name, max_length=50, lowercase=False, separator="_" + ) except Exception as e: logger.error(f"Error in query normalization. Error: {e}") raise NameNormalizationException(f"Can't normalize name:{query_name}") diff --git a/backend/moonstreamapi/routes/queries.py b/backend/moonstreamapi/routes/queries.py index 0cbc85e2..18b2718f 100644 --- a/backend/moonstreamapi/routes/queries.py +++ b/backend/moonstreamapi/routes/queries.py @@ -33,6 +33,7 @@ router = APIRouter( prefix="/queries", ) + @router.get("/list", tags=["queries"]) async def get_list_of_queries_handler(request: Request) -> List[Dict[str, Any]]: diff --git a/backend/moonstreamapi/text_actions.py b/backend/moonstreamapi/text_actions.py new file mode 100644 index 00000000..17fb3a2d --- /dev/null +++ b/backend/moonstreamapi/text_actions.py @@ -0,0 +1,19 @@ +import unittest + +from . import actions + + +class TestActions(unittest.TestCase): + def test_name_normalization(self): + names = [ + ["test", "test"], + ["test_Name", "test_Name"], + ["%20UNION", "20UNION"], + ["UNION ALL", "UNION_ALL"], + ["$_REQUEST", "REQUEST"], + ["id=1", "id_1"], + ["Lo" * 30, "Lo" * 25], + ] + for name in names: + query_name = actions.name_normalization(name[0]) + self.assertEqual(query_name, name[1])