46 lines
1.4 KiB
Python
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
|