Files
2026-07-13 13:12:33 +08:00

65 lines
2.4 KiB
Python

from __future__ import annotations
from opensquilla.gateway.config import GatewayConfig
def test_audio_config_defaults_are_disabled_and_elevenlabs_ready() -> None:
cfg = GatewayConfig()
assert cfg.audio.enabled is False
assert cfg.audio.tts.model == "eleven_multilingual_v2"
assert cfg.audio.tts.voice == "21m00Tcm4TlvDq8ikWAM"
assert cfg.audio.tts.output_format == "mp3_44100_128"
assert cfg.audio.providers.elevenlabs.base_url == "https://api.elevenlabs.io"
assert cfg.audio.providers.elevenlabs.api_key_env == "ELEVENLABS_API_KEY"
assert cfg.audio.providers.elevenlabs.voice_conversion_model == (
"eleven_multilingual_sts_v2"
)
assert cfg.audio.providers.elevenlabs.music_model == "music_v1"
assert cfg.audio.providers.elevenlabs.music_output_format == "mp3_44100_128"
def test_audio_config_accepts_nested_elevenlabs_overrides() -> None:
cfg = GatewayConfig.model_validate(
{
"audio": {
"enabled": True,
"tts": {
"voice": "voice_custom",
"model": "eleven_turbo_v2_5",
"output_format": "mp3_22050_32",
},
"providers": {
"elevenlabs": {
"api_key_env": "CUSTOM_ELEVENLABS_KEY",
"voice_conversion_model": "eleven_english_sts_v2",
"music_output_format": "mp3_22050_32",
},
},
}
}
)
assert cfg.audio.enabled is True
assert cfg.audio.tts.voice == "voice_custom"
assert cfg.audio.tts.model == "eleven_turbo_v2_5"
assert cfg.audio.tts.output_format == "mp3_22050_32"
assert cfg.audio.providers.elevenlabs.api_key_env == "CUSTOM_ELEVENLABS_KEY"
assert cfg.audio.providers.elevenlabs.voice_conversion_model == (
"eleven_english_sts_v2"
)
assert cfg.audio.providers.elevenlabs.music_output_format == "mp3_22050_32"
def test_audio_config_to_toml_dict_omits_env_sourced_elevenlabs_api_key(
monkeypatch,
) -> None:
monkeypatch.setenv("OPENSQUILLA_AUDIO_PROVIDERS__ELEVENLABS__API_KEY", "el-env")
cfg = GatewayConfig()
audio = cfg.to_toml_dict()["audio"]
assert cfg.audio.providers.elevenlabs.api_key == "el-env"
assert "api_key" not in audio["providers"]["elevenlabs"]
assert audio["providers"]["elevenlabs"]["api_key_env"] == "ELEVENLABS_API_KEY"