mirror of
https://github.com/fhswf/aki_prj23_transparenzregister.git
synced 2025-08-11 19:18:28 +02:00
feat(config): Read secrets from .env file and environemnt variables (#109)
Config variables used to connect to our two databased can now also be ingested from the local environment variables. Such variables can also be passed in using a `.env` file as described in the README.md
This commit is contained in:
@@ -3,7 +3,10 @@ from unittest.mock import mock_open, patch
|
||||
|
||||
import pytest
|
||||
|
||||
from aki_prj23_transparenzregister.config.config_providers import JsonFileConfigProvider
|
||||
from aki_prj23_transparenzregister.config.config_providers import (
|
||||
EnvironmentConfigProvider,
|
||||
JsonFileConfigProvider,
|
||||
)
|
||||
|
||||
|
||||
def test_json_provider_init_fail() -> None:
|
||||
@@ -72,3 +75,49 @@ def test_json_provider_get_mongo() -> None:
|
||||
assert config.hostname == data["mongo"]["host"]
|
||||
assert config.database == data["mongo"]["database"]
|
||||
assert config.port == data["mongo"]["port"]
|
||||
|
||||
|
||||
def test_env_provider_constructor() -> None:
|
||||
with patch("aki_prj23_transparenzregister.config.config_providers.os") as mock_os:
|
||||
keys = {"PYTHON_TEST": "test", "NOT_PYTHON_TEST": ""}
|
||||
mock_os.environ = keys
|
||||
provider = EnvironmentConfigProvider()
|
||||
assert provider.__data__ == {"TEST": "test"}
|
||||
|
||||
|
||||
def test_env_provider_postgres() -> None:
|
||||
provider = EnvironmentConfigProvider()
|
||||
env_data = {
|
||||
"POSTGRES_USERNAME": "postgres",
|
||||
"POSTGRES_PASSWORD": "postgres",
|
||||
"POSTGRES_HOST": "localhost",
|
||||
"POSTGRES_DATABASE": "postgres",
|
||||
"POSTGRES_PORT": "5432",
|
||||
}
|
||||
provider.__data__ = env_data
|
||||
conn_string = provider.get_postgre_connection_string()
|
||||
|
||||
assert conn_string.database == env_data["POSTGRES_DATABASE"]
|
||||
assert conn_string.host == env_data["POSTGRES_HOST"]
|
||||
assert conn_string.password == env_data["POSTGRES_PASSWORD"]
|
||||
assert conn_string.port == env_data["POSTGRES_PORT"]
|
||||
assert conn_string.username == env_data["POSTGRES_USERNAME"]
|
||||
|
||||
|
||||
def test_env_provider_mongodb() -> None:
|
||||
provider = EnvironmentConfigProvider()
|
||||
env_data = {
|
||||
"MONGO_USERNAME": "username",
|
||||
"MONGO_HOST": "localhost",
|
||||
"MONGO_PASSWORD": "password",
|
||||
"MONGO_PORT": 27017,
|
||||
"MONGO_DATABASE": "transparenzregister",
|
||||
}
|
||||
provider.__data__ = env_data
|
||||
conn_string = provider.get_mongo_connection_string()
|
||||
|
||||
assert conn_string.database == env_data["MONGO_DATABASE"]
|
||||
assert conn_string.hostname == env_data["MONGO_HOST"]
|
||||
assert conn_string.password == env_data["MONGO_PASSWORD"]
|
||||
assert conn_string.port == env_data["MONGO_PORT"]
|
||||
assert conn_string.username == env_data["MONGO_USERNAME"]
|
||||
|
Reference in New Issue
Block a user