#!/usr/bin/env python2.4
from basetest import BaseTest
import sys, tempfile, os, shutil
import unittest
from sets import Set
thomas_fingerprint = "92429807C9853C0744A68B9AAE07828059A53CC1"
sys.path.insert(0, '..')
from zeroinstall.injector import trust, basedir
from zeroinstall import SafeException
class TestTrust(BaseTest):
def testInit(self):
assert not trust.trust_db.is_trusted(thomas_fingerprint)
assert not trust.trust_db.is_trusted("1234")
assert len(trust.trust_db.keys) == 0
def testAddInvalid(self):
try:
trust.trust_db.trust_key("hello")
assert 0
except ValueError:
pass
def testAdd(self):
assert not trust.trust_db.is_trusted("1234")
trust.trust_db.trust_key("1234")
assert trust.trust_db.is_trusted("1234")
assert not trust.trust_db.is_trusted("1236")
trust.trust_db.untrust_key("1234")
assert not trust.trust_db.is_trusted("1234")
def testAddDomain(self):
assert not trust.trust_db.is_trusted("1234", "0install.net")
trust.trust_db.trust_key("1234")
self.assertEquals(Set(['*']), trust.trust_db.get_trust_domains("1234"))
self.assertEquals(Set(['1234']), trust.trust_db.get_keys_for_domain("*"))
self.assertEquals(Set(), trust.trust_db.get_trust_domains("bob"))
assert trust.trust_db.is_trusted("1234")
assert trust.trust_db.is_trusted("1234", "0install.net")
assert trust.trust_db.is_trusted("1234", "rox.sourceforge.net")
assert not trust.trust_db.is_trusted("1236")
trust.trust_db.untrust_key("1234")
assert not trust.trust_db.is_trusted("1234")
assert not trust.trust_db.is_trusted("1234", "rox.sourceforge.net")
trust.trust_db.trust_key("1234", "0install.net")
trust.trust_db.trust_key("1234", "gimp.org")
trust.trust_db.trust_key("1236", "gimp.org")
assert trust.trust_db.is_trusted("1234")
assert trust.trust_db.is_trusted("1234", "0install.net")
assert trust.trust_db.is_trusted("1234", "gimp.org")
assert not trust.trust_db.is_trusted("1234", "rox.sourceforge.net")
self.assertEquals(Set(['1234', '1236']),
trust.trust_db.get_keys_for_domain("gimp.org"))
self.assertEquals(Set(), trust.trust_db.get_trust_domains("99877"))
self.assertEquals(Set(['0install.net', 'gimp.org']), trust.trust_db.get_trust_domains("1234"))
def testParallel(self):
a = trust.TrustDB()
b = trust.TrustDB()
a.trust_key("1")
assert b.is_trusted("1")
b.trust_key("2")
a.untrust_key("1")
assert not a.is_trusted("1")
assert a.is_trusted("2")
def testDomain(self):
self.assertEquals("example.com", trust.domain_from_url('http://example.com/foo'))
self.assertRaises(SafeException, lambda: trust.domain_from_url('/tmp/feed.xml'))
self.assertRaises(SafeException, lambda: trust.domain_from_url('http:///foo'))
self.assertRaises(SafeException, lambda: trust.domain_from_url('http://*/foo'))
self.assertRaises(SafeException, lambda: trust.domain_from_url(''))
suite = unittest.makeSuite(TestTrust)
if __name__ == '__main__':
sys.argv.append('-v')
unittest.main()
syntax highlighted by Code2HTML, v. 0.9.1