diff test/test_userauditor.py @ 3873:4d1928ce993e

more small userauditor changes and a unittest - changes the "roles" loop per alex's suggestion - figured out (I think) why vim wasn't obeying the modeline and corrected it - removed trailing whitespace per alex - synchronized classic/minimal templates (boy I wish CVS allowed symlinks) - added unit tests for userauditor.py: checks timezone, email, and role handling
author Justus Pendleton <jpend@users.sourceforge.net>
date Fri, 31 Aug 2007 15:57:47 +0000
parents
children 4c8d853017f2
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/test_userauditor.py	Fri Aug 31 15:57:47 2007 +0000
@@ -0,0 +1,85 @@
+# $Id: test_userauditor.py,v 1.1 2007-08-31 15:57:47 jpend Exp $
+
+import os, unittest, shutil
+from db_test_base import setupTracker
+
+class UserAuditorTest(unittest.TestCase):
+    def setUp(self):
+        self.dirname = '_test_user_auditor'
+        self.instance = setupTracker(self.dirname)
+        self.db = self.instance.open('admin')
+
+        try:
+            import pytz
+            self.pytz = True
+        except ImportError:
+            self.pytz = False
+
+        self.db.user.create(username='kyle', address='kyle@example.com',
+            realname='Kyle Broflovski', roles='User')
+
+    def tearDown(self):
+        self.db.close()
+        try:
+            shutil.rmtree(self.dirname)
+        except OSError, error:
+            if error.errno not in (errno.ENOENT, errno.ESRCH): raise
+
+    def testBadTimezones(self):
+        self.assertRaises(ValueError, self.db.user.create, username='eric', timezone='24')
+
+        userid = self.db.user.lookup('kyle')
+
+        self.assertRaises(ValueError, self.db.user.set, userid, timezone='3000')
+        self.assertRaises(ValueError, self.db.user.set, userid, timezone='24')
+        self.assertRaises(ValueError, self.db.user.set, userid, timezone='-24')
+        self.assertRaises(ValueError, self.db.user.set, userid, timezone='-3000')
+
+        if self.pytz:
+            self.assertRaises(ValueError, self.db.user.set, userid, timezone='MiddleOf/Nowhere')
+
+    def testGoodTimezones(self):
+        self.db.user.create(username='test_user01', timezone='12')
+
+        if self.pytz:
+            self.db.user.create(username='test_user02', timezone='MST')
+
+        userid = self.db.user.lookup('kyle')
+
+        # TODO: roundup should accept non-integer offsets since those are valid
+        # this is the offset for Tehran, Iran
+        #self.db.user.set(userid, timezone='3.5')
+
+        self.db.user.set(userid, timezone='-23')
+        self.db.user.set(userid, timezone='23')
+        self.db.user.set(userid, timezone='0')
+
+        if self.pytz:
+            self.db.user.set(userid, timezone='US/Eastern')
+
+    def testBadEmailAddresses(self):
+        userid = self.db.user.lookup('kyle')
+        self.assertRaises(ValueError, self.db.user.set, userid, address='kyle @ example.com')
+
+    def testBadRoles(self):
+        userid = self.db.user.lookup('kyle')
+        self.assertRaises(ValueError, self.db.user.set, userid, roles='BadRole')
+        self.assertRaises(ValueError, self.db.user.set, userid, roles='User,BadRole')
+
+    def testGoodRoles(self):
+        # make sure we handle commas in weird places
+        self.db.user.set(userid, roles='User,')
+        self.db.user.set(userid, roles=',User')
+        # make sure we strip whitespace
+        self.db.user.set(userid, roles='    User   ')
+
+def test_suite():
+    suite = unittest.TestSuite()
+    suite.addTest(unittest.makeSuite(UserAuditorTest))
+    return suite
+
+if __name__ == '__main__':
+    runner = unittest.TextTestRunner()
+    unittest.main(testRunner=runner)
+
+# vim: filetype=python sts=4 sw=4 et si

Roundup Issue Tracker: http://roundup-tracker.org/