"""Unit tests for configuration module."""
import pytest
import os
from unittest.mock import patch
from src.birre.config import BirreConfig
class TestBirreConfig:
"""Test cases for BitSight configuration."""
def test_config_with_valid_api_key(self):
"""Test config initialization with valid API key."""
with patch.dict(os.environ, {"BST_API_KEY": "test-api-key-123"}):
config = BirreConfig()
assert config.api_key == "test-api-key-123"
assert config.debug is False # Default
def test_config_missing_api_key(self):
"""Test config initialization fails without API key."""
with patch.dict(os.environ, {}, clear=True):
with pytest.raises(ValueError) as exc_info:
BirreConfig()
assert "Required environment variable BST_API_KEY is not set" in str(
exc_info.value
)
def test_config_debug_true_variations(self):
"""Test debug flag with various true values."""
true_values = ["true", "1", "yes", "on", "TRUE", "True", "YES"]
for value in true_values:
with patch.dict(os.environ, {"BST_API_KEY": "test-key", "DEBUG": value}):
config = BirreConfig()
assert config.debug is True, f"Failed for DEBUG={value}"
def test_config_debug_false_variations(self):
"""Test debug flag with various false values."""
false_values = ["false", "0", "no", "off", "FALSE", "False", "NO"]
for value in false_values:
with patch.dict(os.environ, {"BST_API_KEY": "test-key", "DEBUG": value}):
config = BirreConfig()
assert config.debug is False, f"Failed for DEBUG={value}"
def test_config_debug_default(self):
"""Test debug flag defaults to False when not set."""
with patch.dict(os.environ, {"BST_API_KEY": "test-key"}):
config = BirreConfig()
assert config.debug is False
def test_config_debug_invalid_value(self):
"""Test debug flag defaults to False for invalid values."""
with patch.dict(os.environ, {"BST_API_KEY": "test-key", "DEBUG": "maybe"}):
config = BirreConfig()
assert config.debug is False