mo processing test

This commit is contained in:
Piotr Dec 2025-11-02 23:50:24 +01:00
parent e14180cbe7
commit 9166790de9
Signed by: stawros
GPG key ID: 74B18A3F0F1E99C0
5 changed files with 31 additions and 3 deletions

View file

@ -6,6 +6,10 @@ from injectable import injectable, autowired, Autowired
from app.services import Passwords from app.services import Passwords
class DotTemplate(Template):
# Pozwala na kropki w nazwach placeholderów, np. ${user.name.first}
idpattern = r'[_a-zA-Z][_a-zA-Z0-9.]*'
@injectable @injectable
class Mo: class Mo:
@ -17,7 +21,7 @@ class Mo:
raw = '' raw = ''
with open(mo_file, "r") as mo: with open(mo_file, "r") as mo:
raw = mo.read() raw = mo.read()
tpl = Template(raw) tpl = DotTemplate(raw)
rendered = tpl.substitute(self._passwords.get_values(tpl.get_identifiers())) rendered = tpl.substitute(self._passwords.get_values(tpl.get_identifiers()))
de_mo_ified = str(mo_file).replace(".mo", "") de_mo_ified = str(mo_file).replace(".mo", "")
with open(de_mo_ified, "w") as mo: with open(de_mo_ified, "w") as mo:

View file

@ -36,8 +36,8 @@ class Passwords:
path = key_parts[:-2] if len(key_parts) > 2 else None path = key_parts[:-2] if len(key_parts) > 2 else None
entry_name = key_parts[-2] entry_name = key_parts[-2]
field_name = key_parts[-1] field_name = key_parts[-1]
kp_entry = self._kp_org.find_entries(path=path, first=True, name=entry_name)[0] kp_entry = self._kp_org.find_entries(path=path, first=True, title=entry_name)[0]
output[k] = kp_entry[field_name] output[k] = kp_entry[field_name] # TODO: TypeError: 'Entry' object is not subscriptable
return output return output
def save(self): def save(self):

0
tests/__init__.py Normal file
View file

View file

@ -0,0 +1,3 @@
value: ${sample.password}
nested: ${some.nested.value.password}
custom: ${custom.field}

21
tests/test_mo.py Normal file
View file

@ -0,0 +1,21 @@
import os
from pathlib import Path
from unittest import TestCase
from app.services import Passwords
from app.services.mo import Mo
class TestMo(TestCase):
def test_process(self):
mo = Mo(Passwords())
mo.process(Path('tests/files/test1/test.mo.yaml').absolute())
self.assertTrue(os.path.exists('tests/files/test1/test.mo'))
with open('tests/files/test1/test.mo', 'r') as f:
content = f.read()
self.assertFalse(content.__contains__('${'))
"""
value: some_oass
nested: nested_pass
custom: custom_content
"""