from xml.etree.ElementTree import Element, ElementTree from spectre.scope import Scope, SimpleScoper from spectre.spectre import Spectre from spectre.template import Template def test_example(): s = Spectre("Robert Lee Mitchell", "banana colored duckling") pw = s.site("masterpasswordapp.com") assert pw == "Jejr5[RepuSosp" def test_example2(): scoper = SimpleScoper("com.jojodev.jolheiser") s = Spectre("Robert Lee Mitchell", "banana colored duckling", scoper=scoper) pw = s.site( "jojodev.com", scope=Scope.IDENTIFICATION, template_type=Template.MAXIMUM, counter=2, ) assert pw == "Ig^JIcxD!*)TbefJBi6-" def test_spectre(): tree = ElementTree(file="test/spectre_tests.xml") tests = tree.getroot().findall("case") default = tests[0] def get(el: Element, child_name: str) -> str: child = el.find(child_name) if child is not None: return str(child.text) return default.find(child_name).text for test in tests[1:]: s = Spectre(get(test, "userName"), get(test, "userSecret")) pw = s.site( get(test, "siteName"), scope=Scope[get(test, "keyPurpose").upper()], counter=int(get(test, "keyCounter")), template_type=Template[get(test, "resultType").upper()], ) assert pw == test.find("result").text