From ec2e51c5ec312bf1534088d23fe9c272a7ef5531 Mon Sep 17 00:00:00 2001 From: Preston Rasmussen <109292228+prasmussen15@users.noreply.github.com> Date: Thu, 3 Oct 2024 10:08:30 -0400 Subject: [PATCH] test escape characters (#171) * test escape characters * format * tests * run tests * copyright --- graphiti_core/helpers.py | 4 ++-- tests/helpers_test.py | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 tests/helpers_test.py diff --git a/graphiti_core/helpers.py b/graphiti_core/helpers.py index 771e7e11..314babe5 100644 --- a/graphiti_core/helpers.py +++ b/graphiti_core/helpers.py @@ -25,7 +25,7 @@ def parse_db_date(neo_date: neo4j_time.DateTime | None) -> datetime | None: def lucene_sanitize(query: str) -> str: # Escape special characters from a query before passing into Lucene - # + - && || ! ( ) { } [ ] ^ " ~ * ? : \ + # + - && || ! ( ) { } [ ] ^ " ~ * ? : \ / escape_map = str.maketrans( { '+': r'\+', @@ -46,7 +46,7 @@ def lucene_sanitize(query: str) -> str: '?': r'\?', ':': r'\:', '\\': r'\\', - '/': r'\/' + '/': r'\/', } ) diff --git a/tests/helpers_test.py b/tests/helpers_test.py new file mode 100644 index 00000000..20029bc0 --- /dev/null +++ b/tests/helpers_test.py @@ -0,0 +1,38 @@ +""" +Copyright 2024, Zep Software, Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +""" + +import pytest + +from graphiti_core.helpers import lucene_sanitize + + +def test_lucene_sanitize(): + # Call the function with test data + queries = [ + ( + 'This has every secape character + - && || ! ( ) { } [ ] ^ " ~ * ? : \\ /', + 'This has every secape character \+ \- \&\& \|\| \! \( \) \{ \} \[ \] \^ \\" \~ \* \? \: \\\ \/', + ), + ('This has no escape characters', 'This has no escape characters'), + ] + + for query, assert_result in queries: + result = lucene_sanitize(query) + assert assert_result == result + + +if __name__ == '__main__': + pytest.main([__file__])