d93c518a14
Co-authored-by: Cursor <cursoragent@cursor.com>
62 lines
1.4 KiB
Python
62 lines
1.4 KiB
Python
"""Schema-level path validation (P2)."""
|
|
|
|
import pytest
|
|
from pydantic import ValidationError
|
|
|
|
from server.api.schemas import (
|
|
FileDecompress,
|
|
FileOperation,
|
|
ServerCreate,
|
|
ServerUpdate,
|
|
SyncFiles,
|
|
SyncBrowse,
|
|
)
|
|
|
|
|
|
def test_server_create_target_path_normalizes():
|
|
m = ServerCreate(
|
|
name="s1",
|
|
domain="1.2.3.4",
|
|
target_path="/www/wwwroot/foo/",
|
|
)
|
|
assert m.target_path == "/www/wwwroot/foo"
|
|
|
|
|
|
def test_server_create_rejects_backslash():
|
|
with pytest.raises(ValidationError):
|
|
ServerCreate(name="s1", domain="1.2.3.4", target_path=r"\www\site")
|
|
|
|
|
|
def test_server_update_optional_target_path():
|
|
m = ServerUpdate(target_path=None)
|
|
assert m.target_path is None
|
|
|
|
|
|
def test_sync_browse_root():
|
|
m = SyncBrowse(server_id=1, path="/")
|
|
assert m.path == "/"
|
|
|
|
|
|
def test_sync_files_source_nexus_path():
|
|
m = SyncFiles(
|
|
server_ids=[1],
|
|
source_path="/tmp/nexus_upload_abc",
|
|
target_path="/www/wwwroot/site",
|
|
)
|
|
assert m.source_path == "/tmp/nexus_upload_abc"
|
|
assert m.target_path == "/www/wwwroot/site"
|
|
|
|
|
|
def test_file_operation_paths():
|
|
m = FileOperation(
|
|
server_id=1,
|
|
operation="mkdir",
|
|
path="/www/wwwroot/newdir",
|
|
)
|
|
assert m.path == "/www/wwwroot/newdir"
|
|
|
|
|
|
def test_file_decompress_rejects_dot_dest():
|
|
with pytest.raises(ValidationError):
|
|
FileDecompress(server_id=1, path="/tmp/a.tar.gz", dest=".")
|