BW3-Core/test/boswatch/test_config.py

106 lines
3.3 KiB
Python
Raw Normal View History

2019-03-03 13:32:31 +01:00
#!/usr/bin/python
# -*- coding: utf-8 -*-
r"""!
2019-03-03 13:32:31 +01:00
____ ____ ______ __ __ __ _____
/ __ )/ __ \/ ___/ | / /___ _/ /______/ /_ |__ /
/ __ / / / /\__ \| | /| / / __ `/ __/ ___/ __ \ /_ <
/ /_/ / /_/ /___/ /| |/ |/ / /_/ / /_/ /__/ / / / ___/ /
/_____/\____//____/ |__/|__/\__,_/\__/\___/_/ /_/ /____/
German BOS Information Script
by Bastian Schroll
@file: test_config.py
@date: 08.01.2017
@author: Bastian Schroll
@description: Unittests for BOSWatch. File have to run as "pytest" unittest
"""
# problem of the pytest fixtures
# pylint: disable=redefined-outer-name
2019-03-03 13:32:31 +01:00
import logging
import pytest
from boswatch.utils import paths
2019-03-03 13:32:31 +01:00
from boswatch.configYaml import ConfigYAML
2019-10-24 23:11:57 +02:00
def setup_function(function):
logging.debug("[TEST] %s.%s", function.__module__, function.__name__)
2019-03-03 13:32:31 +01:00
@pytest.fixture
def getConfig():
r"""!Build a config object"""
2019-03-03 13:32:31 +01:00
return ConfigYAML()
@pytest.fixture
def getFilledConfig():
r"""!Build a config object and fill it with the config data"""
2019-03-03 13:32:31 +01:00
filledConfig = ConfigYAML()
assert filledConfig.loadConfigFile(paths.TEST_PATH + "test_config.yaml") is True
2019-03-03 13:32:31 +01:00
return filledConfig
def test_loadConfigFile(getConfig):
r"""!load a config file"""
assert getConfig.loadConfigFile(paths.TEST_PATH + "test_config.yaml") is True
2019-03-03 13:32:31 +01:00
def test_loadConfigFileFailed(getConfig):
r"""!load a config file with syntax error"""
assert getConfig.loadConfigFile(paths.TEST_PATH + "test_configFailed.yaml") is False
2019-03-03 13:32:31 +01:00
def test_loadConfigFileNotFound(getConfig):
r"""!load a config file where is not available"""
assert getConfig.loadConfigFile(paths.TEST_PATH + "test_configNotFound.yaml") is False
2019-03-03 13:32:31 +01:00
2019-10-21 10:28:46 +02:00
def test_getConfigAsString(getFilledConfig):
r"""!Get the string representation of the config"""
2019-10-21 10:28:46 +02:00
assert type(str(getFilledConfig)) is str
logging.debug(getFilledConfig)
2019-03-03 13:32:31 +01:00
def test_getTypes(getFilledConfig):
r"""!Get and check different data types in config"""
2019-03-03 13:32:31 +01:00
assert type(getFilledConfig.get("types")) is ConfigYAML
assert type(getFilledConfig.get("types", "string")) is str
assert type(getFilledConfig.get("types", "bool")) is bool
assert type(getFilledConfig.get("types", "integer")) is int
assert type(getFilledConfig.get("types", "float")) is float
2019-10-21 10:28:46 +02:00
def test_getDefaultValue(getFilledConfig):
r"""!Get the default value of an not existent entry"""
2019-10-21 10:28:46 +02:00
assert getFilledConfig.get("notExistent", default="defaultValue") == "defaultValue"
2019-03-03 13:32:31 +01:00
def test_getNestedConfig(getFilledConfig):
r"""!Work with nested sub-config elements"""
2019-03-03 13:32:31 +01:00
nestedConfig = getFilledConfig.get("types")
assert type(nestedConfig) is ConfigYAML
assert nestedConfig.get("string") == "Hello World"
def test_configIterationList(getFilledConfig):
r"""!Try to iterate over a list in the config"""
2019-03-03 13:32:31 +01:00
counter = 0
for item in getFilledConfig.get("list"):
assert type(item) is str
counter += 1
2019-10-23 22:11:57 +02:00
assert counter == 3
2019-10-21 10:28:46 +02:00
def test_configIterationListWithNestedList(getFilledConfig):
r"""!Try to iterate over a list in the config where its elements are lists itself"""
2019-10-21 10:28:46 +02:00
listCnt = 0
strCnt = 0
for item in getFilledConfig.get("list1"):
if type(item) is ConfigYAML:
listCnt += 1
if type(item) is str:
strCnt += 1
assert listCnt == 2
assert strCnt == 1