diff --git a/tests/files/test1/test.mo.env b/tests/files/test1/test.mo.env new file mode 100644 index 0000000..e3b4cb0 --- /dev/null +++ b/tests/files/test1/test.mo.env @@ -0,0 +1,7 @@ +value=${sample} +nested=${some/nested/value} +mixed=${some/nested/value.username} +custom=${custom.field} + +uname=${sample.username} +invalid=${double.dot.example} diff --git a/tests/test_mo_env.py b/tests/test_mo_env.py new file mode 100644 index 0000000..bbbf0da --- /dev/null +++ b/tests/test_mo_env.py @@ -0,0 +1,64 @@ +from pathlib import Path + +import pytest +import yaml + +from karl.services import Passwords +from karl.services.mo import Mo + + +@pytest.fixture(scope='class') +def target_path(): + # p = Path('tests/files/test1/test.env') + p = Path('files/test1/test.env') + # posprzątaj przed testem, gdyby plik istniał z poprzednich uruchomień + if p.exists(): + p.unlink() + yield p + # sprzątanie po teście + if p.exists(): + p.unlink() + + +@pytest.fixture(scope='class') +def test1_content(target_path: Path): + mo = Mo(Passwords()) + mo.process(Path('files/test1/test.mo.env').absolute()) + # mo.process(Path('tests/files/test1/test.mo.env').absolute()) + + assert target_path.absolute().exists() + + content = target_path.read_text() + assert '${' not in content + + + props = {} + prop_lines = content.split('\n') + for line in prop_lines: + if len(line)> 1: + splitted = line.split('=') + props[splitted[0]] = splitted[1] + # props = {prop[0]:prop[1] for prop in content.split('\n')} + print(props) + yield props + + +class TestEnvParsing: + + def test_simple(self, test1_content: dict): + assert test1_content['value'] == 'some_pass' + + def test_nested(self, test1_content: dict): + assert test1_content['nested'] == 'nested_pass' + + def test_mixed(self, test1_content: dict): + assert test1_content['mixed'] == 'nested_username' + + def test_custom_field(self, test1_content: dict): + assert test1_content['custom'] == 'custom_content' + + def test_username_field(self, test1_content: dict): + assert test1_content['uname'] == 'sample_username' + + def test_invalid_key(self, test1_content: dict): + assert test1_content.get('invalid') == 'None'