Home

py-spectre @1f10f003c220003d1e2ecf6dc5fa33734e1aa916 - refs - log -
-
https://git.jolheiser.com/py-spectre.git
Python implementation for Spectre/Masterpassword
py-spectre / test / test_spectre.py
- raw
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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