7 import fdroidserver.common
8 import fdroidserver.index
9 import fdroidserver.signindex
12 class IndexTest(unittest.TestCase):
15 fdroidserver.common.config = None
16 config = fdroidserver.common.read_config(fdroidserver.common.options)
17 config['jarsigner'] = fdroidserver.common.find_sdk_tools_cmd('jarsigner')
18 fdroidserver.common.config = config
19 fdroidserver.signindex.config = config
22 def test_verify_jar_signature_succeeds():
23 basedir = os.path.dirname(__file__)
24 source_dir = os.path.join(basedir, 'signindex')
25 for f in ('testy.jar', 'guardianproject.jar'):
26 testfile = os.path.join(source_dir, f)
27 fdroidserver.index.verify_jar_signature(testfile)
29 def test_verify_jar_signature_fails(self):
30 basedir = os.path.dirname(__file__)
31 source_dir = os.path.join(basedir, 'signindex')
32 testfile = os.path.join(source_dir, 'unsigned.jar')
33 with self.assertRaises(fdroidserver.index.VerificationException):
34 fdroidserver.index.verify_jar_signature(testfile)
36 def test_get_public_key_from_jar_succeeds(self):
37 basedir = os.path.dirname(__file__)
38 source_dir = os.path.join(basedir, 'signindex')
39 for f in ('testy.jar', 'guardianproject.jar'):
40 testfile = os.path.join(source_dir, f)
41 jar = zipfile.ZipFile(testfile)
42 _, fingerprint = fdroidserver.index.get_public_key_from_jar(jar)
43 # comparing fingerprints should be sufficient
45 self.assertTrue(fingerprint ==
46 '818E469465F96B704E27BE2FEE4C63AB' +
47 '9F83DDF30E7A34C7371A4728D83B0BC1')
48 if f == 'guardianproject.jar':
49 self.assertTrue(fingerprint ==
50 'B7C2EEFD8DAC7806AF67DFCD92EB1812' +
51 '6BC08312A7F2D6F3862E46013C7A6135')
53 def test_get_public_key_from_jar_fails(self):
54 basedir = os.path.dirname(__file__)
55 source_dir = os.path.join(basedir, 'signindex')
56 testfile = os.path.join(source_dir, 'unsigned.jar')
57 jar = zipfile.ZipFile(testfile)
58 with self.assertRaises(fdroidserver.index.VerificationException):
59 fdroidserver.index.get_public_key_from_jar(jar)
61 def test_download_repo_index_no_fingerprint(self):
62 with self.assertRaises(fdroidserver.index.VerificationException):
63 fdroidserver.index.download_repo_index("http://example.org")
65 def test_download_repo_index_no_jar(self):
66 with self.assertRaises(zipfile.BadZipFile):
67 fdroidserver.index.download_repo_index("http://example.org?fingerprint=nope")
69 # TODO test_download_repo_index with an actual repository
72 if __name__ == "__main__":
73 parser = optparse.OptionParser()
74 parser.add_option("-v", "--verbose", action="store_true", default=False,
75 help="Spew out even more information than normal")
76 (fdroidserver.common.options, args) = parser.parse_args(['--verbose'])
78 newSuite = unittest.TestSuite()
79 newSuite.addTest(unittest.makeSuite(IndexTest))