Mercurial > p > roundup > code
annotate test/test_userauditor.py @ 4669:d7ac6c7bc371
Fix basic authentication.
Instatiating the login action would fail if the user is not set.
We now first set the user to anonymous and then try basic authentication
if enabled.
| author | Ralf Schlatterbeck <rsc@runtux.com> |
|---|---|
| date | Tue, 16 Oct 2012 18:27:33 +0200 |
| parents | 6e3e4f24c753 |
| children | 6e9b9743de89 |
| 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 |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
2 from db_test_base import setupTracker |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
3 |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
4 class UserAuditorTest(unittest.TestCase): |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
5 def setUp(self): |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
6 self.dirname = '_test_user_auditor' |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
7 self.instance = setupTracker(self.dirname) |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
8 self.db = self.instance.open('admin') |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
9 |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
10 try: |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
11 import pytz |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
12 self.pytz = True |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
13 except ImportError: |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
14 self.pytz = False |
|
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 |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
36 if self.pytz: |
|
4087
1d0d1921f083
Adjust to interface change in pytz.
Stefan Seefeld <stefan@seefeld.name>
parents:
3902
diff
changeset
|
37 try: |
|
1d0d1921f083
Adjust to interface change in pytz.
Stefan Seefeld <stefan@seefeld.name>
parents:
3902
diff
changeset
|
38 from pytz import UnknownTimeZoneError |
|
1d0d1921f083
Adjust to interface change in pytz.
Stefan Seefeld <stefan@seefeld.name>
parents:
3902
diff
changeset
|
39 except: |
|
1d0d1921f083
Adjust to interface change in pytz.
Stefan Seefeld <stefan@seefeld.name>
parents:
3902
diff
changeset
|
40 UnknownTimeZoneError = ValueError |
|
1d0d1921f083
Adjust to interface change in pytz.
Stefan Seefeld <stefan@seefeld.name>
parents:
3902
diff
changeset
|
41 self.assertRaises(UnknownTimeZoneError, self.db.user.set, userid, timezone='MiddleOf/Nowhere') |
|
3873
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
42 |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
43 def testGoodTimezones(self): |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
44 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
|
45 |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
46 if self.pytz: |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
47 self.db.user.create(username='test_user02', timezone='MST') |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
48 |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
49 userid = self.db.user.lookup('kyle') |
|
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 # 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
|
52 # this is the offset for Tehran, Iran |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
53 #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
|
54 |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
55 self.db.user.set(userid, timezone='-23') |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
56 self.db.user.set(userid, timezone='23') |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
57 self.db.user.set(userid, timezone='0') |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
58 |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
59 if self.pytz: |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
60 self.db.user.set(userid, timezone='US/Eastern') |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
61 |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
62 def testBadEmailAddresses(self): |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
63 userid = self.db.user.lookup('kyle') |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
64 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
|
65 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
|
66 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
|
67 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
|
68 # verify that we check alternates as well |
|
21420ba64b0d
fuller email validition (request [SF#216291])
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3888
diff
changeset
|
69 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
|
70 # make sure we accept local style addresses |
|
21420ba64b0d
fuller email validition (request [SF#216291])
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3888
diff
changeset
|
71 self.db.user.set(userid, address='kyle') |
|
21420ba64b0d
fuller email validition (request [SF#216291])
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3888
diff
changeset
|
72 # verify we are case insensitive |
|
21420ba64b0d
fuller email validition (request [SF#216291])
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3888
diff
changeset
|
73 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
|
74 |
|
3888
4fcf7a52767e
fix [SF#611787]: ensure unique email addresses
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3874
diff
changeset
|
75 def testUniqueEmailAddresses(self): |
|
3902
21420ba64b0d
fuller email validition (request [SF#216291])
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3888
diff
changeset
|
76 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
|
77 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
|
78 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
|
79 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
|
80 |
|
3902
21420ba64b0d
fuller email validition (request [SF#216291])
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3888
diff
changeset
|
81 # make sure we check alternates |
|
21420ba64b0d
fuller email validition (request [SF#216291])
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3888
diff
changeset
|
82 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
|
83 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
|
84 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
|
85 |
|
3873
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
86 def testBadRoles(self): |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
87 userid = self.db.user.lookup('kyle') |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
88 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
|
89 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
|
90 |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
91 def testGoodRoles(self): |
|
3874
4c8d853017f2
strip rolename & fix rolename unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3873
diff
changeset
|
92 userid = self.db.user.lookup('kyle') |
|
3873
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
93 # 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
|
94 self.db.user.set(userid, roles='User,') |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
95 self.db.user.set(userid, roles=',User') |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
96 # make sure we strip whitespace |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
97 self.db.user.set(userid, roles=' User ') |
|
3874
4c8d853017f2
strip rolename & fix rolename unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3873
diff
changeset
|
98 # check for all-whitespace (treat as no role) |
|
4c8d853017f2
strip rolename & fix rolename unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3873
diff
changeset
|
99 self.db.user.set(userid, roles=' ') |
|
3873
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
100 |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
101 def test_suite(): |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
102 suite = unittest.TestSuite() |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
103 suite.addTest(unittest.makeSuite(UserAuditorTest)) |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
104 return suite |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
105 |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
106 if __name__ == '__main__': |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
107 runner = unittest.TextTestRunner() |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
108 unittest.main(testRunner=runner) |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
109 |
|
4d1928ce993e
more small userauditor changes and a unittest
Justus Pendleton <jpend@users.sourceforge.net>
parents:
diff
changeset
|
110 # vim: filetype=python sts=4 sw=4 et si |
