summaryrefslogtreecommitdiffstats
path: root/main/tests/test_templatetags_pgp.py
blob: 3a55ff1a0dcc9b49e090e083538d5afa77f1f6cf (plain)
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
from django.conf import settings
from django.test import TestCase

from main.templatetags.pgp import pgp_key_link, format_key, pgp_fingerprint


class PGPTemplateTest(TestCase):

    def test_format_key(self):
        # 40 len case
        pgp_key = '423423fD9004FB063E2C81117BFB1108D234DAFZ'
        pgp_key_len = len(pgp_key)

        output = format_key(pgp_key)
        spaces = output.count(' ') + output.count('\xa0')  # nbsp
        self.assertEqual(pgp_key_len + spaces, len(output))

        # 21 - 39 len case
        pgp_key = '3E2C81117BFB1108D234DAFZ'
        pgp_key_len = len(pgp_key) + len('0x')
        self.assertEqual(pgp_key_len, len(format_key(pgp_key)))

        # 8, 20 len case
        pgp_key = '3E2C81117BFB1108DEFF'
        pgp_key_len = len(pgp_key) + len('0x')
        self.assertEqual(pgp_key_len, len(format_key(pgp_key)))

        # 0 - 7 len case
        pgp_key = 'B1108D'
        pgp_key_len = len(pgp_key) + len('0x')
        self.assertEqual(pgp_key_len, len(format_key(pgp_key)))

    def assert_pgp_key_link(self, pgp_key):
        output = pgp_key_link(int(pgp_key, 16))
        self.assertIn(pgp_key[2:], output)
        self.assertIn("https", output)

    def test_pgp_key_link(self):
        self.assertEqual(pgp_key_link(""), "Unknown")

        pgp_key = '423423fD9004FB063E2C81117BFB1108D234DAFZ'
        output = pgp_key_link(pgp_key)
        self.assertIn(pgp_key, output)
        self.assertIn("https", output)

        output = pgp_key_link(pgp_key, "test")
        self.assertIn("test", output)
        self.assertIn("https", output)

        # Numeric key_id <= 8
        self.assert_pgp_key_link('0x0023BDC7')

        # Numeric key_id <= 16
        self.assert_pgp_key_link('0xBDC7FF5E34A12F')

        # Numeric key_id <= 40
        self.assert_pgp_key_link('0xA10E234343EA8BDC7FF5E34A12F')

        pgp_key = '423423fD9004FB063E2C81117BFB1108D234DAFZ'
        server = getattr(settings, 'PGP_SERVER')

        with self.settings(PGP_SERVER=''):
            self.assertNotIn(server, pgp_key_link(pgp_key))

        with self.settings(PGP_SERVER_SECURE=False):
            pgp_key = '423423fD9004FB063E2C81117BFB1108D234DAFZ'
            self.assertNotIn("https", pgp_key_link(pgp_key))

    def test_pgp_fingerprint(self):
        self.assertEqual(pgp_fingerprint(None), "")
        keyid = '423423fD9004FB063E2C81117BFB1108D234DAFZ'
        fingerprint = pgp_fingerprint(keyid)
        self.assertTrue(len(fingerprint) > len(keyid))