py-spectre/test/test_spectre.py

46 lines
1.4 KiB
Python

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