Test get_details.
[zeroinstall.git] / tests / testifacecache.py
blob0557f780ff29d9575b844e163ba54061d9ba7c7d
1 #!/usr/bin/env python2.3
2 import sys, tempfile, os, shutil
3 import unittest
4 import data
5 from logging import getLogger, DEBUG, INFO
6 #getLogger().setLevel(DEBUG)
8 sys.path.insert(0, '..')
9 from zeroinstall.injector import basedir, download, model, gpg
10 from zeroinstall.injector.namespaces import *
11 from zeroinstall.injector.iface_cache import iface_cache
13 class TestIfaceCache(unittest.TestCase):
14 def setUp(self):
15 self.config_home = tempfile.mktemp()
16 self.cache_home = tempfile.mktemp()
17 self.gnupg_home = tempfile.mktemp()
18 os.environ['XDG_CONFIG_HOME'] = self.config_home
19 os.environ['XDG_CACHE_HOME'] = self.cache_home
20 os.environ['GNUPGHOME'] = self.gnupg_home
21 reload(basedir)
23 os.mkdir(self.config_home, 0700)
24 os.mkdir(self.cache_home, 0700)
25 os.mkdir(self.gnupg_home, 0700)
27 iface_cache.__init__()
29 def tearDown(self):
30 shutil.rmtree(self.config_home)
31 shutil.rmtree(self.cache_home)
32 shutil.rmtree(self.gnupg_home)
34 def testList(self):
35 self.assertEquals([], iface_cache.list_all_interfaces())
36 iface_dir = basedir.save_cache_path(config_site, 'interfaces')
37 file(os.path.join(iface_dir, 'http%3a%2f%2ffoo'), 'w').close()
38 self.assertEquals(['http://foo'],
39 iface_cache.list_all_interfaces())
40 # TODO: test overrides
42 def testCheckSigned(self):
43 iface = iface_cache.get_interface('http://foo')
44 src = tempfile.TemporaryFile()
46 # Unsigned
47 src.write("hello")
48 src.flush()
49 src.seek(0)
50 try:
51 iface_cache.check_signed_data(iface, src, None)
52 assert 0
53 except model.SafeException:
54 pass
56 stream = tempfile.TemporaryFile()
57 stream.write(data.thomas_key)
58 stream.seek(0)
59 gpg.import_key(stream)
61 # Signed
62 src.seek(0)
63 src.write(data.foo_signed)
64 src.flush()
65 src.seek(0)
66 iface_cache.check_signed_data(iface, src, None)
67 self.assertEquals(['http://foo'],
68 iface_cache.list_all_interfaces())
70 suite = unittest.makeSuite(TestIfaceCache)
71 if __name__ == '__main__':
72 sys.argv.append('-v')
73 unittest.main()