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'