annotate test/test_userauditor.py @ 5036:380d8d8b30a3

Replace existing run_tests.py script with a pytest script The existing run_test.py script is quite old, a bit restrictive, and doesn't always behave as documented. The pytest testing tool is mature, well documented, and maintained. The run_tests.py script is generating by installing py.test and running: py.tests --genscript=run_tests.py Note: to generate a script that is compatible with python2.6 the command needs to be run using python2.6
author John Kristensen <john@jerrykan.com>
date Thu, 20 Aug 2015 18:15:23 +1000
parents 6e9b9743de89
children 364c54991861
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3873
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
1 import os, unittest, shutil
5036
380d8d8b30a3 Replace existing run_tests.py script with a pytest script
John Kristensen <john@jerrykan.com>
parents: 4781
diff changeset
2
380d8d8b30a3 Replace existing run_tests.py script with a pytest script
John Kristensen <john@jerrykan.com>
parents: 4781
diff changeset
3 import pytest
380d8d8b30a3 Replace existing run_tests.py script with a pytest script
John Kristensen <john@jerrykan.com>
parents: 4781
diff changeset
4
3873
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
5 from db_test_base import setupTracker
5036
380d8d8b30a3 Replace existing run_tests.py script with a pytest script
John Kristensen <john@jerrykan.com>
parents: 4781
diff changeset
6 from .test_dates import skip_pytz
380d8d8b30a3 Replace existing run_tests.py script with a pytest script
John Kristensen <john@jerrykan.com>
parents: 4781
diff changeset
7
3873
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
8
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
9 class UserAuditorTest(unittest.TestCase):
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
10 def setUp(self):
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
11 self.dirname = '_test_user_auditor'
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
12 self.instance = setupTracker(self.dirname)
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
13 self.db = self.instance.open('admin')
4781
6e9b9743de89 Implementation for:
John Rouillard <rouilj@ieee.org>
parents: 4570
diff changeset
14 self.db.tx_Source = "cli"
3873
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
15
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
16 self.db.user.create(username='kyle', address='kyle@example.com',
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
17 realname='Kyle Broflovski', roles='User')
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
18
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
19 def tearDown(self):
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
20 self.db.close()
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
21 try:
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
22 shutil.rmtree(self.dirname)
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
23 except OSError, error:
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
24 if error.errno not in (errno.ENOENT, errno.ESRCH): raise
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
25
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
26 def testBadTimezones(self):
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
27 self.assertRaises(ValueError, self.db.user.create, username='eric', timezone='24')
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
28
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
29 userid = self.db.user.lookup('kyle')
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
30
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
31 self.assertRaises(ValueError, self.db.user.set, userid, timezone='3000')
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
32 self.assertRaises(ValueError, self.db.user.set, userid, timezone='24')
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
33 self.assertRaises(ValueError, self.db.user.set, userid, timezone='-24')
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
34 self.assertRaises(ValueError, self.db.user.set, userid, timezone='-3000')
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
35
5036
380d8d8b30a3 Replace existing run_tests.py script with a pytest script
John Kristensen <john@jerrykan.com>
parents: 4781
diff changeset
36 @skip_pytz
380d8d8b30a3 Replace existing run_tests.py script with a pytest script
John Kristensen <john@jerrykan.com>
parents: 4781
diff changeset
37 def testBadTimezonesPyTZ(self):
380d8d8b30a3 Replace existing run_tests.py script with a pytest script
John Kristensen <john@jerrykan.com>
parents: 4781
diff changeset
38 userid = self.db.user.lookup('kyle')
380d8d8b30a3 Replace existing run_tests.py script with a pytest script
John Kristensen <john@jerrykan.com>
parents: 4781
diff changeset
39
380d8d8b30a3 Replace existing run_tests.py script with a pytest script
John Kristensen <john@jerrykan.com>
parents: 4781
diff changeset
40 try:
380d8d8b30a3 Replace existing run_tests.py script with a pytest script
John Kristensen <john@jerrykan.com>
parents: 4781
diff changeset
41 from pytz import UnknownTimeZoneError
380d8d8b30a3 Replace existing run_tests.py script with a pytest script
John Kristensen <john@jerrykan.com>
parents: 4781
diff changeset
42 except:
380d8d8b30a3 Replace existing run_tests.py script with a pytest script
John Kristensen <john@jerrykan.com>
parents: 4781
diff changeset
43 UnknownTimeZoneError = ValueError
380d8d8b30a3 Replace existing run_tests.py script with a pytest script
John Kristensen <john@jerrykan.com>
parents: 4781
diff changeset
44
380d8d8b30a3 Replace existing run_tests.py script with a pytest script
John Kristensen <john@jerrykan.com>
parents: 4781
diff changeset
45 self.assertRaises(UnknownTimeZoneError, self.db.user.set, userid,
380d8d8b30a3 Replace existing run_tests.py script with a pytest script
John Kristensen <john@jerrykan.com>
parents: 4781
diff changeset
46 timezone='MiddleOf/Nowhere')
3873
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
47
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
48 def testGoodTimezones(self):
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
49 self.db.user.create(username='test_user01', timezone='12')
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
50
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
51 userid = self.db.user.lookup('kyle')
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
52
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
53 # TODO: roundup should accept non-integer offsets since those are valid
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
54 # this is the offset for Tehran, Iran
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
55 #self.db.user.set(userid, timezone='3.5')
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
56
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
57 self.db.user.set(userid, timezone='-23')
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
58 self.db.user.set(userid, timezone='23')
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
59 self.db.user.set(userid, timezone='0')
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
60
5036
380d8d8b30a3 Replace existing run_tests.py script with a pytest script
John Kristensen <john@jerrykan.com>
parents: 4781
diff changeset
61 @skip_pytz
380d8d8b30a3 Replace existing run_tests.py script with a pytest script
John Kristensen <john@jerrykan.com>
parents: 4781
diff changeset
62 def testGoodTimezonesPyTZ(self):
380d8d8b30a3 Replace existing run_tests.py script with a pytest script
John Kristensen <john@jerrykan.com>
parents: 4781
diff changeset
63 userid = self.db.user.lookup('kyle')
380d8d8b30a3 Replace existing run_tests.py script with a pytest script
John Kristensen <john@jerrykan.com>
parents: 4781
diff changeset
64
380d8d8b30a3 Replace existing run_tests.py script with a pytest script
John Kristensen <john@jerrykan.com>
parents: 4781
diff changeset
65 self.db.user.create(username='test_user02', timezone='MST')
380d8d8b30a3 Replace existing run_tests.py script with a pytest script
John Kristensen <john@jerrykan.com>
parents: 4781
diff changeset
66 self.db.user.set(userid, timezone='US/Eastern')
3873
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
67
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
68 def testBadEmailAddresses(self):
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
69 userid = self.db.user.lookup('kyle')
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
70 self.assertRaises(ValueError, self.db.user.set, userid, address='kyle @ example.com')
3902
21420ba64b0d fuller email validition (request [SF#216291])
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3888
diff changeset
71 self.assertRaises(ValueError, self.db.user.set, userid, address='one@example.com,two@example.com')
21420ba64b0d fuller email validition (request [SF#216291])
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3888
diff changeset
72 self.assertRaises(ValueError, self.db.user.set, userid, address='weird@@example.com')
21420ba64b0d fuller email validition (request [SF#216291])
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3888
diff changeset
73 self.assertRaises(ValueError, self.db.user.set, userid, address='embedded\nnewline@example.com')
21420ba64b0d fuller email validition (request [SF#216291])
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3888
diff changeset
74 # verify that we check alternates as well
21420ba64b0d fuller email validition (request [SF#216291])
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3888
diff changeset
75 self.assertRaises(ValueError, self.db.user.set, userid, alternate_addresses='kyle @ example.com')
21420ba64b0d fuller email validition (request [SF#216291])
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3888
diff changeset
76 # make sure we accept local style addresses
21420ba64b0d fuller email validition (request [SF#216291])
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3888
diff changeset
77 self.db.user.set(userid, address='kyle')
21420ba64b0d fuller email validition (request [SF#216291])
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3888
diff changeset
78 # verify we are case insensitive
21420ba64b0d fuller email validition (request [SF#216291])
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3888
diff changeset
79 self.db.user.set(userid, address='kyle@EXAMPLE.COM')
3873
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
80
3888
4fcf7a52767e fix [SF#611787]: ensure unique email addresses
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3874
diff changeset
81 def testUniqueEmailAddresses(self):
3902
21420ba64b0d fuller email validition (request [SF#216291])
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3888
diff changeset
82 self.db.user.create(username='kenny', address='kenny@example.com', alternate_addresses='sp_ken@example.com')
3888
4fcf7a52767e fix [SF#611787]: ensure unique email addresses
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3874
diff changeset
83 self.assertRaises(ValueError, self.db.user.create, username='test_user01', address='kenny@example.com')
4fcf7a52767e fix [SF#611787]: ensure unique email addresses
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3874
diff changeset
84 uid = self.db.user.create(username='eric', address='eric@example.com')
4fcf7a52767e fix [SF#611787]: ensure unique email addresses
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3874
diff changeset
85 self.assertRaises(ValueError, self.db.user.set, uid, address='kenny@example.com')
4fcf7a52767e fix [SF#611787]: ensure unique email addresses
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3874
diff changeset
86
3902
21420ba64b0d fuller email validition (request [SF#216291])
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3888
diff changeset
87 # make sure we check alternates
21420ba64b0d fuller email validition (request [SF#216291])
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3888
diff changeset
88 self.assertRaises(ValueError, self.db.user.set, uid, address='kenny@example.com')
21420ba64b0d fuller email validition (request [SF#216291])
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3888
diff changeset
89 self.assertRaises(ValueError, self.db.user.set, uid, address='sp_ken@example.com')
21420ba64b0d fuller email validition (request [SF#216291])
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3888
diff changeset
90 self.assertRaises(ValueError, self.db.user.set, uid, alternate_addresses='kenny@example.com')
21420ba64b0d fuller email validition (request [SF#216291])
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3888
diff changeset
91
3873
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
92 def testBadRoles(self):
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
93 userid = self.db.user.lookup('kyle')
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
94 self.assertRaises(ValueError, self.db.user.set, userid, roles='BadRole')
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
95 self.assertRaises(ValueError, self.db.user.set, userid, roles='User,BadRole')
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
96
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
97 def testGoodRoles(self):
3874
4c8d853017f2 strip rolename & fix rolename unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3873
diff changeset
98 userid = self.db.user.lookup('kyle')
3873
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
99 # make sure we handle commas in weird places
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
100 self.db.user.set(userid, roles='User,')
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
101 self.db.user.set(userid, roles=',User')
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
102 # make sure we strip whitespace
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
103 self.db.user.set(userid, roles=' User ')
3874
4c8d853017f2 strip rolename & fix rolename unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3873
diff changeset
104 # check for all-whitespace (treat as no role)
4c8d853017f2 strip rolename & fix rolename unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3873
diff changeset
105 self.db.user.set(userid, roles=' ')
3873
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
106
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
107 def test_suite():
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
108 suite = unittest.TestSuite()
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
109 suite.addTest(unittest.makeSuite(UserAuditorTest))
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
110 return suite
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
111
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
112 if __name__ == '__main__':
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
113 runner = unittest.TextTestRunner()
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
114 unittest.main(testRunner=runner)
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
115
4d1928ce993e more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff changeset
116 # vim: filetype=python sts=4 sw=4 et si

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