comparison 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
comparison
equal deleted inserted replaced
3872:34128a809e22 3873:4d1928ce993e
1 # $Id: test_userauditor.py,v 1.1 2007-08-31 15:57:47 jpend Exp $
2
3 import os, unittest, shutil
4 from db_test_base import setupTracker
5
6 class UserAuditorTest(unittest.TestCase):
7 def setUp(self):
8 self.dirname = '_test_user_auditor'
9 self.instance = setupTracker(self.dirname)
10 self.db = self.instance.open('admin')
11
12 try:
13 import pytz
14 self.pytz = True
15 except ImportError:
16 self.pytz = False
17
18 self.db.user.create(username='kyle', address='kyle@example.com',
19 realname='Kyle Broflovski', roles='User')
20
21 def tearDown(self):
22 self.db.close()
23 try:
24 shutil.rmtree(self.dirname)
25 except OSError, error:
26 if error.errno not in (errno.ENOENT, errno.ESRCH): raise
27
28 def testBadTimezones(self):
29 self.assertRaises(ValueError, self.db.user.create, username='eric', timezone='24')
30
31 userid = self.db.user.lookup('kyle')
32
33 self.assertRaises(ValueError, self.db.user.set, userid, timezone='3000')
34 self.assertRaises(ValueError, self.db.user.set, userid, timezone='24')
35 self.assertRaises(ValueError, self.db.user.set, userid, timezone='-24')
36 self.assertRaises(ValueError, self.db.user.set, userid, timezone='-3000')
37
38 if self.pytz:
39 self.assertRaises(ValueError, self.db.user.set, userid, timezone='MiddleOf/Nowhere')
40
41 def testGoodTimezones(self):
42 self.db.user.create(username='test_user01', timezone='12')
43
44 if self.pytz:
45 self.db.user.create(username='test_user02', timezone='MST')
46
47 userid = self.db.user.lookup('kyle')
48
49 # TODO: roundup should accept non-integer offsets since those are valid
50 # this is the offset for Tehran, Iran
51 #self.db.user.set(userid, timezone='3.5')
52
53 self.db.user.set(userid, timezone='-23')
54 self.db.user.set(userid, timezone='23')
55 self.db.user.set(userid, timezone='0')
56
57 if self.pytz:
58 self.db.user.set(userid, timezone='US/Eastern')
59
60 def testBadEmailAddresses(self):
61 userid = self.db.user.lookup('kyle')
62 self.assertRaises(ValueError, self.db.user.set, userid, address='kyle @ example.com')
63
64 def testBadRoles(self):
65 userid = self.db.user.lookup('kyle')
66 self.assertRaises(ValueError, self.db.user.set, userid, roles='BadRole')
67 self.assertRaises(ValueError, self.db.user.set, userid, roles='User,BadRole')
68
69 def testGoodRoles(self):
70 # make sure we handle commas in weird places
71 self.db.user.set(userid, roles='User,')
72 self.db.user.set(userid, roles=',User')
73 # make sure we strip whitespace
74 self.db.user.set(userid, roles=' User ')
75
76 def test_suite():
77 suite = unittest.TestSuite()
78 suite.addTest(unittest.makeSuite(UserAuditorTest))
79 return suite
80
81 if __name__ == '__main__':
82 runner = unittest.TextTestRunner()
83 unittest.main(testRunner=runner)
84
85 # vim: filetype=python sts=4 sw=4 et si

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