"""配置模块测试。"""

import pytest
from pathlib import Path
from butler.config import Settings, load_config


def test_default_settings():
    """测试默认配置值。"""
    settings = Settings()
    assert settings.session_idle_timeout == 3600
    assert settings.session_max_per_user == 1
    assert settings.guardrail_enabled is True


def test_env_override(monkeypatch):
    """测试环境变量覆盖。"""
    monkeypatch.setenv("BUTLER_ALLOWED_USERS", '["123", "456"]')
    settings = Settings()
    assert "123" in settings.allowed_users
    assert "456" in settings.allowed_users


def test_load_config_from_yaml(tmp_path):
    """测试从 YAML 加载配置。"""
    config_file = tmp_path / "config.yaml"
    config_file.write_text("""
butler:
  session:
    idle_timeout: 7200
""")
    config = load_config(config_file)
    assert config["butler"]["session"]["idle_timeout"] == 7200


def test_is_user_allowed():
    """测试用户白名单检查。"""
    settings = Settings(allowed_users=["user123", "user456"])
    assert settings.is_user_allowed("user123") is True
    assert settings.is_user_allowed("user789") is False


def test_empty_whitelist_allows_all():
    """空白名单允许所有用户。"""
    settings = Settings(allowed_users=[])
    assert settings.is_user_allowed("anyone") is True
