karl/tests/test_mo_env.py

65 lines
1.7 KiB
Python

from pathlib import Path
import pytest
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 and not line.startswith("#"):
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_dashed(self, test1_content: dict):
assert test1_content['dashed'] == 'dd-value'
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'