/ tests / test_sanitize.py
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"