import unittest import doctest import os import Milter.utils from Milter.cache import AddrCache class AddrCacheTestCase(unittest.TestCase): def setUp(self): self.fname = 'test.dat' def tearDown(self): os.remove(self.fname) def testAdd(self): cache = AddrCache(fname=self.fname) cache['foo@bar.com'] = None cache.addperm('baz@bar.com') cache['temp@bar.com'] = 'testing' self.failUnless(cache.has_key('foo@bar.com')) self.failUnless(not cache.has_key('hello@bar.com')) self.failUnless('baz@bar.com' in cache) self.assertEquals(cache['temp@bar.com'],'testing') s = open(self.fname).readlines() self.failUnless(len(s) == 2) self.failUnless(s[0].startswith('foo@bar.com ')) self.assertEquals(s[1].strip(),'baz@bar.com') # check that new result overrides old cache['temp@bar.com'] = None self.failUnless(not cache['temp@bar.com']) def testDomain(self): fp = open(self.fname,'w') print >>fp,'spammer.com' fp.close() cache = AddrCache(fname=self.fname) cache.load(self.fname,30) self.failUnless('spammer.com' in cache) def suite(): s = unittest.makeSuite(AddrCacheTestCase,'test') s.addTest(doctest.DocTestSuite(Milter.utils)) return s if __name__ == '__main__': unittest.TextTestRunner().run(suite())