diff --git a/cfc/environment.py b/cfc/environment.py index bf2e820..337b0ae 100644 --- a/cfc/environment.py +++ b/cfc/environment.py @@ -13,7 +13,7 @@ from .config import config NAME_PATTERN = r"^[^\-\.][\w\-\.]+$" -ENV_VARS_PATTERN = r"^([\w:.\/]+=[\w:.\/]+)(,[\w:.\/]+=[\w:.\/]+)*$" +ENV_VARS_PATTERN = r"^([\w:.\/\-]+=[\w:.\/\-]+)(,[\w:.\/\-]+=[\w:.\/\-]+)*$" ENVIRONMENT_ENVVAR_NAME = "CFC_ENVIRONMENT" env_app = typer.Typer() @@ -35,7 +35,7 @@ def tag_callback(name: str) -> str: return name_callback(name) -def env_var_callback(env_vars: str) -> dict: +def env_var_callback(env_vars: str) -> str: if not env_vars: return env_vars if not re.fullmatch(ENV_VARS_PATTERN, env_vars): diff --git a/tests/test_environment.py b/tests/test_environment.py new file mode 100644 index 0000000..b74bdc8 --- /dev/null +++ b/tests/test_environment.py @@ -0,0 +1,25 @@ +from unittest import TestCase + +import typer + +from cfc.environment import env_var_callback + + +class TestEnvironment(TestCase): + def test_env_var_callback(self): + # Test valid input + env_var_callback("VAR1=VALUE1,VAR2=VALUE2") + env_var_callback("VAR1=abc-123:as123") + env_var_callback("VAR1=abc-123:as123,VAR2=abc-123:as123") + env_var_callback("VAR1=https://example.com,VAR2=abc-123:as123") + + # test empty input + env_var_callback("") + + # test invalid input + with self.assertRaises(typer.BadParameter): + env_var_callback("VAR1=VALUE1,VAR2=VALUE2,") + with self.assertRaises(typer.BadParameter): + env_var_callback("VAR1=VALUE1,VAR2=VALUE2,VAR3") + with self.assertRaises(typer.BadParameter): + env_var_callback("VAR1=VALUE1,VAR2=VALUE2,VAR3=VALUE3=")