mirror of
https://github.com/umbra2728/ctfd-mcp.git
synced 2026-02-07 22:08:12 +03:00
first commit
This commit is contained in:
57
tests/test_config.py
Normal file
57
tests/test_config.py
Normal 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()
|
||||
Reference in New Issue
Block a user