#!/usr/bin/python

import os,sys,string

unimplementedError = 'Dbmail unimplemented'
configError = 'Dbmail configuration error'

from dbmail.lib.DbmailConfig import DbmailConfig
from dbmail.lib.Dbmail import Dbmail, DbmailSmtp, DbmailUser, DbmailAlias
from dbmail.lib.DbmailAutoreply import DbmailAutoreply
    
if __name__=='__main__':
    import unittest
    class testDbmailConfig(unittest.TestCase):
        def setUp(self):
            self.o=DbmailConfig()
            
        def testParse(self):
            self.failUnless(type(self.o._config)==type({}))
            self.failUnless(self.o._config.has_key('SMTP'))
        
        def testGetConfig(self):
            self.failUnless(self.o.getConfig())
            self.failUnless(self.o.getConfig('SMTP','SENDMAIL'))
            self.failUnless(type(int(self.o.getConfig('IMAP','NCHILDREN')))==type(1))
            
    class testDbmail(unittest.TestCase):
        def setUp(self):
            self.o=Dbmail()

        def testGetConfig(self):
            self.failUnless(self.o.getConfig().has_key('db'))

        def testSetCursor(self):
            self.o.setCursor()

    class testDbmailAlias(unittest.TestCase):
        def setUp(self):
            self.o=DbmailAlias()
            
        def testGet(self):
            self.o.set('testget','testget')
            self.failUnless(self.o.get('testget','testget'))

        def testSet(self):
            self.o.set('foo@bar','foo2@bar')
            self.failUnless(self.o.get('foo@bar'))
        
        def testDelete(self):
            self.o.set('foo2','bar2')
            self.o.delete('foo2','bar2')
            self.failIf(self.o.get('foo2','bar2'))

    class testDbmailUser(unittest.TestCase):
        def setUp(self):
            self.o = DbmailUser('testuser1')
            
        def testGet(self):
            self.failUnless(self.o.getUserdict())

        def testGetUidNumber(self):
            self.failUnless(self.o.getUidNumber())

        def testGetGidNumber(self):
            self.failUnless(self.o.getGidNumber() >= 0)

    class testDbmailAutoreply(unittest.TestCase):
        def setUp(self):
            self.o = DbmailAutoreply('testuser1')

        def testSet(self):
            raw=u"""test '' \0  reply message"""
            self.failIf(self.o.set(raw))
            self.failUnless(self.o.get())
            self.o.delete()
            
        def testGet(self):
            self.o.set("test reply message")
            self.failUnless(self.o.get())
            self.failIf(DbmailAutoreply('testuser2').get())
            self.failIf(DbmailAutoreply('nosuchuser').get())
            
        def tearDown(self):
            try:
                self.o.delete()
            except:
                pass
                
    unittest.main() 



syntax highlighted by Code2HTML, v. 0.9.1