Files
Aislo/tests/test_config_system_storage.py
T
2026-07-05 21:27:23 +09:00

60 lines
2.5 KiB
Python

import os
import tempfile
import unittest
from unittest.mock import patch
from common_util.common_util_storage import (
get_project_stage_path,
resolve_stored_project_path,
)
from config.config_system import get_project_storage_path
class ProjectStoragePathTest(unittest.TestCase):
def test_get_project_storage_path(self) -> None:
with tempfile.TemporaryDirectory() as storage_root:
with patch("config.config_system.STORAGE_BASE_DIR", storage_root):
result = get_project_storage_path("회사", "사용자", "project-id")
self.assertEqual(
result,
os.path.join(storage_root, "회사", "사용자", "project-id"),
)
self.assertTrue(os.path.isdir(result))
self.assertNotIn(f"{os.sep}projects{os.sep}", result)
for invalid_segment in ("", ".", "..", "../escape", "nested/path", "nested\\path"):
with self.subTest(invalid_segment=invalid_segment):
with self.assertRaises(ValueError):
get_project_storage_path(invalid_segment, "사용자", "project-id")
def test_get_project_stage_path(self) -> None:
with tempfile.TemporaryDirectory() as project_root:
result = get_project_stage_path(project_root, "B03_FileInput")
self.assertEqual(result, os.path.join(project_root, "B03_FileInput"))
self.assertTrue(os.path.isdir(result))
for invalid_stage in ("", "B02_ProjRegister", "../escape"):
with self.subTest(invalid_stage=invalid_stage):
with self.assertRaises(ValueError):
get_project_stage_path(project_root, invalid_stage)
def test_resolve_stored_project_path(self) -> None:
with tempfile.TemporaryDirectory() as storage_root:
with patch("common_util.common_util_storage.STORAGE_BASE_DIR", storage_root):
result = resolve_stored_project_path("storage/company/user/project-id")
expected = os.path.join(storage_root, "company", "user", "project-id")
self.assertEqual(result, expected)
self.assertTrue(os.path.isdir(result))
for invalid_path in ("company/user/project", "../outside", "storage"):
with self.subTest(invalid_path=invalid_path):
with self.assertRaises(ValueError):
resolve_stored_project_path(invalid_path)
if __name__ == "__main__":
unittest.main()