* add some reader classes to get the configuration * adapt unittests * get config from json or toml file * loop over all config readers to get the configuration * rename config test files * use relative paths for coverage test in vscode * do not throw an error for missing config files * remove obsolete tests * use dotted key notation for pv sub dictonary * log config reading progress * remove create_config_toml.py * remove obsolete tests for the ha_addon * disable mosquitto tests if the server is down * ignore main method for test coverage * increase test coverage * pytest-cov: use relative_files only on github, so coverage will work with vscode locally * remove unneeded imports * add missing test cases * disable branch coverage, cause its not reachable
54 lines
1.5 KiB
Python
54 lines
1.5 KiB
Python
# test_with_pytest.py
|
|
import pytest
|
|
import os
|
|
from mock import patch
|
|
from cnf.config import Config
|
|
from cnf.config_read_toml import ConfigReadToml
|
|
from cnf.config_read_env import ConfigReadEnv
|
|
|
|
def patch_getenv():
|
|
def new_getenv(key: str, defval=None):
|
|
"""Get an environment variable, return None if it doesn't exist.
|
|
The optional second argument can specify an alternate default. key,
|
|
default and the result are str."""
|
|
if key == 'MQTT_PASSWORD':
|
|
return 'passwd'
|
|
elif key == 'MQTT_PORT':
|
|
return 1234
|
|
elif key == 'MQTT_HOST':
|
|
return ""
|
|
return defval
|
|
|
|
with patch.object(os, 'getenv', new_getenv) as conn:
|
|
yield conn
|
|
|
|
def test_extend_key():
|
|
cnf_rd = ConfigReadEnv()
|
|
|
|
conf = {}
|
|
cnf_rd._extend_key(conf, "mqtt.user", "testuser")
|
|
assert conf == {
|
|
'mqtt': {
|
|
'user': 'testuser',
|
|
},
|
|
}
|
|
|
|
conf = {}
|
|
cnf_rd._extend_key(conf, "mqtt", "testuser")
|
|
assert conf == {
|
|
'mqtt': 'testuser',
|
|
}
|
|
|
|
conf = {}
|
|
cnf_rd._extend_key(conf, "", "testuser")
|
|
assert conf == {'': 'testuser'}
|
|
|
|
def test_read_env_config():
|
|
Config.init(ConfigReadToml("app/config/default_config.toml"))
|
|
assert Config.get('mqtt') == {'host': 'mqtt', 'port': 1883, 'user': None, 'passwd': None}
|
|
for _ in patch_getenv():
|
|
|
|
ConfigReadEnv()
|
|
assert Config.get_error() == None
|
|
assert Config.get('mqtt') == {'host': 'mqtt', 'port': 1234, 'user': None, 'passwd': 'passwd'}
|