mirror of
https://github.com/cpacker/MemGPT.git
synced 2025-06-03 04:30:22 +00:00
67 lines
1.9 KiB
Python
67 lines
1.9 KiB
Python
import pytest
|
|
|
|
from letta.constants import MAX_FILENAME_LENGTH
|
|
from letta.utils import sanitize_filename
|
|
|
|
|
|
def test_valid_filename():
|
|
filename = "valid_filename.txt"
|
|
sanitized = sanitize_filename(filename)
|
|
assert sanitized.startswith("valid_filename_")
|
|
assert sanitized.endswith(".txt")
|
|
|
|
|
|
def test_filename_with_special_characters():
|
|
filename = "invalid:/<>?*ƒfilename.txt"
|
|
sanitized = sanitize_filename(filename)
|
|
assert sanitized.startswith("ƒfilename_")
|
|
assert sanitized.endswith(".txt")
|
|
|
|
|
|
def test_null_byte_in_filename():
|
|
filename = "valid\0filename.txt"
|
|
sanitized = sanitize_filename(filename)
|
|
assert "\0" not in sanitized
|
|
assert sanitized.startswith("validfilename_")
|
|
assert sanitized.endswith(".txt")
|
|
|
|
|
|
def test_path_traversal_characters():
|
|
filename = "../../etc/passwd"
|
|
sanitized = sanitize_filename(filename)
|
|
assert sanitized.startswith("passwd_")
|
|
assert len(sanitized) <= MAX_FILENAME_LENGTH
|
|
|
|
|
|
def test_empty_filename():
|
|
sanitized = sanitize_filename("")
|
|
assert sanitized.startswith("_")
|
|
|
|
|
|
def test_dot_as_filename():
|
|
with pytest.raises(ValueError, match="Invalid filename"):
|
|
sanitize_filename(".")
|
|
|
|
|
|
def test_dotdot_as_filename():
|
|
with pytest.raises(ValueError, match="Invalid filename"):
|
|
sanitize_filename("..")
|
|
|
|
|
|
def test_long_filename():
|
|
filename = "a" * (MAX_FILENAME_LENGTH + 10) + ".txt"
|
|
sanitized = sanitize_filename(filename)
|
|
assert len(sanitized) <= MAX_FILENAME_LENGTH
|
|
assert sanitized.endswith(".txt")
|
|
|
|
|
|
def test_unique_filenames():
|
|
filename = "duplicate.txt"
|
|
sanitized1 = sanitize_filename(filename)
|
|
sanitized2 = sanitize_filename(filename)
|
|
assert sanitized1 != sanitized2
|
|
assert sanitized1.startswith("duplicate_")
|
|
assert sanitized2.startswith("duplicate_")
|
|
assert sanitized1.endswith(".txt")
|
|
assert sanitized2.endswith(".txt")
|