test_sanitize.py
1 """Tests for filename sanitization and name validation utilities.""" 2 3 import pytest 4 5 from restai.models.models import sanitize_filename, validate_safe_name 6 7 8 def test_sanitize_strips_path(): 9 """sanitize_filename should strip directory traversal components.""" 10 assert sanitize_filename("../../etc/passwd") == "passwd" 11 12 13 def test_sanitize_removes_null(): 14 """sanitize_filename should remove null bytes.""" 15 assert sanitize_filename("file\x00name.txt") == "filename.txt" 16 17 18 def test_sanitize_empty(): 19 """sanitize_filename should return 'unnamed_file' for empty input.""" 20 assert sanitize_filename("") == "unnamed_file" 21 22 23 def test_validate_safe_name_rejects_special(): 24 """validate_safe_name should raise ValueError for names with special characters.""" 25 with pytest.raises(ValueError): 26 validate_safe_name("test<script>") 27 28 29 def test_validate_safe_name_accepts_valid(): 30 """validate_safe_name should accept names with allowed characters and return them.""" 31 result = validate_safe_name("my-project_v2.0") 32 assert result == "my-project_v2.0"