File: trustroot.py

package info (click to toggle)
python-openid 2.2.5-6
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd, stretch
  • size: 1,724 kB
  • ctags: 2,746
  • sloc: python: 16,741; xml: 234; sh: 31; makefile: 8
file content (85 lines) | stat: -rw-r--r-- 2,411 bytes parent folder | download | duplicates (5)
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import os
import unittest
from openid.server.trustroot import TrustRoot

class _ParseTest(unittest.TestCase):
    def __init__(self, sanity, desc, case):
        unittest.TestCase.__init__(self)
        self.desc = desc + ': ' + repr(case)
        self.case = case
        self.sanity = sanity

    def shortDescription(self):
        return self.desc

    def runTest(self):
        tr = TrustRoot.parse(self.case)
        if self.sanity == 'sane':
            assert tr.isSane(), self.case
        elif self.sanity == 'insane':
            assert not tr.isSane(), self.case
        else:
            assert tr is None, tr

class _MatchTest(unittest.TestCase):
    def __init__(self, match, desc, line):
        unittest.TestCase.__init__(self)
        tr, rt = line.split()
        self.desc = desc + ': ' + repr(tr) + ' ' + repr(rt)
        self.tr = tr
        self.rt = rt
        self.match = match

    def shortDescription(self):
        return self.desc

    def runTest(self):
        tr = TrustRoot.parse(self.tr)
        self.failIf(tr is None, self.tr)

        match = tr.validateURL(self.rt)
        if self.match:
            assert match
        else:
            assert not match

def getTests(t, grps, head, dat):
    tests = []
    top = head.strip()
    gdat = map(str.strip, dat.split('-' * 40 + '\n'))
    assert not gdat[0]
    assert len(gdat) == (len(grps) * 2 + 1), (gdat, grps)
    i = 1
    for x in grps:
        n, desc = gdat[i].split(': ')
        cases = gdat[i + 1].split('\n')
        assert len(cases) == int(n)
        for case in cases:
            tests.append(t(x, top + ' - ' + desc, case))
        i += 2
    return tests

def parseTests(data):
    parts = map(str.strip, data.split('=' * 40 + '\n'))
    assert not parts[0]
    _, ph, pdat, mh, mdat = parts

    tests = []
    tests.extend(getTests(_ParseTest, ['bad', 'insane', 'sane'], ph, pdat))
    tests.extend(getTests(_MatchTest, [1, 0], mh, mdat))
    return tests

def pyUnitTests():
    here = os.path.dirname(os.path.abspath(__file__))
    test_data_file_name = os.path.join(here, 'data', 'trustroot.txt')
    test_data_file = file(test_data_file_name)
    test_data = test_data_file.read()
    test_data_file.close()

    tests = parseTests(test_data)
    return unittest.TestSuite(tests)

if __name__ == '__main__':
    suite = pyUnitTests()
    runner = unittest.TextTestRunner()
    runner.run(suite)