Mercurial > p > roundup > code
annotate test/test_userauditor.py @ 5041:5251e97b1de0
Configure the database backend in the config.ini
The database backend is currently configured in the 'db/backend_name'
file which is just another file that needs to be configured when setting
up or migrating a tracker instance. By moving this setting into the
config.ini it helps to reduce the number of files that need to be
configured and is more logical place for users to find the setting.
| author | John Kristensen <john@jerrykan.com> |
|---|---|
| date | Mon, 22 Dec 2014 13:30:20 +1100 |
| parents | 364c54991861 |
| children | 37d1e24fb941 |
| 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 | 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 # vim: filetype=python sts=4 sw=4 et si |
