56 lines
1.4 KiB
Python
56 lines
1.4 KiB
Python
|
|
"""Pytest configuration and shared fixtures."""
|
||
|
|
|
||
|
|
import os
|
||
|
|
import tempfile
|
||
|
|
from pathlib import Path
|
||
|
|
from unittest.mock import MagicMock, patch
|
||
|
|
|
||
|
|
import pytest
|
||
|
|
|
||
|
|
|
||
|
|
@pytest.fixture
|
||
|
|
def temp_env_root(tmp_path):
|
||
|
|
"""Create a temporary directory to act as /opt/letsbe/env."""
|
||
|
|
env_dir = tmp_path / "opt" / "letsbe" / "env"
|
||
|
|
env_dir.mkdir(parents=True)
|
||
|
|
return env_dir
|
||
|
|
|
||
|
|
|
||
|
|
@pytest.fixture
|
||
|
|
def mock_settings(temp_env_root):
|
||
|
|
"""Mock settings with temporary paths."""
|
||
|
|
settings = MagicMock()
|
||
|
|
settings.allowed_env_root = str(temp_env_root)
|
||
|
|
settings.allowed_file_root = str(temp_env_root.parent / "data")
|
||
|
|
settings.allowed_stacks_root = str(temp_env_root.parent / "stacks")
|
||
|
|
settings.max_file_size = 10 * 1024 * 1024
|
||
|
|
return settings
|
||
|
|
|
||
|
|
|
||
|
|
@pytest.fixture
|
||
|
|
def mock_get_settings(mock_settings):
|
||
|
|
"""Patch get_settings to return mock settings."""
|
||
|
|
with patch("app.executors.env_update_executor.get_settings", return_value=mock_settings):
|
||
|
|
yield mock_settings
|
||
|
|
|
||
|
|
|
||
|
|
@pytest.fixture
|
||
|
|
def sample_env_content():
|
||
|
|
"""Sample ENV file content for testing."""
|
||
|
|
return """# Database configuration
|
||
|
|
DATABASE_URL=postgres://localhost/mydb
|
||
|
|
API_KEY=secret123
|
||
|
|
|
||
|
|
# Feature flags
|
||
|
|
DEBUG=true
|
||
|
|
LOG_LEVEL=info
|
||
|
|
"""
|
||
|
|
|
||
|
|
|
||
|
|
@pytest.fixture
|
||
|
|
def existing_env_file(temp_env_root, sample_env_content):
|
||
|
|
"""Create an existing ENV file for testing updates."""
|
||
|
|
env_file = temp_env_root / "app.env"
|
||
|
|
env_file.write_text(sample_env_content)
|
||
|
|
return env_file
|