fix(config): return None if env var is empty or non-existent #315
@ -6,6 +6,10 @@
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
|
||||||
|
def test_config() -> None:
|
||||||
|
"""Test config module."""
|
||||||
|
|
||||||
config_vars: dict = {
|
config_vars: dict = {
|
||||||
"APP_VERSION": "dev",
|
"APP_VERSION": "dev",
|
||||||
"BOT_NAME": "TestBot",
|
"BOT_NAME": "TestBot",
|
||||||
@ -20,16 +24,12 @@ config_vars: dict = {
|
|||||||
"APPROVED_ROOMS": "test",
|
"APPROVED_ROOMS": "test",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
for config_var, value in config_vars.items():
|
for config_var, value in config_vars.items():
|
||||||
os.environ[config_var] = value
|
os.environ[config_var] = value
|
||||||
|
|
||||||
# needs to be imported AFTER environment variables are set
|
# needs to be imported AFTER environment variables are set
|
||||||
from app.utils.config import config # pragma: no cover
|
from app.utils.config import config # pragma: no cover
|
||||||
|
|
||||||
|
|
||||||
def test_config() -> None:
|
|
||||||
"""Test config module."""
|
|
||||||
assert config.admin_emails == config_vars["ADMIN_EMAIL"].split(",")
|
assert config.admin_emails == config_vars["ADMIN_EMAIL"].split(",")
|
||||||
assert config.admin_first_name == config_vars["ADMIN_FIRST_NAME"]
|
assert config.admin_first_name == config_vars["ADMIN_FIRST_NAME"]
|
||||||
assert config.approved_domains == config_vars["APPROVED_DOMAINS"].split(",")
|
assert config.approved_domains == config_vars["APPROVED_DOMAINS"].split(",")
|
||||||
@ -47,3 +47,6 @@ def test_config() -> None:
|
|||||||
assert config.sentry_dsn == config_vars["SENTRY_DSN"]
|
assert config.sentry_dsn == config_vars["SENTRY_DSN"]
|
||||||
else:
|
else:
|
||||||
assert config.sentry_dsn == ""
|
assert config.sentry_dsn == ""
|
||||||
|
|
||||||
|
for config_var in config_vars:
|
||||||
|
os.environ.pop(config_var, None)
|
49
tests/test_config_2.py
Normal file
49
tests/test_config_2.py
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
# ruff: noqa: E402 pylint: disable=wrong-import-position
|
||||||
|
|
||||||
|
"""Provides test cases for app/utils/config.py."""
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
|
def test_config_no_admin_vars() -> None:
|
||||||
|
"""Test config module."""
|
||||||
|
|
||||||
|
config_vars: dict = {
|
||||||
|
"APP_VERSION": "dev",
|
||||||
|
"BOT_NAME": "TestBot",
|
||||||
|
"WEBEX_API_KEY": "testing",
|
||||||
|
"ADMIN_FIRST_NAME": "Test",
|
||||||
|
"ADMIN_EMAIL": "test@test.com",
|
||||||
|
"N8N_WEBHOOK_URL": "https://n8n.test.com/webhook/abcdefg",
|
||||||
|
"SENTRY_ENABLED": "false",
|
||||||
|
"SENTRY_DSN": "http://localhost",
|
||||||
|
}
|
||||||
|
|
||||||
|
for config_var, value in config_vars.items():
|
||||||
|
os.environ[config_var] = value
|
||||||
|
|
||||||
|
# needs to be imported AFTER environment variables are set
|
||||||
|
from app.utils.config import config # pragma: no cover
|
||||||
|
|
||||||
|
assert config.approved_domains is None
|
||||||
|
assert config.approved_rooms is None
|
||||||
|
assert config.approved_users is None
|
||||||
|
assert config.admin_emails == config_vars["ADMIN_EMAIL"].split(",")
|
||||||
|
assert config.admin_first_name == config_vars["ADMIN_FIRST_NAME"]
|
||||||
|
assert config.bot_name == config_vars["BOT_NAME"]
|
||||||
|
assert config.n8n_webhook_url == config_vars["N8N_WEBHOOK_URL"]
|
||||||
|
assert config.sentry_enabled == bool(
|
||||||
|
config_vars["SENTRY_ENABLED"].upper() == "TRUE"
|
||||||
|
)
|
||||||
|
assert config.version == config_vars["APP_VERSION"]
|
||||||
|
assert config.webex_token == config_vars["WEBEX_API_KEY"]
|
||||||
|
|
||||||
|
if config.sentry_enabled:
|
||||||
|
assert config.sentry_dsn == config_vars["SENTRY_DSN"]
|
||||||
|
else:
|
||||||
|
assert config.sentry_dsn == ""
|
||||||
|
|
||||||
|
for config_var in config_vars:
|
||||||
|
os.environ.pop(config_var, None)
|
Loading…
Reference in New Issue
Block a user