72 lines
2.4 KiB
Python
72 lines
2.4 KiB
Python
"""Environment configuration tests."""
|
|
from __future__ import annotations
|
|
|
|
import os
|
|
import unittest
|
|
from unittest.mock import patch
|
|
|
|
from kca.config import Settings
|
|
|
|
|
|
class OcspExpirySettingsTest(unittest.TestCase):
|
|
def test_defaults(self) -> None:
|
|
with patch.dict(os.environ, {}, clear=True):
|
|
settings = Settings.from_env()
|
|
self.assertEqual(30, settings.ocsp_heartbeat_interval_seconds)
|
|
self.assertEqual(60, settings.ocsp_redis_expiry_seconds)
|
|
|
|
def test_expiry_must_exceed_heartbeat(self) -> None:
|
|
with patch.dict(
|
|
os.environ,
|
|
{
|
|
"KCA_OCSP_HEARTBEAT_INTERVAL_SECONDS": "30",
|
|
"KCA_OCSP_REDIS_EXPIRY_SECONDS": "30",
|
|
},
|
|
clear=True,
|
|
):
|
|
with self.assertRaisesRegex(RuntimeError, "must be greater"):
|
|
Settings.from_env()
|
|
|
|
|
|
class OcspRedisSettingsTest(unittest.TestCase):
|
|
def test_defaults_to_disabled(self) -> None:
|
|
with patch.dict(os.environ, {}, clear=True):
|
|
settings = Settings.from_env()
|
|
self.assertIsNone(settings.redis_url)
|
|
self.assertIsNone(settings.ocsp_redis_url)
|
|
self.assertIsNone(settings.ocsp_effective_redis_url)
|
|
|
|
def test_falls_back_to_session_redis(self) -> None:
|
|
with patch.dict(
|
|
os.environ, {"REDIS_URL": "redis://sessions:6379/0"}, clear=True
|
|
):
|
|
settings = Settings.from_env()
|
|
self.assertEqual(
|
|
"redis://sessions:6379/0", settings.ocsp_effective_redis_url
|
|
)
|
|
|
|
def test_uses_dedicated_ocsp_redis(self) -> None:
|
|
with patch.dict(
|
|
os.environ,
|
|
{
|
|
"REDIS_URL": "redis://sessions:6379/0",
|
|
"KCA_OCSP_REDIS_URL": "redis://ocsp:6379/0",
|
|
},
|
|
clear=True,
|
|
):
|
|
settings = Settings.from_env()
|
|
self.assertEqual("redis://sessions:6379/0", settings.redis_url)
|
|
self.assertEqual("redis://ocsp:6379/0", settings.ocsp_effective_redis_url)
|
|
|
|
def test_dedicated_ocsp_redis_without_session_redis(self) -> None:
|
|
with patch.dict(
|
|
os.environ, {"KCA_OCSP_REDIS_URL": "redis://ocsp:6379/0"}, clear=True
|
|
):
|
|
settings = Settings.from_env()
|
|
self.assertIsNone(settings.redis_url)
|
|
self.assertEqual("redis://ocsp:6379/0", settings.ocsp_effective_redis_url)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|