first commit

This commit is contained in:
2026-01-04 14:32:01 +03:00
commit f7ceacd07e
15 changed files with 2619 additions and 0 deletions

57
tests/test_config.py Normal file
View File

@@ -0,0 +1,57 @@
import os
import unittest
from unittest.mock import patch
from config import load_config
def _load_with_env(env: dict[str, str]):
"""Load config with isolated env and no .env side effects."""
with patch("config.load_dotenv", return_value=None):
with patch.dict(os.environ, env, clear=True):
return load_config()
class ConfigPrecedenceTests(unittest.TestCase):
def test_username_password_take_priority(self):
env = {
"CTFD_URL": "https://ctfd.example.com",
"CTFD_USERNAME": "user1",
"CTFD_PASSWORD": "pw1",
"CTFD_TOKEN": "token-should-be-ignored",
"CTFD_SESSION": "session-should-be-ignored",
"CTFD_CSRF_TOKEN": "csrf-should-be-ignored",
}
cfg = _load_with_env(env)
self.assertEqual(cfg.username, "user1")
self.assertEqual(cfg.password, "pw1")
self.assertIsNone(cfg.token)
self.assertIsNone(cfg.session_cookie)
self.assertIsNone(cfg.csrf_token)
def test_token_beats_session_cookie(self):
env = {
"CTFD_URL": "https://ctfd.example.com",
"CTFD_TOKEN": "use-this-token",
"CTFD_SESSION": "drop-this-session",
"CTFD_CSRF_TOKEN": "csrf-should-be-ignored",
}
cfg = _load_with_env(env)
self.assertEqual(cfg.token, "use-this-token")
self.assertIsNone(cfg.session_cookie)
self.assertIsNone(cfg.csrf_token)
def test_session_cookie_when_no_other_creds(self):
env = {
"CTFD_URL": "https://ctfd.example.com",
"CTFD_SESSION": "session-only",
}
cfg = _load_with_env(env)
self.assertEqual(cfg.session_cookie, "session-only")
self.assertIsNone(cfg.token)
self.assertIsNone(cfg.username)
self.assertIsNone(cfg.password)
if __name__ == "__main__":
unittest.main()