Mercurial > p > roundup > code
annotate test/test_cgi.py @ 4531:ddff9669361b
Fix matching of incoming email addresses to the alternate_addresses field...
...of a user -- this would match substrings, e.g. if the user has
discuss-support@example.com as an alternate email and an incoming mail
is addressed to support@example.com this would (wrongly) match.
Note: I *think* I've seen this discussed somewhere but couldn't find it,
neither in the tracker nor in recent discussions on the mailinglists.
So if someone remembers an issue which now should be closed, please
tell me :-)
| author | Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net> |
|---|---|
| date | Wed, 24 Aug 2011 14:43:52 +0000 |
| parents | abd2db0a159a |
| children | 6e3e4f24c753 |
| rev | line source |
|---|---|
|
1377
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1 # |
|
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2 # Copyright (c) 2003 Richard Jones, rjones@ekit-inc.com |
|
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3 # This module is free software, and you may redistribute it and/or modify |
|
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
4 # under the same terms as Python, so long as this copyright message and |
|
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
5 # disclaimer are retained in their original form. |
|
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
6 # |
|
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
7 # This module is distributed in the hope that it will be useful, |
|
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
8 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
|
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
10 # |
|
3982
efcea2fe69be
add new test for multiple message creation
Richard Jones <richard@users.sourceforge.net>
parents:
3980
diff
changeset
|
11 # $Id: test_cgi.py,v 1.36 2008-08-07 06:12:57 richard Exp $ |
|
1377
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
12 |
|
4112
6441ffe588f7
fix bug introduced into CSV export and view (issue 2550529)
Richard Jones <richard@users.sourceforge.net>
parents:
4088
diff
changeset
|
13 import unittest, os, shutil, errno, sys, difflib, cgi, re, StringIO |
|
1377
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
14 |
|
3930
1b84355e346a
add tests for through-the-web permission checking
Richard Jones <richard@users.sourceforge.net>
parents:
3904
diff
changeset
|
15 from roundup.cgi import client, actions, exceptions |
| 2027 | 16 from roundup.cgi.exceptions import FormError |
|
4437
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
17 from roundup.cgi.templating import HTMLItem, HTMLRequest |
| 2027 | 18 from roundup.cgi.form_parser import FormParser |
|
1393
71928bf79302
more CGI fixes and tests
Richard Jones <richard@users.sourceforge.net>
parents:
1385
diff
changeset
|
19 from roundup import init, instance, password, hyperdb, date |
|
1377
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
20 |
|
4112
6441ffe588f7
fix bug introduced into CSV export and view (issue 2550529)
Richard Jones <richard@users.sourceforge.net>
parents:
4088
diff
changeset
|
21 from mocknull import MockNull |
|
6441ffe588f7
fix bug introduced into CSV export and view (issue 2550529)
Richard Jones <richard@users.sourceforge.net>
parents:
4088
diff
changeset
|
22 |
|
2821
0f0299b2a5e8
use tracker setup function from db_test_base;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2696
diff
changeset
|
23 import db_test_base |
|
0f0299b2a5e8
use tracker setup function from db_test_base;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2696
diff
changeset
|
24 |
|
1797
c1eec970d5c0
Optimize mailgw and cgi tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1734
diff
changeset
|
25 NEEDS_INSTANCE = 1 |
|
c1eec970d5c0
Optimize mailgw and cgi tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1734
diff
changeset
|
26 |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
27 class FileUpload: |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
28 def __init__(self, content, filename): |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
29 self.content = content |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
30 self.filename = filename |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
31 |
|
1377
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
32 def makeForm(args): |
|
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
33 form = cgi.FieldStorage() |
|
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
34 for k,v in args.items(): |
|
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
35 if type(v) is type([]): |
|
1380
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
36 [form.list.append(cgi.MiniFieldStorage(k, x)) for x in v] |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
37 elif isinstance(v, FileUpload): |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
38 x = cgi.MiniFieldStorage(k, v.content) |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
39 x.filename = v.filename |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
40 form.list.append(x) |
|
1377
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
41 else: |
|
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
42 form.list.append(cgi.MiniFieldStorage(k, v)) |
|
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
43 return form |
|
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
44 |
|
1684
b87c40d1b8fb
fix hackish message escaping [SF#757128]
Richard Jones <richard@users.sourceforge.net>
parents:
1631
diff
changeset
|
45 cm = client.clean_message |
|
b87c40d1b8fb
fix hackish message escaping [SF#757128]
Richard Jones <richard@users.sourceforge.net>
parents:
1631
diff
changeset
|
46 class MessageTestCase(unittest.TestCase): |
|
b87c40d1b8fb
fix hackish message escaping [SF#757128]
Richard Jones <richard@users.sourceforge.net>
parents:
1631
diff
changeset
|
47 def testCleanMessageOK(self): |
|
b87c40d1b8fb
fix hackish message escaping [SF#757128]
Richard Jones <richard@users.sourceforge.net>
parents:
1631
diff
changeset
|
48 self.assertEqual(cm('<br>x<br />'), '<br>x<br />') |
|
b87c40d1b8fb
fix hackish message escaping [SF#757128]
Richard Jones <richard@users.sourceforge.net>
parents:
1631
diff
changeset
|
49 self.assertEqual(cm('<i>x</i>'), '<i>x</i>') |
|
b87c40d1b8fb
fix hackish message escaping [SF#757128]
Richard Jones <richard@users.sourceforge.net>
parents:
1631
diff
changeset
|
50 self.assertEqual(cm('<b>x</b>'), '<b>x</b>') |
|
b87c40d1b8fb
fix hackish message escaping [SF#757128]
Richard Jones <richard@users.sourceforge.net>
parents:
1631
diff
changeset
|
51 self.assertEqual(cm('<a href="y">x</a>'), |
|
b87c40d1b8fb
fix hackish message escaping [SF#757128]
Richard Jones <richard@users.sourceforge.net>
parents:
1631
diff
changeset
|
52 '<a href="y">x</a>') |
|
b87c40d1b8fb
fix hackish message escaping [SF#757128]
Richard Jones <richard@users.sourceforge.net>
parents:
1631
diff
changeset
|
53 self.assertEqual(cm('<BR>x<BR />'), '<BR>x<BR />') |
|
b87c40d1b8fb
fix hackish message escaping [SF#757128]
Richard Jones <richard@users.sourceforge.net>
parents:
1631
diff
changeset
|
54 self.assertEqual(cm('<I>x</I>'), '<I>x</I>') |
|
b87c40d1b8fb
fix hackish message escaping [SF#757128]
Richard Jones <richard@users.sourceforge.net>
parents:
1631
diff
changeset
|
55 self.assertEqual(cm('<B>x</B>'), '<B>x</B>') |
|
b87c40d1b8fb
fix hackish message escaping [SF#757128]
Richard Jones <richard@users.sourceforge.net>
parents:
1631
diff
changeset
|
56 self.assertEqual(cm('<A HREF="y">x</A>'), |
|
b87c40d1b8fb
fix hackish message escaping [SF#757128]
Richard Jones <richard@users.sourceforge.net>
parents:
1631
diff
changeset
|
57 '<A HREF="y">x</A>') |
|
b87c40d1b8fb
fix hackish message escaping [SF#757128]
Richard Jones <richard@users.sourceforge.net>
parents:
1631
diff
changeset
|
58 |
|
b87c40d1b8fb
fix hackish message escaping [SF#757128]
Richard Jones <richard@users.sourceforge.net>
parents:
1631
diff
changeset
|
59 def testCleanMessageBAD(self): |
|
b87c40d1b8fb
fix hackish message escaping [SF#757128]
Richard Jones <richard@users.sourceforge.net>
parents:
1631
diff
changeset
|
60 self.assertEqual(cm('<script>x</script>'), |
|
b87c40d1b8fb
fix hackish message escaping [SF#757128]
Richard Jones <richard@users.sourceforge.net>
parents:
1631
diff
changeset
|
61 '<script>x</script>') |
|
b87c40d1b8fb
fix hackish message escaping [SF#757128]
Richard Jones <richard@users.sourceforge.net>
parents:
1631
diff
changeset
|
62 self.assertEqual(cm('<iframe>x</iframe>'), |
|
b87c40d1b8fb
fix hackish message escaping [SF#757128]
Richard Jones <richard@users.sourceforge.net>
parents:
1631
diff
changeset
|
63 '<iframe>x</iframe>') |
|
b87c40d1b8fb
fix hackish message escaping [SF#757128]
Richard Jones <richard@users.sourceforge.net>
parents:
1631
diff
changeset
|
64 |
|
1377
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
65 class FormTestCase(unittest.TestCase): |
|
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
66 def setUp(self): |
|
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
67 self.dirname = '_test_cgi_form' |
|
2821
0f0299b2a5e8
use tracker setup function from db_test_base;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2696
diff
changeset
|
68 # set up and open a tracker |
|
0f0299b2a5e8
use tracker setup function from db_test_base;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2696
diff
changeset
|
69 self.instance = db_test_base.setupTracker(self.dirname) |
|
2696
a5c5a1106e3b
init.initialize() was removed in [[CVS:1.30]] (27-jul-2004)
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2027
diff
changeset
|
70 |
|
a5c5a1106e3b
init.initialize() was removed in [[CVS:1.30]] (27-jul-2004)
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2027
diff
changeset
|
71 # open the database |
|
1377
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
72 self.db = self.instance.open('admin') |
|
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
73 self.db.user.create(username='Chef', address='chef@bork.bork.bork', |
|
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
74 realname='Bork, Chef', roles='User') |
|
3902
21420ba64b0d
fuller email validition (request [SF#216291])
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3859
diff
changeset
|
75 self.db.user.create(username='mary', address='mary@test.test', |
|
1377
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
76 roles='User', realname='Contrary, Mary') |
|
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
77 |
|
2929
7a8a02646d4e
backend is an attribute of tracker instances
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2821
diff
changeset
|
78 test = self.instance.backend.Class(self.db, "test", |
|
1525
c006e8166f81
added tests for Number cgi editing
Richard Jones <richard@users.sourceforge.net>
parents:
1483
diff
changeset
|
79 string=hyperdb.String(), number=hyperdb.Number(), |
|
1393
71928bf79302
more CGI fixes and tests
Richard Jones <richard@users.sourceforge.net>
parents:
1385
diff
changeset
|
80 boolean=hyperdb.Boolean(), link=hyperdb.Link('test'), |
|
71928bf79302
more CGI fixes and tests
Richard Jones <richard@users.sourceforge.net>
parents:
1385
diff
changeset
|
81 multilink=hyperdb.Multilink('test'), date=hyperdb.Date(), |
|
3982
efcea2fe69be
add new test for multiple message creation
Richard Jones <richard@users.sourceforge.net>
parents:
3980
diff
changeset
|
82 messages=hyperdb.Multilink('msg'), interval=hyperdb.Interval()) |
|
1393
71928bf79302
more CGI fixes and tests
Richard Jones <richard@users.sourceforge.net>
parents:
1385
diff
changeset
|
83 |
|
1438
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
84 # compile the labels re |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
85 classes = '|'.join(self.db.classes.keys()) |
|
2004
1782fe36e7b8
Move out parts of client.py to new modules:
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1873
diff
changeset
|
86 self.FV_SPECIAL = re.compile(FormParser.FV_LABELS%classes, |
|
1438
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
87 re.VERBOSE) |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
88 |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
89 def parseForm(self, form, classname='test', nodeid=None): |
|
4088
34434785f308
Plug a number of security holes:
Richard Jones <richard@users.sourceforge.net>
parents:
3982
diff
changeset
|
90 cl = client.Client(self.instance, None, {'PATH_INFO':'/', |
|
34434785f308
Plug a number of security holes:
Richard Jones <richard@users.sourceforge.net>
parents:
3982
diff
changeset
|
91 'REQUEST_METHOD':'POST'}, makeForm(form)) |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
92 cl.classname = classname |
|
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
93 cl.nodeid = nodeid |
|
3969
905faf52a51f
fix mysql breakage in 1.4.2
Richard Jones <richard@users.sourceforge.net>
parents:
3930
diff
changeset
|
94 cl.language = ('en',) |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
95 cl.db = self.db |
| 2027 | 96 return cl.parsePropsFromForm(create=1) |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
97 |
|
1377
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
98 def tearDown(self): |
|
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
99 self.db.close() |
|
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
100 try: |
|
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
101 shutil.rmtree(self.dirname) |
|
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
102 except OSError, error: |
|
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
103 if error.errno not in (errno.ENOENT, errno.ESRCH): raise |
|
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
104 |
|
1380
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
105 # |
|
1438
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
106 # form label extraction |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
107 # |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
108 def tl(self, s, c, i, a, p): |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
109 m = self.FV_SPECIAL.match(s) |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
110 self.assertNotEqual(m, None) |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
111 d = m.groupdict() |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
112 self.assertEqual(d['classname'], c) |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
113 self.assertEqual(d['id'], i) |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
114 for action in 'required add remove link note file'.split(): |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
115 if a == action: |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
116 self.assertNotEqual(d[action], None) |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
117 else: |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
118 self.assertEqual(d[action], None) |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
119 self.assertEqual(d['propname'], p) |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
120 |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
121 def testLabelMatching(self): |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
122 self.tl('<propname>', None, None, None, '<propname>') |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
123 self.tl(':required', None, None, 'required', None) |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
124 self.tl(':confirm:<propname>', None, None, 'confirm', '<propname>') |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
125 self.tl(':add:<propname>', None, None, 'add', '<propname>') |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
126 self.tl(':remove:<propname>', None, None, 'remove', '<propname>') |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
127 self.tl(':link:<propname>', None, None, 'link', '<propname>') |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
128 self.tl('test1:<prop>', 'test', '1', None, '<prop>') |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
129 self.tl('test1:required', 'test', '1', 'required', None) |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
130 self.tl('test1:add:<prop>', 'test', '1', 'add', '<prop>') |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
131 self.tl('test1:remove:<prop>', 'test', '1', 'remove', '<prop>') |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
132 self.tl('test1:link:<prop>', 'test', '1', 'link', '<prop>') |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
133 self.tl('test1:confirm:<prop>', 'test', '1', 'confirm', '<prop>') |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
134 self.tl('test-1:<prop>', 'test', '-1', None, '<prop>') |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
135 self.tl('test-1:required', 'test', '-1', 'required', None) |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
136 self.tl('test-1:add:<prop>', 'test', '-1', 'add', '<prop>') |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
137 self.tl('test-1:remove:<prop>', 'test', '-1', 'remove', '<prop>') |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
138 self.tl('test-1:link:<prop>', 'test', '-1', 'link', '<prop>') |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
139 self.tl('test-1:confirm:<prop>', 'test', '-1', 'confirm', '<prop>') |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
140 self.tl(':note', None, None, 'note', None) |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
141 self.tl(':file', None, None, 'file', None) |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
142 |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
143 # |
|
1380
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
144 # Empty form |
|
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
145 # |
|
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
146 def testNothing(self): |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
147 self.assertEqual(self.parseForm({}), ({('test', None): {}}, [])) |
|
1377
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
148 |
|
1380
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
149 def testNothingWithRequired(self): |
|
1819
e24cebaaa7e8
Use FormError.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1797
diff
changeset
|
150 self.assertRaises(FormError, self.parseForm, {':required': 'string'}) |
|
e24cebaaa7e8
Use FormError.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1797
diff
changeset
|
151 self.assertRaises(FormError, self.parseForm, |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
152 {':required': 'title,status', 'status':'1'}, 'issue') |
|
1819
e24cebaaa7e8
Use FormError.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1797
diff
changeset
|
153 self.assertRaises(FormError, self.parseForm, |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
154 {':required': ['title','status'], 'status':'1'}, 'issue') |
|
1819
e24cebaaa7e8
Use FormError.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1797
diff
changeset
|
155 self.assertRaises(FormError, self.parseForm, |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
156 {':required': 'status', 'status':''}, 'issue') |
|
1819
e24cebaaa7e8
Use FormError.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1797
diff
changeset
|
157 self.assertRaises(FormError, self.parseForm, |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
158 {':required': 'nosy', 'nosy':''}, 'issue') |
|
3656
0119e04886d8
@required in forms may now specify properties of linked items
Richard Jones <richard@users.sourceforge.net>
parents:
3491
diff
changeset
|
159 self.assertRaises(FormError, self.parseForm, |
|
0119e04886d8
@required in forms may now specify properties of linked items
Richard Jones <richard@users.sourceforge.net>
parents:
3491
diff
changeset
|
160 {':required': 'msg-1@content', 'msg-1@content':''}, 'issue') |
|
0119e04886d8
@required in forms may now specify properties of linked items
Richard Jones <richard@users.sourceforge.net>
parents:
3491
diff
changeset
|
161 self.assertRaises(FormError, self.parseForm, |
|
0119e04886d8
@required in forms may now specify properties of linked items
Richard Jones <richard@users.sourceforge.net>
parents:
3491
diff
changeset
|
162 {':required': 'msg-1@content'}, 'issue') |
|
1393
71928bf79302
more CGI fixes and tests
Richard Jones <richard@users.sourceforge.net>
parents:
1385
diff
changeset
|
163 |
|
71928bf79302
more CGI fixes and tests
Richard Jones <richard@users.sourceforge.net>
parents:
1385
diff
changeset
|
164 # |
|
71928bf79302
more CGI fixes and tests
Richard Jones <richard@users.sourceforge.net>
parents:
1385
diff
changeset
|
165 # Nonexistant edit |
|
71928bf79302
more CGI fixes and tests
Richard Jones <richard@users.sourceforge.net>
parents:
1385
diff
changeset
|
166 # |
|
71928bf79302
more CGI fixes and tests
Richard Jones <richard@users.sourceforge.net>
parents:
1385
diff
changeset
|
167 def testEditNonexistant(self): |
|
1819
e24cebaaa7e8
Use FormError.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1797
diff
changeset
|
168 self.assertRaises(FormError, self.parseForm, {'boolean': ''}, |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
169 'test', '1') |
|
1377
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
170 |
|
1380
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
171 # |
|
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
172 # String |
|
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
173 # |
|
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
174 def testEmptyString(self): |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
175 self.assertEqual(self.parseForm({'string': ''}), |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
176 ({('test', None): {}}, [])) |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
177 self.assertEqual(self.parseForm({'string': ' '}), |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
178 ({('test', None): {}}, [])) |
|
1819
e24cebaaa7e8
Use FormError.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1797
diff
changeset
|
179 self.assertRaises(FormError, self.parseForm, {'string': ['', '']}) |
|
1380
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
180 |
|
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
181 def testSetString(self): |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
182 self.assertEqual(self.parseForm({'string': 'foo'}), |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
183 ({('test', None): {'string': 'foo'}}, [])) |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
184 self.assertEqual(self.parseForm({'string': 'a\r\nb\r\n'}), |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
185 ({('test', None): {'string': 'a\nb'}}, [])) |
|
1393
71928bf79302
more CGI fixes and tests
Richard Jones <richard@users.sourceforge.net>
parents:
1385
diff
changeset
|
186 nodeid = self.db.issue.create(title='foo') |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
187 self.assertEqual(self.parseForm({'title': 'foo'}, 'issue', nodeid), |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
188 ({('issue', nodeid): {}}, [])) |
|
1380
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
189 |
|
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
190 def testEmptyStringSet(self): |
|
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
191 nodeid = self.db.issue.create(title='foo') |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
192 self.assertEqual(self.parseForm({'title': ''}, 'issue', nodeid), |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
193 ({('issue', nodeid): {'title': None}}, [])) |
|
1380
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
194 nodeid = self.db.issue.create(title='foo') |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
195 self.assertEqual(self.parseForm({'title': ' '}, 'issue', nodeid), |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
196 ({('issue', nodeid): {'title': None}}, [])) |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
197 |
|
3859
9e48fda4a41c
Added two new tests for Links and Multilinks in HTMLItems:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3777
diff
changeset
|
198 def testStringLinkId(self): |
|
9e48fda4a41c
Added two new tests for Links and Multilinks in HTMLItems:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3777
diff
changeset
|
199 self.db.status.set('1', name='2') |
|
9e48fda4a41c
Added two new tests for Links and Multilinks in HTMLItems:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3777
diff
changeset
|
200 self.db.status.set('2', name='1') |
|
9e48fda4a41c
Added two new tests for Links and Multilinks in HTMLItems:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3777
diff
changeset
|
201 issue = self.db.issue.create(title='i1-status1', status='1') |
|
9e48fda4a41c
Added two new tests for Links and Multilinks in HTMLItems:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3777
diff
changeset
|
202 self.assertEqual(self.db.issue.get(issue,'status'),'1') |
|
9e48fda4a41c
Added two new tests for Links and Multilinks in HTMLItems:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3777
diff
changeset
|
203 self.assertEqual(self.db.status.lookup('1'),'2') |
|
9e48fda4a41c
Added two new tests for Links and Multilinks in HTMLItems:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3777
diff
changeset
|
204 self.assertEqual(self.db.status.lookup('2'),'1') |
|
9e48fda4a41c
Added two new tests for Links and Multilinks in HTMLItems:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3777
diff
changeset
|
205 form = cgi.FieldStorage() |
|
9e48fda4a41c
Added two new tests for Links and Multilinks in HTMLItems:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3777
diff
changeset
|
206 cl = client.Client(self.instance, None, {'PATH_INFO':'/'}, form) |
|
9e48fda4a41c
Added two new tests for Links and Multilinks in HTMLItems:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3777
diff
changeset
|
207 cl.classname = 'issue' |
|
9e48fda4a41c
Added two new tests for Links and Multilinks in HTMLItems:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3777
diff
changeset
|
208 cl.nodeid = issue |
|
9e48fda4a41c
Added two new tests for Links and Multilinks in HTMLItems:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3777
diff
changeset
|
209 cl.db = self.db |
|
3969
905faf52a51f
fix mysql breakage in 1.4.2
Richard Jones <richard@users.sourceforge.net>
parents:
3930
diff
changeset
|
210 cl.language = ('en',) |
|
3859
9e48fda4a41c
Added two new tests for Links and Multilinks in HTMLItems:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3777
diff
changeset
|
211 item = HTMLItem(cl, 'issue', issue) |
|
9e48fda4a41c
Added two new tests for Links and Multilinks in HTMLItems:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3777
diff
changeset
|
212 self.assertEqual(item.status.id, '1') |
|
9e48fda4a41c
Added two new tests for Links and Multilinks in HTMLItems:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3777
diff
changeset
|
213 self.assertEqual(item.status.name, '2') |
|
9e48fda4a41c
Added two new tests for Links and Multilinks in HTMLItems:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3777
diff
changeset
|
214 |
|
9e48fda4a41c
Added two new tests for Links and Multilinks in HTMLItems:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3777
diff
changeset
|
215 def testStringMultilinkId(self): |
|
9e48fda4a41c
Added two new tests for Links and Multilinks in HTMLItems:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3777
diff
changeset
|
216 id = self.db.keyword.create(name='2') |
|
9e48fda4a41c
Added two new tests for Links and Multilinks in HTMLItems:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3777
diff
changeset
|
217 self.assertEqual(id,'1') |
|
9e48fda4a41c
Added two new tests for Links and Multilinks in HTMLItems:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3777
diff
changeset
|
218 id = self.db.keyword.create(name='1') |
|
9e48fda4a41c
Added two new tests for Links and Multilinks in HTMLItems:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3777
diff
changeset
|
219 self.assertEqual(id,'2') |
|
3904
91008ec8f9a0
retire "topic" usage
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3902
diff
changeset
|
220 issue = self.db.issue.create(title='i1-status1', keyword=['1']) |
|
91008ec8f9a0
retire "topic" usage
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3902
diff
changeset
|
221 self.assertEqual(self.db.issue.get(issue,'keyword'),['1']) |
|
3859
9e48fda4a41c
Added two new tests for Links and Multilinks in HTMLItems:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3777
diff
changeset
|
222 self.assertEqual(self.db.keyword.lookup('1'),'2') |
|
9e48fda4a41c
Added two new tests for Links and Multilinks in HTMLItems:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3777
diff
changeset
|
223 self.assertEqual(self.db.keyword.lookup('2'),'1') |
|
9e48fda4a41c
Added two new tests for Links and Multilinks in HTMLItems:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3777
diff
changeset
|
224 form = cgi.FieldStorage() |
|
9e48fda4a41c
Added two new tests for Links and Multilinks in HTMLItems:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3777
diff
changeset
|
225 cl = client.Client(self.instance, None, {'PATH_INFO':'/'}, form) |
|
9e48fda4a41c
Added two new tests for Links and Multilinks in HTMLItems:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3777
diff
changeset
|
226 cl.classname = 'issue' |
|
9e48fda4a41c
Added two new tests for Links and Multilinks in HTMLItems:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3777
diff
changeset
|
227 cl.nodeid = issue |
|
9e48fda4a41c
Added two new tests for Links and Multilinks in HTMLItems:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3777
diff
changeset
|
228 cl.db = self.db |
|
3969
905faf52a51f
fix mysql breakage in 1.4.2
Richard Jones <richard@users.sourceforge.net>
parents:
3930
diff
changeset
|
229 cl.language = ('en',) |
|
3859
9e48fda4a41c
Added two new tests for Links and Multilinks in HTMLItems:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3777
diff
changeset
|
230 cl.userid = '1' |
|
9e48fda4a41c
Added two new tests for Links and Multilinks in HTMLItems:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3777
diff
changeset
|
231 item = HTMLItem(cl, 'issue', issue) |
|
3904
91008ec8f9a0
retire "topic" usage
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3902
diff
changeset
|
232 for keyword in item.keyword: |
|
91008ec8f9a0
retire "topic" usage
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3902
diff
changeset
|
233 self.assertEqual(keyword.id, '1') |
|
91008ec8f9a0
retire "topic" usage
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3902
diff
changeset
|
234 self.assertEqual(keyword.name, '2') |
|
3859
9e48fda4a41c
Added two new tests for Links and Multilinks in HTMLItems:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3777
diff
changeset
|
235 |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
236 def testFileUpload(self): |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
237 file = FileUpload('foo', 'foo.txt') |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
238 self.assertEqual(self.parseForm({'content': file}, 'file'), |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
239 ({('file', None): {'content': 'foo', 'name': 'foo.txt', |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
240 'type': 'text/plain'}}, [])) |
|
1380
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
241 |
|
1734
5a04969176dc
Regression test case to ensure FileClass attribute bug doesn't show up again.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1684
diff
changeset
|
242 def testEditFileClassAttributes(self): |
|
5a04969176dc
Regression test case to ensure FileClass attribute bug doesn't show up again.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1684
diff
changeset
|
243 self.assertEqual(self.parseForm({'name': 'foo.txt', |
|
5a04969176dc
Regression test case to ensure FileClass attribute bug doesn't show up again.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1684
diff
changeset
|
244 'type': 'application/octet-stream'}, |
|
5a04969176dc
Regression test case to ensure FileClass attribute bug doesn't show up again.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1684
diff
changeset
|
245 'file'), |
|
5a04969176dc
Regression test case to ensure FileClass attribute bug doesn't show up again.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1684
diff
changeset
|
246 ({('file', None): {'name': 'foo.txt', |
|
5a04969176dc
Regression test case to ensure FileClass attribute bug doesn't show up again.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1684
diff
changeset
|
247 'type': 'application/octet-stream'}},[])) |
|
5a04969176dc
Regression test case to ensure FileClass attribute bug doesn't show up again.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1684
diff
changeset
|
248 |
|
1380
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
249 # |
|
1385
2bd4822f96a6
- more fixes to CGI form handling
Richard Jones <richard@users.sourceforge.net>
parents:
1382
diff
changeset
|
250 # Link |
|
2bd4822f96a6
- more fixes to CGI form handling
Richard Jones <richard@users.sourceforge.net>
parents:
1382
diff
changeset
|
251 # |
|
2bd4822f96a6
- more fixes to CGI form handling
Richard Jones <richard@users.sourceforge.net>
parents:
1382
diff
changeset
|
252 def testEmptyLink(self): |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
253 self.assertEqual(self.parseForm({'link': ''}), |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
254 ({('test', None): {}}, [])) |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
255 self.assertEqual(self.parseForm({'link': ' '}), |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
256 ({('test', None): {}}, [])) |
|
1819
e24cebaaa7e8
Use FormError.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1797
diff
changeset
|
257 self.assertRaises(FormError, self.parseForm, {'link': ['', '']}) |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
258 self.assertEqual(self.parseForm({'link': '-1'}), |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
259 ({('test', None): {}}, [])) |
|
1385
2bd4822f96a6
- more fixes to CGI form handling
Richard Jones <richard@users.sourceforge.net>
parents:
1382
diff
changeset
|
260 |
|
2bd4822f96a6
- more fixes to CGI form handling
Richard Jones <richard@users.sourceforge.net>
parents:
1382
diff
changeset
|
261 def testSetLink(self): |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
262 self.assertEqual(self.parseForm({'status': 'unread'}, 'issue'), |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
263 ({('issue', None): {'status': '1'}}, [])) |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
264 self.assertEqual(self.parseForm({'status': '1'}, 'issue'), |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
265 ({('issue', None): {'status': '1'}}, [])) |
|
1393
71928bf79302
more CGI fixes and tests
Richard Jones <richard@users.sourceforge.net>
parents:
1385
diff
changeset
|
266 nodeid = self.db.issue.create(status='unread') |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
267 self.assertEqual(self.parseForm({'status': 'unread'}, 'issue', nodeid), |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
268 ({('issue', nodeid): {}}, [])) |
|
1385
2bd4822f96a6
- more fixes to CGI form handling
Richard Jones <richard@users.sourceforge.net>
parents:
1382
diff
changeset
|
269 |
|
2bd4822f96a6
- more fixes to CGI form handling
Richard Jones <richard@users.sourceforge.net>
parents:
1382
diff
changeset
|
270 def testUnsetLink(self): |
|
2bd4822f96a6
- more fixes to CGI form handling
Richard Jones <richard@users.sourceforge.net>
parents:
1382
diff
changeset
|
271 nodeid = self.db.issue.create(status='unread') |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
272 self.assertEqual(self.parseForm({'status': '-1'}, 'issue', nodeid), |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
273 ({('issue', nodeid): {'status': None}}, [])) |
|
1385
2bd4822f96a6
- more fixes to CGI form handling
Richard Jones <richard@users.sourceforge.net>
parents:
1382
diff
changeset
|
274 |
|
2bd4822f96a6
- more fixes to CGI form handling
Richard Jones <richard@users.sourceforge.net>
parents:
1382
diff
changeset
|
275 def testInvalidLinkValue(self): |
|
2bd4822f96a6
- more fixes to CGI form handling
Richard Jones <richard@users.sourceforge.net>
parents:
1382
diff
changeset
|
276 # XXX This is not the current behaviour - should we enforce this? |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
277 # self.assertRaises(IndexError, self.parseForm, |
|
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
278 # {'status': '4'})) |
|
1819
e24cebaaa7e8
Use FormError.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1797
diff
changeset
|
279 self.assertRaises(FormError, self.parseForm, {'link': 'frozzle'}) |
|
e24cebaaa7e8
Use FormError.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1797
diff
changeset
|
280 self.assertRaises(FormError, self.parseForm, {'status': 'frozzle'}, |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
281 'issue') |
|
1385
2bd4822f96a6
- more fixes to CGI form handling
Richard Jones <richard@users.sourceforge.net>
parents:
1382
diff
changeset
|
282 |
|
2bd4822f96a6
- more fixes to CGI form handling
Richard Jones <richard@users.sourceforge.net>
parents:
1382
diff
changeset
|
283 # |
|
1380
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
284 # Multilink |
|
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
285 # |
|
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
286 def testEmptyMultilink(self): |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
287 self.assertEqual(self.parseForm({'nosy': ''}), |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
288 ({('test', None): {}}, [])) |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
289 self.assertEqual(self.parseForm({'nosy': ' '}), |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
290 ({('test', None): {}}, [])) |
|
1380
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
291 |
|
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
292 def testSetMultilink(self): |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
293 self.assertEqual(self.parseForm({'nosy': '1'}, 'issue'), |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
294 ({('issue', None): {'nosy': ['1']}}, [])) |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
295 self.assertEqual(self.parseForm({'nosy': 'admin'}, 'issue'), |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
296 ({('issue', None): {'nosy': ['1']}}, [])) |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
297 self.assertEqual(self.parseForm({'nosy': ['1','2']}, 'issue'), |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
298 ({('issue', None): {'nosy': ['1','2']}}, [])) |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
299 self.assertEqual(self.parseForm({'nosy': '1,2'}, 'issue'), |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
300 ({('issue', None): {'nosy': ['1','2']}}, [])) |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
301 self.assertEqual(self.parseForm({'nosy': 'admin,2'}, 'issue'), |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
302 ({('issue', None): {'nosy': ['1','2']}}, [])) |
|
1380
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
303 |
|
1631
8a908bbad1ef
A couple of form value handling changes:
Richard Jones <richard@users.sourceforge.net>
parents:
1592
diff
changeset
|
304 def testMixedMultilink(self): |
|
8a908bbad1ef
A couple of form value handling changes:
Richard Jones <richard@users.sourceforge.net>
parents:
1592
diff
changeset
|
305 form = cgi.FieldStorage() |
|
8a908bbad1ef
A couple of form value handling changes:
Richard Jones <richard@users.sourceforge.net>
parents:
1592
diff
changeset
|
306 form.list.append(cgi.MiniFieldStorage('nosy', '1,2')) |
|
8a908bbad1ef
A couple of form value handling changes:
Richard Jones <richard@users.sourceforge.net>
parents:
1592
diff
changeset
|
307 form.list.append(cgi.MiniFieldStorage('nosy', '3')) |
|
8a908bbad1ef
A couple of form value handling changes:
Richard Jones <richard@users.sourceforge.net>
parents:
1592
diff
changeset
|
308 cl = client.Client(self.instance, None, {'PATH_INFO':'/'}, form) |
|
8a908bbad1ef
A couple of form value handling changes:
Richard Jones <richard@users.sourceforge.net>
parents:
1592
diff
changeset
|
309 cl.classname = 'issue' |
|
8a908bbad1ef
A couple of form value handling changes:
Richard Jones <richard@users.sourceforge.net>
parents:
1592
diff
changeset
|
310 cl.nodeid = None |
|
8a908bbad1ef
A couple of form value handling changes:
Richard Jones <richard@users.sourceforge.net>
parents:
1592
diff
changeset
|
311 cl.db = self.db |
|
3969
905faf52a51f
fix mysql breakage in 1.4.2
Richard Jones <richard@users.sourceforge.net>
parents:
3930
diff
changeset
|
312 cl.language = ('en',) |
|
2696
a5c5a1106e3b
init.initialize() was removed in [[CVS:1.30]] (27-jul-2004)
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2027
diff
changeset
|
313 self.assertEqual(cl.parsePropsFromForm(create=1), |
|
1631
8a908bbad1ef
A couple of form value handling changes:
Richard Jones <richard@users.sourceforge.net>
parents:
1592
diff
changeset
|
314 ({('issue', None): {'nosy': ['1','2', '3']}}, [])) |
|
8a908bbad1ef
A couple of form value handling changes:
Richard Jones <richard@users.sourceforge.net>
parents:
1592
diff
changeset
|
315 |
|
1380
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
316 def testEmptyMultilinkSet(self): |
|
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
317 nodeid = self.db.issue.create(nosy=['1','2']) |
|
2696
a5c5a1106e3b
init.initialize() was removed in [[CVS:1.30]] (27-jul-2004)
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2027
diff
changeset
|
318 self.assertEqual(self.parseForm({'nosy': ''}, 'issue', nodeid), |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
319 ({('issue', nodeid): {'nosy': []}}, [])) |
|
1380
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
320 nodeid = self.db.issue.create(nosy=['1','2']) |
|
2696
a5c5a1106e3b
init.initialize() was removed in [[CVS:1.30]] (27-jul-2004)
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2027
diff
changeset
|
321 self.assertEqual(self.parseForm({'nosy': ' '}, 'issue', nodeid), |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
322 ({('issue', nodeid): {'nosy': []}}, [])) |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
323 self.assertEqual(self.parseForm({'nosy': '1,2'}, 'issue', nodeid), |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
324 ({('issue', nodeid): {}}, [])) |
|
1380
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
325 |
|
1381
944bd3c6d365
more cgi form parsing tests, and a fix for an outstanding couple of bugs
Richard Jones <richard@users.sourceforge.net>
parents:
1380
diff
changeset
|
326 def testInvalidMultilinkValue(self): |
|
944bd3c6d365
more cgi form parsing tests, and a fix for an outstanding couple of bugs
Richard Jones <richard@users.sourceforge.net>
parents:
1380
diff
changeset
|
327 # XXX This is not the current behaviour - should we enforce this? |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
328 # self.assertRaises(IndexError, self.parseForm, |
|
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
329 # {'nosy': '4'})) |
|
1819
e24cebaaa7e8
Use FormError.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1797
diff
changeset
|
330 self.assertRaises(FormError, self.parseForm, {'nosy': 'frozzle'}, |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
331 'issue') |
|
1819
e24cebaaa7e8
Use FormError.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1797
diff
changeset
|
332 self.assertRaises(FormError, self.parseForm, {'nosy': '1,frozzle'}, |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
333 'issue') |
|
1819
e24cebaaa7e8
Use FormError.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1797
diff
changeset
|
334 self.assertRaises(FormError, self.parseForm, {'multilink': 'frozzle'}) |
|
1381
944bd3c6d365
more cgi form parsing tests, and a fix for an outstanding couple of bugs
Richard Jones <richard@users.sourceforge.net>
parents:
1380
diff
changeset
|
335 |
|
944bd3c6d365
more cgi form parsing tests, and a fix for an outstanding couple of bugs
Richard Jones <richard@users.sourceforge.net>
parents:
1380
diff
changeset
|
336 def testMultilinkAdd(self): |
|
944bd3c6d365
more cgi form parsing tests, and a fix for an outstanding couple of bugs
Richard Jones <richard@users.sourceforge.net>
parents:
1380
diff
changeset
|
337 nodeid = self.db.issue.create(nosy=['1']) |
|
944bd3c6d365
more cgi form parsing tests, and a fix for an outstanding couple of bugs
Richard Jones <richard@users.sourceforge.net>
parents:
1380
diff
changeset
|
338 # do nothing |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
339 self.assertEqual(self.parseForm({':add:nosy': ''}, 'issue', nodeid), |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
340 ({('issue', nodeid): {}}, [])) |
|
1381
944bd3c6d365
more cgi form parsing tests, and a fix for an outstanding couple of bugs
Richard Jones <richard@users.sourceforge.net>
parents:
1380
diff
changeset
|
341 |
|
944bd3c6d365
more cgi form parsing tests, and a fix for an outstanding couple of bugs
Richard Jones <richard@users.sourceforge.net>
parents:
1380
diff
changeset
|
342 # do something ;) |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
343 self.assertEqual(self.parseForm({':add:nosy': '2'}, 'issue', nodeid), |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
344 ({('issue', nodeid): {'nosy': ['1','2']}}, [])) |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
345 self.assertEqual(self.parseForm({':add:nosy': '2,mary'}, 'issue', |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
346 nodeid), ({('issue', nodeid): {'nosy': ['1','2','4']}}, [])) |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
347 self.assertEqual(self.parseForm({':add:nosy': ['2','3']}, 'issue', |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
348 nodeid), ({('issue', nodeid): {'nosy': ['1','2','3']}}, [])) |
|
1381
944bd3c6d365
more cgi form parsing tests, and a fix for an outstanding couple of bugs
Richard Jones <richard@users.sourceforge.net>
parents:
1380
diff
changeset
|
349 |
|
1382
87143c3d7156
really fix [SF#663235], and test it
Richard Jones <richard@users.sourceforge.net>
parents:
1381
diff
changeset
|
350 def testMultilinkAddNew(self): |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
351 self.assertEqual(self.parseForm({':add:nosy': ['2','3']}, 'issue'), |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
352 ({('issue', None): {'nosy': ['2','3']}}, [])) |
|
1382
87143c3d7156
really fix [SF#663235], and test it
Richard Jones <richard@users.sourceforge.net>
parents:
1381
diff
changeset
|
353 |
|
1381
944bd3c6d365
more cgi form parsing tests, and a fix for an outstanding couple of bugs
Richard Jones <richard@users.sourceforge.net>
parents:
1380
diff
changeset
|
354 def testMultilinkRemove(self): |
|
944bd3c6d365
more cgi form parsing tests, and a fix for an outstanding couple of bugs
Richard Jones <richard@users.sourceforge.net>
parents:
1380
diff
changeset
|
355 nodeid = self.db.issue.create(nosy=['1','2']) |
|
944bd3c6d365
more cgi form parsing tests, and a fix for an outstanding couple of bugs
Richard Jones <richard@users.sourceforge.net>
parents:
1380
diff
changeset
|
356 # do nothing |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
357 self.assertEqual(self.parseForm({':remove:nosy': ''}, 'issue', nodeid), |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
358 ({('issue', nodeid): {}}, [])) |
|
1381
944bd3c6d365
more cgi form parsing tests, and a fix for an outstanding couple of bugs
Richard Jones <richard@users.sourceforge.net>
parents:
1380
diff
changeset
|
359 |
|
944bd3c6d365
more cgi form parsing tests, and a fix for an outstanding couple of bugs
Richard Jones <richard@users.sourceforge.net>
parents:
1380
diff
changeset
|
360 # do something ;) |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
361 self.assertEqual(self.parseForm({':remove:nosy': '1'}, 'issue', |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
362 nodeid), ({('issue', nodeid): {'nosy': ['2']}}, [])) |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
363 self.assertEqual(self.parseForm({':remove:nosy': 'admin,2'}, |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
364 'issue', nodeid), ({('issue', nodeid): {'nosy': []}}, [])) |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
365 self.assertEqual(self.parseForm({':remove:nosy': ['1','2']}, |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
366 'issue', nodeid), ({('issue', nodeid): {'nosy': []}}, [])) |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
367 |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
368 # add and remove |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
369 self.assertEqual(self.parseForm({':add:nosy': ['3'], |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
370 ':remove:nosy': ['1','2']}, |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
371 'issue', nodeid), ({('issue', nodeid): {'nosy': ['3']}}, [])) |
|
1381
944bd3c6d365
more cgi form parsing tests, and a fix for an outstanding couple of bugs
Richard Jones <richard@users.sourceforge.net>
parents:
1380
diff
changeset
|
372 |
|
944bd3c6d365
more cgi form parsing tests, and a fix for an outstanding couple of bugs
Richard Jones <richard@users.sourceforge.net>
parents:
1380
diff
changeset
|
373 # remove one that doesn't exist? |
|
1819
e24cebaaa7e8
Use FormError.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1797
diff
changeset
|
374 self.assertRaises(FormError, self.parseForm, {':remove:nosy': '4'}, |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
375 'issue', nodeid) |
|
1381
944bd3c6d365
more cgi form parsing tests, and a fix for an outstanding couple of bugs
Richard Jones <richard@users.sourceforge.net>
parents:
1380
diff
changeset
|
376 |
|
1385
2bd4822f96a6
- more fixes to CGI form handling
Richard Jones <richard@users.sourceforge.net>
parents:
1382
diff
changeset
|
377 def testMultilinkRetired(self): |
|
2bd4822f96a6
- more fixes to CGI form handling
Richard Jones <richard@users.sourceforge.net>
parents:
1382
diff
changeset
|
378 self.db.user.retire('2') |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
379 self.assertEqual(self.parseForm({'nosy': ['2','3']}, 'issue'), |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
380 ({('issue', None): {'nosy': ['2','3']}}, [])) |
|
1385
2bd4822f96a6
- more fixes to CGI form handling
Richard Jones <richard@users.sourceforge.net>
parents:
1382
diff
changeset
|
381 nodeid = self.db.issue.create(nosy=['1','2']) |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
382 self.assertEqual(self.parseForm({':remove:nosy': '2'}, 'issue', |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
383 nodeid), ({('issue', nodeid): {'nosy': ['1']}}, [])) |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
384 self.assertEqual(self.parseForm({':add:nosy': '3'}, 'issue', nodeid), |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
385 ({('issue', nodeid): {'nosy': ['1','2','3']}}, [])) |
|
1385
2bd4822f96a6
- more fixes to CGI form handling
Richard Jones <richard@users.sourceforge.net>
parents:
1382
diff
changeset
|
386 |
|
2bd4822f96a6
- more fixes to CGI form handling
Richard Jones <richard@users.sourceforge.net>
parents:
1382
diff
changeset
|
387 def testAddRemoveNonexistant(self): |
|
1819
e24cebaaa7e8
Use FormError.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1797
diff
changeset
|
388 self.assertRaises(FormError, self.parseForm, {':remove:foo': '2'}, |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
389 'issue') |
|
1819
e24cebaaa7e8
Use FormError.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1797
diff
changeset
|
390 self.assertRaises(FormError, self.parseForm, {':add:foo': '2'}, |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
391 'issue') |
|
1385
2bd4822f96a6
- more fixes to CGI form handling
Richard Jones <richard@users.sourceforge.net>
parents:
1382
diff
changeset
|
392 |
|
1380
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
393 # |
|
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
394 # Password |
|
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
395 # |
|
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
396 def testEmptyPassword(self): |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
397 self.assertEqual(self.parseForm({'password': ''}, 'user'), |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
398 ({('user', None): {}}, [])) |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
399 self.assertEqual(self.parseForm({'password': ''}, 'user'), |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
400 ({('user', None): {}}, [])) |
|
1819
e24cebaaa7e8
Use FormError.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1797
diff
changeset
|
401 self.assertRaises(FormError, self.parseForm, {'password': ['', '']}, |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
402 'user') |
|
1819
e24cebaaa7e8
Use FormError.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1797
diff
changeset
|
403 self.assertRaises(FormError, self.parseForm, {'password': 'foo', |
|
1438
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
404 ':confirm:password': ['', '']}, 'user') |
|
1380
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
405 |
|
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
406 def testSetPassword(self): |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
407 self.assertEqual(self.parseForm({'password': 'foo', |
|
1438
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
408 ':confirm:password': 'foo'}, 'user'), |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
409 ({('user', None): {'password': 'foo'}}, [])) |
|
1380
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
410 |
|
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
411 def testSetPasswordConfirmBad(self): |
|
1819
e24cebaaa7e8
Use FormError.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1797
diff
changeset
|
412 self.assertRaises(FormError, self.parseForm, {'password': 'foo'}, |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
413 'user') |
|
1819
e24cebaaa7e8
Use FormError.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1797
diff
changeset
|
414 self.assertRaises(FormError, self.parseForm, {'password': 'foo', |
|
1438
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
415 ':confirm:password': 'bar'}, 'user') |
|
1380
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
416 |
|
1393
71928bf79302
more CGI fixes and tests
Richard Jones <richard@users.sourceforge.net>
parents:
1385
diff
changeset
|
417 def testEmptyPasswordNotSet(self): |
|
71928bf79302
more CGI fixes and tests
Richard Jones <richard@users.sourceforge.net>
parents:
1385
diff
changeset
|
418 nodeid = self.db.user.create(username='1', |
|
71928bf79302
more CGI fixes and tests
Richard Jones <richard@users.sourceforge.net>
parents:
1385
diff
changeset
|
419 password=password.Password('foo')) |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
420 self.assertEqual(self.parseForm({'password': ''}, 'user', nodeid), |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
421 ({('user', nodeid): {}}, [])) |
|
1393
71928bf79302
more CGI fixes and tests
Richard Jones <richard@users.sourceforge.net>
parents:
1385
diff
changeset
|
422 nodeid = self.db.user.create(username='2', |
|
71928bf79302
more CGI fixes and tests
Richard Jones <richard@users.sourceforge.net>
parents:
1385
diff
changeset
|
423 password=password.Password('foo')) |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
424 self.assertEqual(self.parseForm({'password': '', |
|
1438
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
425 ':confirm:password': ''}, 'user', nodeid), |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
426 ({('user', nodeid): {}}, [])) |
|
1380
4ce6820c18fa
fixes to CGI form handling (NEEDS BACKPORTING TO 0.5)
Richard Jones <richard@users.sourceforge.net>
parents:
1377
diff
changeset
|
427 |
|
4484
52e13bf0bb40
Add new config-option 'migrate_passwords' in section 'web'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4446
diff
changeset
|
428 def testPasswordMigration(self): |
|
52e13bf0bb40
Add new config-option 'migrate_passwords' in section 'web'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4446
diff
changeset
|
429 chef = self.db.user.lookup('Chef') |
|
52e13bf0bb40
Add new config-option 'migrate_passwords' in section 'web'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4446
diff
changeset
|
430 form = dict(__login_name='Chef', __login_password='foo') |
|
52e13bf0bb40
Add new config-option 'migrate_passwords' in section 'web'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4446
diff
changeset
|
431 cl = self._make_client(form) |
|
52e13bf0bb40
Add new config-option 'migrate_passwords' in section 'web'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4446
diff
changeset
|
432 # assume that the "best" algorithm is the first one and doesn't |
|
52e13bf0bb40
Add new config-option 'migrate_passwords' in section 'web'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4446
diff
changeset
|
433 # need migration, all others should be migrated. |
|
4485
95aace124a8e
use idea from Eli Collins to use a list of deprecated password encoding schemes
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4484
diff
changeset
|
434 for scheme in password.Password.deprecated_schemes: |
|
4484
52e13bf0bb40
Add new config-option 'migrate_passwords' in section 'web'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4446
diff
changeset
|
435 pw1 = password.Password('foo', scheme=scheme) |
|
52e13bf0bb40
Add new config-option 'migrate_passwords' in section 'web'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4446
diff
changeset
|
436 self.assertEqual(pw1.needs_migration(), True) |
|
52e13bf0bb40
Add new config-option 'migrate_passwords' in section 'web'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4446
diff
changeset
|
437 self.db.user.set(chef, password=pw1) |
|
52e13bf0bb40
Add new config-option 'migrate_passwords' in section 'web'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4446
diff
changeset
|
438 self.db.commit() |
|
52e13bf0bb40
Add new config-option 'migrate_passwords' in section 'web'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4446
diff
changeset
|
439 actions.LoginAction(cl).handle() |
|
52e13bf0bb40
Add new config-option 'migrate_passwords' in section 'web'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4446
diff
changeset
|
440 pw = self.db.user.get(chef, 'password') |
|
52e13bf0bb40
Add new config-option 'migrate_passwords' in section 'web'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4446
diff
changeset
|
441 self.assertEqual(pw, 'foo') |
|
52e13bf0bb40
Add new config-option 'migrate_passwords' in section 'web'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4446
diff
changeset
|
442 self.assertEqual(pw.needs_migration(), False) |
|
52e13bf0bb40
Add new config-option 'migrate_passwords' in section 'web'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4446
diff
changeset
|
443 pw1 = pw |
|
52e13bf0bb40
Add new config-option 'migrate_passwords' in section 'web'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4446
diff
changeset
|
444 self.assertEqual(pw1.needs_migration(), False) |
|
52e13bf0bb40
Add new config-option 'migrate_passwords' in section 'web'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4446
diff
changeset
|
445 scheme = password.Password.known_schemes[0] |
|
52e13bf0bb40
Add new config-option 'migrate_passwords' in section 'web'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4446
diff
changeset
|
446 self.assertEqual(scheme, pw1.scheme) |
|
52e13bf0bb40
Add new config-option 'migrate_passwords' in section 'web'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4446
diff
changeset
|
447 actions.LoginAction(cl).handle() |
|
52e13bf0bb40
Add new config-option 'migrate_passwords' in section 'web'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4446
diff
changeset
|
448 pw = self.db.user.get(chef, 'password') |
|
52e13bf0bb40
Add new config-option 'migrate_passwords' in section 'web'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4446
diff
changeset
|
449 self.assertEqual(pw, 'foo') |
|
52e13bf0bb40
Add new config-option 'migrate_passwords' in section 'web'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4446
diff
changeset
|
450 self.assertEqual(pw, pw1) |
|
52e13bf0bb40
Add new config-option 'migrate_passwords' in section 'web'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4446
diff
changeset
|
451 |
|
4486
693c75d56ebe
Add new config-option 'password_pbkdf2_default_rounds'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4485
diff
changeset
|
452 def testPasswordConfigOption(self): |
|
693c75d56ebe
Add new config-option 'password_pbkdf2_default_rounds'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4485
diff
changeset
|
453 chef = self.db.user.lookup('Chef') |
|
693c75d56ebe
Add new config-option 'password_pbkdf2_default_rounds'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4485
diff
changeset
|
454 form = dict(__login_name='Chef', __login_password='foo') |
|
693c75d56ebe
Add new config-option 'password_pbkdf2_default_rounds'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4485
diff
changeset
|
455 cl = self._make_client(form) |
|
693c75d56ebe
Add new config-option 'password_pbkdf2_default_rounds'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4485
diff
changeset
|
456 self.db.config.PASSWORD_PBKDF2_DEFAULT_ROUNDS = 1000 |
|
693c75d56ebe
Add new config-option 'password_pbkdf2_default_rounds'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4485
diff
changeset
|
457 pw1 = password.Password('foo', scheme='crypt') |
|
693c75d56ebe
Add new config-option 'password_pbkdf2_default_rounds'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4485
diff
changeset
|
458 self.assertEqual(pw1.needs_migration(), True) |
|
693c75d56ebe
Add new config-option 'password_pbkdf2_default_rounds'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4485
diff
changeset
|
459 self.db.user.set(chef, password=pw1) |
|
693c75d56ebe
Add new config-option 'password_pbkdf2_default_rounds'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4485
diff
changeset
|
460 self.db.commit() |
|
693c75d56ebe
Add new config-option 'password_pbkdf2_default_rounds'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4485
diff
changeset
|
461 actions.LoginAction(cl).handle() |
|
693c75d56ebe
Add new config-option 'password_pbkdf2_default_rounds'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4485
diff
changeset
|
462 pw = self.db.user.get(chef, 'password') |
|
693c75d56ebe
Add new config-option 'password_pbkdf2_default_rounds'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4485
diff
changeset
|
463 self.assertEqual('PBKDF2', pw.scheme) |
|
693c75d56ebe
Add new config-option 'password_pbkdf2_default_rounds'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4485
diff
changeset
|
464 self.assertEqual(1000, password.pbkdf2_unpack(pw.password)[0]) |
|
693c75d56ebe
Add new config-option 'password_pbkdf2_default_rounds'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4485
diff
changeset
|
465 |
|
1385
2bd4822f96a6
- more fixes to CGI form handling
Richard Jones <richard@users.sourceforge.net>
parents:
1382
diff
changeset
|
466 # |
|
2bd4822f96a6
- more fixes to CGI form handling
Richard Jones <richard@users.sourceforge.net>
parents:
1382
diff
changeset
|
467 # Boolean |
|
2bd4822f96a6
- more fixes to CGI form handling
Richard Jones <richard@users.sourceforge.net>
parents:
1382
diff
changeset
|
468 # |
|
1393
71928bf79302
more CGI fixes and tests
Richard Jones <richard@users.sourceforge.net>
parents:
1385
diff
changeset
|
469 def testEmptyBoolean(self): |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
470 self.assertEqual(self.parseForm({'boolean': ''}), |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
471 ({('test', None): {}}, [])) |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
472 self.assertEqual(self.parseForm({'boolean': ' '}), |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
473 ({('test', None): {}}, [])) |
|
1819
e24cebaaa7e8
Use FormError.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1797
diff
changeset
|
474 self.assertRaises(FormError, self.parseForm, {'boolean': ['', '']}) |
|
1393
71928bf79302
more CGI fixes and tests
Richard Jones <richard@users.sourceforge.net>
parents:
1385
diff
changeset
|
475 |
|
71928bf79302
more CGI fixes and tests
Richard Jones <richard@users.sourceforge.net>
parents:
1385
diff
changeset
|
476 def testSetBoolean(self): |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
477 self.assertEqual(self.parseForm({'boolean': 'yes'}), |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
478 ({('test', None): {'boolean': 1}}, [])) |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
479 self.assertEqual(self.parseForm({'boolean': 'a\r\nb\r\n'}), |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
480 ({('test', None): {'boolean': 0}}, [])) |
|
1393
71928bf79302
more CGI fixes and tests
Richard Jones <richard@users.sourceforge.net>
parents:
1385
diff
changeset
|
481 nodeid = self.db.test.create(boolean=1) |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
482 self.assertEqual(self.parseForm({'boolean': 'yes'}, 'test', nodeid), |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
483 ({('test', nodeid): {}}, [])) |
|
1393
71928bf79302
more CGI fixes and tests
Richard Jones <richard@users.sourceforge.net>
parents:
1385
diff
changeset
|
484 nodeid = self.db.test.create(boolean=0) |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
485 self.assertEqual(self.parseForm({'boolean': 'no'}, 'test', nodeid), |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
486 ({('test', nodeid): {}}, [])) |
|
1385
2bd4822f96a6
- more fixes to CGI form handling
Richard Jones <richard@users.sourceforge.net>
parents:
1382
diff
changeset
|
487 |
|
1393
71928bf79302
more CGI fixes and tests
Richard Jones <richard@users.sourceforge.net>
parents:
1385
diff
changeset
|
488 def testEmptyBooleanSet(self): |
|
71928bf79302
more CGI fixes and tests
Richard Jones <richard@users.sourceforge.net>
parents:
1385
diff
changeset
|
489 nodeid = self.db.test.create(boolean=0) |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
490 self.assertEqual(self.parseForm({'boolean': ''}, 'test', nodeid), |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
491 ({('test', nodeid): {'boolean': None}}, [])) |
|
1393
71928bf79302
more CGI fixes and tests
Richard Jones <richard@users.sourceforge.net>
parents:
1385
diff
changeset
|
492 nodeid = self.db.test.create(boolean=1) |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
493 self.assertEqual(self.parseForm({'boolean': ' '}, 'test', nodeid), |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
494 ({('test', nodeid): {'boolean': None}}, [])) |
|
1385
2bd4822f96a6
- more fixes to CGI form handling
Richard Jones <richard@users.sourceforge.net>
parents:
1382
diff
changeset
|
495 |
|
3777
74aebbbea305
Sorry for the mega-patch - was all done on the train:
Richard Jones <richard@users.sourceforge.net>
parents:
3656
diff
changeset
|
496 def testRequiredBoolean(self): |
|
74aebbbea305
Sorry for the mega-patch - was all done on the train:
Richard Jones <richard@users.sourceforge.net>
parents:
3656
diff
changeset
|
497 self.assertRaises(FormError, self.parseForm, {'boolean': '', |
|
74aebbbea305
Sorry for the mega-patch - was all done on the train:
Richard Jones <richard@users.sourceforge.net>
parents:
3656
diff
changeset
|
498 ':required': 'boolean'}) |
|
74aebbbea305
Sorry for the mega-patch - was all done on the train:
Richard Jones <richard@users.sourceforge.net>
parents:
3656
diff
changeset
|
499 try: |
|
74aebbbea305
Sorry for the mega-patch - was all done on the train:
Richard Jones <richard@users.sourceforge.net>
parents:
3656
diff
changeset
|
500 self.parseForm({'boolean': 'no', ':required': 'boolean'}) |
|
74aebbbea305
Sorry for the mega-patch - was all done on the train:
Richard Jones <richard@users.sourceforge.net>
parents:
3656
diff
changeset
|
501 except FormError: |
|
74aebbbea305
Sorry for the mega-patch - was all done on the train:
Richard Jones <richard@users.sourceforge.net>
parents:
3656
diff
changeset
|
502 self.fail('boolean "no" raised "required missing"') |
|
74aebbbea305
Sorry for the mega-patch - was all done on the train:
Richard Jones <richard@users.sourceforge.net>
parents:
3656
diff
changeset
|
503 |
|
1393
71928bf79302
more CGI fixes and tests
Richard Jones <richard@users.sourceforge.net>
parents:
1385
diff
changeset
|
504 # |
|
1525
c006e8166f81
added tests for Number cgi editing
Richard Jones <richard@users.sourceforge.net>
parents:
1483
diff
changeset
|
505 # Number |
|
c006e8166f81
added tests for Number cgi editing
Richard Jones <richard@users.sourceforge.net>
parents:
1483
diff
changeset
|
506 # |
|
c006e8166f81
added tests for Number cgi editing
Richard Jones <richard@users.sourceforge.net>
parents:
1483
diff
changeset
|
507 def testEmptyNumber(self): |
|
c006e8166f81
added tests for Number cgi editing
Richard Jones <richard@users.sourceforge.net>
parents:
1483
diff
changeset
|
508 self.assertEqual(self.parseForm({'number': ''}), |
|
c006e8166f81
added tests for Number cgi editing
Richard Jones <richard@users.sourceforge.net>
parents:
1483
diff
changeset
|
509 ({('test', None): {}}, [])) |
|
c006e8166f81
added tests for Number cgi editing
Richard Jones <richard@users.sourceforge.net>
parents:
1483
diff
changeset
|
510 self.assertEqual(self.parseForm({'number': ' '}), |
|
c006e8166f81
added tests for Number cgi editing
Richard Jones <richard@users.sourceforge.net>
parents:
1483
diff
changeset
|
511 ({('test', None): {}}, [])) |
|
1819
e24cebaaa7e8
Use FormError.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1797
diff
changeset
|
512 self.assertRaises(FormError, self.parseForm, {'number': ['', '']}) |
|
1525
c006e8166f81
added tests for Number cgi editing
Richard Jones <richard@users.sourceforge.net>
parents:
1483
diff
changeset
|
513 |
|
1562
b975da59cd11
handle invalid data input in forms better
Richard Jones <richard@users.sourceforge.net>
parents:
1525
diff
changeset
|
514 def testInvalidNumber(self): |
|
1819
e24cebaaa7e8
Use FormError.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1797
diff
changeset
|
515 self.assertRaises(FormError, self.parseForm, {'number': 'hi, mum!'}) |
|
1562
b975da59cd11
handle invalid data input in forms better
Richard Jones <richard@users.sourceforge.net>
parents:
1525
diff
changeset
|
516 |
|
1525
c006e8166f81
added tests for Number cgi editing
Richard Jones <richard@users.sourceforge.net>
parents:
1483
diff
changeset
|
517 def testSetNumber(self): |
|
c006e8166f81
added tests for Number cgi editing
Richard Jones <richard@users.sourceforge.net>
parents:
1483
diff
changeset
|
518 self.assertEqual(self.parseForm({'number': '1'}), |
|
c006e8166f81
added tests for Number cgi editing
Richard Jones <richard@users.sourceforge.net>
parents:
1483
diff
changeset
|
519 ({('test', None): {'number': 1}}, [])) |
|
3491
0e5f15520e70
fix detection of "missing" existing values in CGI form parser [SF#1414149]
Richard Jones <richard@users.sourceforge.net>
parents:
2929
diff
changeset
|
520 self.assertEqual(self.parseForm({'number': '0'}), |
|
0e5f15520e70
fix detection of "missing" existing values in CGI form parser [SF#1414149]
Richard Jones <richard@users.sourceforge.net>
parents:
2929
diff
changeset
|
521 ({('test', None): {'number': 0}}, [])) |
|
1525
c006e8166f81
added tests for Number cgi editing
Richard Jones <richard@users.sourceforge.net>
parents:
1483
diff
changeset
|
522 self.assertEqual(self.parseForm({'number': '\n0\n'}), |
|
c006e8166f81
added tests for Number cgi editing
Richard Jones <richard@users.sourceforge.net>
parents:
1483
diff
changeset
|
523 ({('test', None): {'number': 0}}, [])) |
|
3491
0e5f15520e70
fix detection of "missing" existing values in CGI form parser [SF#1414149]
Richard Jones <richard@users.sourceforge.net>
parents:
2929
diff
changeset
|
524 |
|
0e5f15520e70
fix detection of "missing" existing values in CGI form parser [SF#1414149]
Richard Jones <richard@users.sourceforge.net>
parents:
2929
diff
changeset
|
525 def testSetNumberReplaceOne(self): |
|
1525
c006e8166f81
added tests for Number cgi editing
Richard Jones <richard@users.sourceforge.net>
parents:
1483
diff
changeset
|
526 nodeid = self.db.test.create(number=1) |
|
c006e8166f81
added tests for Number cgi editing
Richard Jones <richard@users.sourceforge.net>
parents:
1483
diff
changeset
|
527 self.assertEqual(self.parseForm({'number': '1'}, 'test', nodeid), |
|
c006e8166f81
added tests for Number cgi editing
Richard Jones <richard@users.sourceforge.net>
parents:
1483
diff
changeset
|
528 ({('test', nodeid): {}}, [])) |
|
3491
0e5f15520e70
fix detection of "missing" existing values in CGI form parser [SF#1414149]
Richard Jones <richard@users.sourceforge.net>
parents:
2929
diff
changeset
|
529 self.assertEqual(self.parseForm({'number': '0'}, 'test', nodeid), |
|
0e5f15520e70
fix detection of "missing" existing values in CGI form parser [SF#1414149]
Richard Jones <richard@users.sourceforge.net>
parents:
2929
diff
changeset
|
530 ({('test', nodeid): {'number': 0}}, [])) |
|
0e5f15520e70
fix detection of "missing" existing values in CGI form parser [SF#1414149]
Richard Jones <richard@users.sourceforge.net>
parents:
2929
diff
changeset
|
531 |
|
0e5f15520e70
fix detection of "missing" existing values in CGI form parser [SF#1414149]
Richard Jones <richard@users.sourceforge.net>
parents:
2929
diff
changeset
|
532 def testSetNumberReplaceZero(self): |
|
1525
c006e8166f81
added tests for Number cgi editing
Richard Jones <richard@users.sourceforge.net>
parents:
1483
diff
changeset
|
533 nodeid = self.db.test.create(number=0) |
|
c006e8166f81
added tests for Number cgi editing
Richard Jones <richard@users.sourceforge.net>
parents:
1483
diff
changeset
|
534 self.assertEqual(self.parseForm({'number': '0'}, 'test', nodeid), |
|
c006e8166f81
added tests for Number cgi editing
Richard Jones <richard@users.sourceforge.net>
parents:
1483
diff
changeset
|
535 ({('test', nodeid): {}}, [])) |
|
c006e8166f81
added tests for Number cgi editing
Richard Jones <richard@users.sourceforge.net>
parents:
1483
diff
changeset
|
536 |
|
3491
0e5f15520e70
fix detection of "missing" existing values in CGI form parser [SF#1414149]
Richard Jones <richard@users.sourceforge.net>
parents:
2929
diff
changeset
|
537 def testSetNumberReplaceNone(self): |
|
0e5f15520e70
fix detection of "missing" existing values in CGI form parser [SF#1414149]
Richard Jones <richard@users.sourceforge.net>
parents:
2929
diff
changeset
|
538 nodeid = self.db.test.create() |
|
0e5f15520e70
fix detection of "missing" existing values in CGI form parser [SF#1414149]
Richard Jones <richard@users.sourceforge.net>
parents:
2929
diff
changeset
|
539 self.assertEqual(self.parseForm({'number': '0'}, 'test', nodeid), |
|
0e5f15520e70
fix detection of "missing" existing values in CGI form parser [SF#1414149]
Richard Jones <richard@users.sourceforge.net>
parents:
2929
diff
changeset
|
540 ({('test', nodeid): {'number': 0}}, [])) |
|
0e5f15520e70
fix detection of "missing" existing values in CGI form parser [SF#1414149]
Richard Jones <richard@users.sourceforge.net>
parents:
2929
diff
changeset
|
541 self.assertEqual(self.parseForm({'number': '1'}, 'test', nodeid), |
|
0e5f15520e70
fix detection of "missing" existing values in CGI form parser [SF#1414149]
Richard Jones <richard@users.sourceforge.net>
parents:
2929
diff
changeset
|
542 ({('test', nodeid): {'number': 1}}, [])) |
|
0e5f15520e70
fix detection of "missing" existing values in CGI form parser [SF#1414149]
Richard Jones <richard@users.sourceforge.net>
parents:
2929
diff
changeset
|
543 |
|
1525
c006e8166f81
added tests for Number cgi editing
Richard Jones <richard@users.sourceforge.net>
parents:
1483
diff
changeset
|
544 def testEmptyNumberSet(self): |
|
c006e8166f81
added tests for Number cgi editing
Richard Jones <richard@users.sourceforge.net>
parents:
1483
diff
changeset
|
545 nodeid = self.db.test.create(number=0) |
|
c006e8166f81
added tests for Number cgi editing
Richard Jones <richard@users.sourceforge.net>
parents:
1483
diff
changeset
|
546 self.assertEqual(self.parseForm({'number': ''}, 'test', nodeid), |
|
c006e8166f81
added tests for Number cgi editing
Richard Jones <richard@users.sourceforge.net>
parents:
1483
diff
changeset
|
547 ({('test', nodeid): {'number': None}}, [])) |
|
c006e8166f81
added tests for Number cgi editing
Richard Jones <richard@users.sourceforge.net>
parents:
1483
diff
changeset
|
548 nodeid = self.db.test.create(number=1) |
|
c006e8166f81
added tests for Number cgi editing
Richard Jones <richard@users.sourceforge.net>
parents:
1483
diff
changeset
|
549 self.assertEqual(self.parseForm({'number': ' '}, 'test', nodeid), |
|
c006e8166f81
added tests for Number cgi editing
Richard Jones <richard@users.sourceforge.net>
parents:
1483
diff
changeset
|
550 ({('test', nodeid): {'number': None}}, [])) |
|
c006e8166f81
added tests for Number cgi editing
Richard Jones <richard@users.sourceforge.net>
parents:
1483
diff
changeset
|
551 |
|
3777
74aebbbea305
Sorry for the mega-patch - was all done on the train:
Richard Jones <richard@users.sourceforge.net>
parents:
3656
diff
changeset
|
552 def testRequiredNumber(self): |
|
74aebbbea305
Sorry for the mega-patch - was all done on the train:
Richard Jones <richard@users.sourceforge.net>
parents:
3656
diff
changeset
|
553 self.assertRaises(FormError, self.parseForm, {'number': '', |
|
74aebbbea305
Sorry for the mega-patch - was all done on the train:
Richard Jones <richard@users.sourceforge.net>
parents:
3656
diff
changeset
|
554 ':required': 'number'}) |
|
74aebbbea305
Sorry for the mega-patch - was all done on the train:
Richard Jones <richard@users.sourceforge.net>
parents:
3656
diff
changeset
|
555 try: |
|
74aebbbea305
Sorry for the mega-patch - was all done on the train:
Richard Jones <richard@users.sourceforge.net>
parents:
3656
diff
changeset
|
556 self.parseForm({'number': '0', ':required': 'number'}) |
|
74aebbbea305
Sorry for the mega-patch - was all done on the train:
Richard Jones <richard@users.sourceforge.net>
parents:
3656
diff
changeset
|
557 except FormError: |
|
74aebbbea305
Sorry for the mega-patch - was all done on the train:
Richard Jones <richard@users.sourceforge.net>
parents:
3656
diff
changeset
|
558 self.fail('number "no" raised "required missing"') |
|
74aebbbea305
Sorry for the mega-patch - was all done on the train:
Richard Jones <richard@users.sourceforge.net>
parents:
3656
diff
changeset
|
559 |
|
1525
c006e8166f81
added tests for Number cgi editing
Richard Jones <richard@users.sourceforge.net>
parents:
1483
diff
changeset
|
560 # |
|
1393
71928bf79302
more CGI fixes and tests
Richard Jones <richard@users.sourceforge.net>
parents:
1385
diff
changeset
|
561 # Date |
|
71928bf79302
more CGI fixes and tests
Richard Jones <richard@users.sourceforge.net>
parents:
1385
diff
changeset
|
562 # |
|
71928bf79302
more CGI fixes and tests
Richard Jones <richard@users.sourceforge.net>
parents:
1385
diff
changeset
|
563 def testEmptyDate(self): |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
564 self.assertEqual(self.parseForm({'date': ''}), |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
565 ({('test', None): {}}, [])) |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
566 self.assertEqual(self.parseForm({'date': ' '}), |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
567 ({('test', None): {}}, [])) |
|
1819
e24cebaaa7e8
Use FormError.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1797
diff
changeset
|
568 self.assertRaises(FormError, self.parseForm, {'date': ['', '']}) |
|
1385
2bd4822f96a6
- more fixes to CGI form handling
Richard Jones <richard@users.sourceforge.net>
parents:
1382
diff
changeset
|
569 |
|
1562
b975da59cd11
handle invalid data input in forms better
Richard Jones <richard@users.sourceforge.net>
parents:
1525
diff
changeset
|
570 def testInvalidDate(self): |
|
1819
e24cebaaa7e8
Use FormError.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1797
diff
changeset
|
571 self.assertRaises(FormError, self.parseForm, {'date': '12'}) |
|
1562
b975da59cd11
handle invalid data input in forms better
Richard Jones <richard@users.sourceforge.net>
parents:
1525
diff
changeset
|
572 |
|
1393
71928bf79302
more CGI fixes and tests
Richard Jones <richard@users.sourceforge.net>
parents:
1385
diff
changeset
|
573 def testSetDate(self): |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
574 self.assertEqual(self.parseForm({'date': '2003-01-01'}), |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
575 ({('test', None): {'date': date.Date('2003-01-01')}}, [])) |
|
1393
71928bf79302
more CGI fixes and tests
Richard Jones <richard@users.sourceforge.net>
parents:
1385
diff
changeset
|
576 nodeid = self.db.test.create(date=date.Date('2003-01-01')) |
|
2696
a5c5a1106e3b
init.initialize() was removed in [[CVS:1.30]] (27-jul-2004)
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2027
diff
changeset
|
577 self.assertEqual(self.parseForm({'date': '2003-01-01'}, 'test', |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
578 nodeid), ({('test', nodeid): {}}, [])) |
|
1393
71928bf79302
more CGI fixes and tests
Richard Jones <richard@users.sourceforge.net>
parents:
1385
diff
changeset
|
579 |
|
71928bf79302
more CGI fixes and tests
Richard Jones <richard@users.sourceforge.net>
parents:
1385
diff
changeset
|
580 def testEmptyDateSet(self): |
|
71928bf79302
more CGI fixes and tests
Richard Jones <richard@users.sourceforge.net>
parents:
1385
diff
changeset
|
581 nodeid = self.db.test.create(date=date.Date('.')) |
|
2696
a5c5a1106e3b
init.initialize() was removed in [[CVS:1.30]] (27-jul-2004)
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2027
diff
changeset
|
582 self.assertEqual(self.parseForm({'date': ''}, 'test', nodeid), |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
583 ({('test', nodeid): {'date': None}}, [])) |
|
1393
71928bf79302
more CGI fixes and tests
Richard Jones <richard@users.sourceforge.net>
parents:
1385
diff
changeset
|
584 nodeid = self.db.test.create(date=date.Date('1970-01-01.00:00:00')) |
|
2696
a5c5a1106e3b
init.initialize() was removed in [[CVS:1.30]] (27-jul-2004)
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2027
diff
changeset
|
585 self.assertEqual(self.parseForm({'date': ' '}, 'test', nodeid), |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
586 ({('test', nodeid): {'date': None}}, [])) |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
587 |
|
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
588 # |
|
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
589 # Test multiple items in form |
|
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
590 # |
|
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
591 def testMultiple(self): |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
592 self.assertEqual(self.parseForm({'string': 'a', 'issue-1@title': 'b'}), |
|
1438
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
593 ({('test', None): {'string': 'a'}, |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
594 ('issue', '-1'): {'title': 'b'} |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
595 }, [])) |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
596 |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
597 def testMultipleExistingContext(self): |
|
1420
3ac43c62a250
implemented extension to form parsing...
Richard Jones <richard@users.sourceforge.net>
parents:
1393
diff
changeset
|
598 nodeid = self.db.test.create() |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
599 self.assertEqual(self.parseForm({'string': 'a', 'issue-1@title': 'b'}, |
|
1438
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
600 'test', nodeid),({('test', nodeid): {'string': 'a'}, |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
601 ('issue', '-1'): {'title': 'b'}}, [])) |
|
1438
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
602 |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
603 def testLinking(self): |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
604 self.assertEqual(self.parseForm({ |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
605 'string': 'a', |
|
1438
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
606 'issue-1@add@nosy': '1', |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
607 'issue-2@link@superseder': 'issue-1', |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
608 }), |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
609 ({('test', None): {'string': 'a'}, |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
610 ('issue', '-1'): {'nosy': ['1']}, |
|
1438
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
611 }, |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
612 [('issue', '-2', 'superseder', [('issue', '-1')]) |
|
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
613 ] |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
614 ) |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
615 ) |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
616 |
|
3982
efcea2fe69be
add new test for multiple message creation
Richard Jones <richard@users.sourceforge.net>
parents:
3980
diff
changeset
|
617 def testMessages(self): |
|
efcea2fe69be
add new test for multiple message creation
Richard Jones <richard@users.sourceforge.net>
parents:
3980
diff
changeset
|
618 self.assertEqual(self.parseForm({ |
|
efcea2fe69be
add new test for multiple message creation
Richard Jones <richard@users.sourceforge.net>
parents:
3980
diff
changeset
|
619 'msg-1@content': 'asdf', |
|
efcea2fe69be
add new test for multiple message creation
Richard Jones <richard@users.sourceforge.net>
parents:
3980
diff
changeset
|
620 'msg-2@content': 'qwer', |
|
efcea2fe69be
add new test for multiple message creation
Richard Jones <richard@users.sourceforge.net>
parents:
3980
diff
changeset
|
621 '@link@messages': 'msg-1, msg-2'}), |
|
efcea2fe69be
add new test for multiple message creation
Richard Jones <richard@users.sourceforge.net>
parents:
3980
diff
changeset
|
622 ({('test', None): {}, |
|
efcea2fe69be
add new test for multiple message creation
Richard Jones <richard@users.sourceforge.net>
parents:
3980
diff
changeset
|
623 ('msg', '-2'): {'content': 'qwer'}, |
|
efcea2fe69be
add new test for multiple message creation
Richard Jones <richard@users.sourceforge.net>
parents:
3980
diff
changeset
|
624 ('msg', '-1'): {'content': 'asdf'}}, |
|
efcea2fe69be
add new test for multiple message creation
Richard Jones <richard@users.sourceforge.net>
parents:
3980
diff
changeset
|
625 [('test', None, 'messages', [('msg', '-1'), ('msg', '-2')])] |
|
efcea2fe69be
add new test for multiple message creation
Richard Jones <richard@users.sourceforge.net>
parents:
3980
diff
changeset
|
626 ) |
|
efcea2fe69be
add new test for multiple message creation
Richard Jones <richard@users.sourceforge.net>
parents:
3980
diff
changeset
|
627 ) |
|
efcea2fe69be
add new test for multiple message creation
Richard Jones <richard@users.sourceforge.net>
parents:
3980
diff
changeset
|
628 |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
629 def testLinkBadDesignator(self): |
|
1819
e24cebaaa7e8
Use FormError.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1797
diff
changeset
|
630 self.assertRaises(FormError, self.parseForm, |
|
1438
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
631 {'test-1@link@link': 'blah'}) |
|
1819
e24cebaaa7e8
Use FormError.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1797
diff
changeset
|
632 self.assertRaises(FormError, self.parseForm, |
|
1438
13c42b803101
Better handling of the form variable labels.
Richard Jones <richard@users.sourceforge.net>
parents:
1431
diff
changeset
|
633 {'test-1@link@link': 'issue'}) |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
634 |
|
1446
8ce33ce262a4
fix property type check, and dont create items that have no properties
Richard Jones <richard@users.sourceforge.net>
parents:
1438
diff
changeset
|
635 def testLinkNotLink(self): |
|
1819
e24cebaaa7e8
Use FormError.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1797
diff
changeset
|
636 self.assertRaises(FormError, self.parseForm, |
|
1446
8ce33ce262a4
fix property type check, and dont create items that have no properties
Richard Jones <richard@users.sourceforge.net>
parents:
1438
diff
changeset
|
637 {'test-1@link@boolean': 'issue-1'}) |
|
1819
e24cebaaa7e8
Use FormError.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1797
diff
changeset
|
638 self.assertRaises(FormError, self.parseForm, |
|
1446
8ce33ce262a4
fix property type check, and dont create items that have no properties
Richard Jones <richard@users.sourceforge.net>
parents:
1438
diff
changeset
|
639 {'test-1@link@string': 'issue-1'}) |
|
8ce33ce262a4
fix property type check, and dont create items that have no properties
Richard Jones <richard@users.sourceforge.net>
parents:
1438
diff
changeset
|
640 |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
641 def testBackwardsCompat(self): |
|
1431
c70068162e64
Altered Class.create() and FileClass.create() methods...
Richard Jones <richard@users.sourceforge.net>
parents:
1425
diff
changeset
|
642 res = self.parseForm({':note': 'spam'}, 'issue') |
|
c70068162e64
Altered Class.create() and FileClass.create() methods...
Richard Jones <richard@users.sourceforge.net>
parents:
1425
diff
changeset
|
643 date = res[0][('msg', '-1')]['date'] |
|
c70068162e64
Altered Class.create() and FileClass.create() methods...
Richard Jones <richard@users.sourceforge.net>
parents:
1425
diff
changeset
|
644 self.assertEqual(res, ({('issue', None): {}, ('msg', '-1'): |
|
c70068162e64
Altered Class.create() and FileClass.create() methods...
Richard Jones <richard@users.sourceforge.net>
parents:
1425
diff
changeset
|
645 {'content': 'spam', 'author': '1', 'date': date}}, |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
646 [('issue', None, 'messages', [('msg', '-1')])])) |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
647 file = FileUpload('foo', 'foo.txt') |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
648 self.assertEqual(self.parseForm({':file': file}, 'issue'), |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
649 ({('issue', None): {}, ('file', '-1'): {'content': 'foo', |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
650 'name': 'foo.txt', 'type': 'text/plain'}}, |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
651 [('issue', None, 'files', [('file', '-1')])])) |
|
1377
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
652 |
|
3930
1b84355e346a
add tests for through-the-web permission checking
Richard Jones <richard@users.sourceforge.net>
parents:
3904
diff
changeset
|
653 # |
|
1b84355e346a
add tests for through-the-web permission checking
Richard Jones <richard@users.sourceforge.net>
parents:
3904
diff
changeset
|
654 # SECURITY |
|
1b84355e346a
add tests for through-the-web permission checking
Richard Jones <richard@users.sourceforge.net>
parents:
3904
diff
changeset
|
655 # |
|
1b84355e346a
add tests for through-the-web permission checking
Richard Jones <richard@users.sourceforge.net>
parents:
3904
diff
changeset
|
656 # XXX test all default permissions |
|
4437
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
657 def _make_client(self, form, classname='user', nodeid='1', |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
658 userid='2', template='item'): |
|
4088
34434785f308
Plug a number of security holes:
Richard Jones <richard@users.sourceforge.net>
parents:
3982
diff
changeset
|
659 cl = client.Client(self.instance, None, {'PATH_INFO':'/', |
|
34434785f308
Plug a number of security holes:
Richard Jones <richard@users.sourceforge.net>
parents:
3982
diff
changeset
|
660 'REQUEST_METHOD':'POST'}, makeForm(form)) |
|
4437
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
661 cl.classname = classname |
|
4310
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
662 if nodeid is not None: |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
663 cl.nodeid = nodeid |
|
3930
1b84355e346a
add tests for through-the-web permission checking
Richard Jones <richard@users.sourceforge.net>
parents:
3904
diff
changeset
|
664 cl.db = self.db |
|
4112
6441ffe588f7
fix bug introduced into CSV export and view (issue 2550529)
Richard Jones <richard@users.sourceforge.net>
parents:
4088
diff
changeset
|
665 cl.userid = userid |
|
3969
905faf52a51f
fix mysql breakage in 1.4.2
Richard Jones <richard@users.sourceforge.net>
parents:
3930
diff
changeset
|
666 cl.language = ('en',) |
|
4310
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
667 cl.error_message = [] |
|
4437
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
668 cl.template = template |
|
3930
1b84355e346a
add tests for through-the-web permission checking
Richard Jones <richard@users.sourceforge.net>
parents:
3904
diff
changeset
|
669 return cl |
|
1b84355e346a
add tests for through-the-web permission checking
Richard Jones <richard@users.sourceforge.net>
parents:
3904
diff
changeset
|
670 |
|
1b84355e346a
add tests for through-the-web permission checking
Richard Jones <richard@users.sourceforge.net>
parents:
3904
diff
changeset
|
671 def testClassPermission(self): |
|
1b84355e346a
add tests for through-the-web permission checking
Richard Jones <richard@users.sourceforge.net>
parents:
3904
diff
changeset
|
672 cl = self._make_client(dict(username='bob')) |
|
1b84355e346a
add tests for through-the-web permission checking
Richard Jones <richard@users.sourceforge.net>
parents:
3904
diff
changeset
|
673 self.failUnlessRaises(exceptions.Unauthorised, |
|
1b84355e346a
add tests for through-the-web permission checking
Richard Jones <richard@users.sourceforge.net>
parents:
3904
diff
changeset
|
674 actions.EditItemAction(cl).handle) |
|
1b84355e346a
add tests for through-the-web permission checking
Richard Jones <richard@users.sourceforge.net>
parents:
3904
diff
changeset
|
675 cl.nodeid = '1' |
|
1b84355e346a
add tests for through-the-web permission checking
Richard Jones <richard@users.sourceforge.net>
parents:
3904
diff
changeset
|
676 self.assertRaises(exceptions.Unauthorised, |
|
1b84355e346a
add tests for through-the-web permission checking
Richard Jones <richard@users.sourceforge.net>
parents:
3904
diff
changeset
|
677 actions.EditItemAction(cl).handle) |
|
1b84355e346a
add tests for through-the-web permission checking
Richard Jones <richard@users.sourceforge.net>
parents:
3904
diff
changeset
|
678 |
|
1b84355e346a
add tests for through-the-web permission checking
Richard Jones <richard@users.sourceforge.net>
parents:
3904
diff
changeset
|
679 def testCheckAndPropertyPermission(self): |
|
1b84355e346a
add tests for through-the-web permission checking
Richard Jones <richard@users.sourceforge.net>
parents:
3904
diff
changeset
|
680 self.db.security.permissions = {} |
|
4310
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
681 def own_record(db, userid, itemid): |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
682 return userid == itemid |
|
3930
1b84355e346a
add tests for through-the-web permission checking
Richard Jones <richard@users.sourceforge.net>
parents:
3904
diff
changeset
|
683 p = self.db.security.addPermission(name='Edit', klass='user', |
|
1b84355e346a
add tests for through-the-web permission checking
Richard Jones <richard@users.sourceforge.net>
parents:
3904
diff
changeset
|
684 check=own_record, properties=("password", )) |
|
1b84355e346a
add tests for through-the-web permission checking
Richard Jones <richard@users.sourceforge.net>
parents:
3904
diff
changeset
|
685 self.db.security.addPermissionToRole('User', p) |
|
1b84355e346a
add tests for through-the-web permission checking
Richard Jones <richard@users.sourceforge.net>
parents:
3904
diff
changeset
|
686 |
|
1b84355e346a
add tests for through-the-web permission checking
Richard Jones <richard@users.sourceforge.net>
parents:
3904
diff
changeset
|
687 cl = self._make_client(dict(username='bob')) |
|
1b84355e346a
add tests for through-the-web permission checking
Richard Jones <richard@users.sourceforge.net>
parents:
3904
diff
changeset
|
688 self.assertRaises(exceptions.Unauthorised, |
|
1b84355e346a
add tests for through-the-web permission checking
Richard Jones <richard@users.sourceforge.net>
parents:
3904
diff
changeset
|
689 actions.EditItemAction(cl).handle) |
|
4310
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
690 cl = self._make_client(dict(roles='User,Admin'), userid='4', nodeid='4') |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
691 self.assertRaises(exceptions.Unauthorised, |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
692 actions.EditItemAction(cl).handle) |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
693 cl = self._make_client(dict(roles='User,Admin'), userid='4') |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
694 self.assertRaises(exceptions.Unauthorised, |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
695 actions.EditItemAction(cl).handle) |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
696 cl = self._make_client(dict(roles='User,Admin')) |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
697 self.assertRaises(exceptions.Unauthorised, |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
698 actions.EditItemAction(cl).handle) |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
699 # working example, mary may change her pw |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
700 cl = self._make_client({'password':'ob', '@confirm@password':'ob'}, |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
701 nodeid='4', userid='4') |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
702 self.assertRaises(exceptions.Redirect, |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
703 actions.EditItemAction(cl).handle) |
|
3930
1b84355e346a
add tests for through-the-web permission checking
Richard Jones <richard@users.sourceforge.net>
parents:
3904
diff
changeset
|
704 cl = self._make_client({'password':'bob', '@confirm@password':'bob'}) |
|
1b84355e346a
add tests for through-the-web permission checking
Richard Jones <richard@users.sourceforge.net>
parents:
3904
diff
changeset
|
705 self.failUnlessRaises(exceptions.Unauthorised, |
|
1b84355e346a
add tests for through-the-web permission checking
Richard Jones <richard@users.sourceforge.net>
parents:
3904
diff
changeset
|
706 actions.EditItemAction(cl).handle) |
|
1b84355e346a
add tests for through-the-web permission checking
Richard Jones <richard@users.sourceforge.net>
parents:
3904
diff
changeset
|
707 |
|
4310
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
708 def testCreatePermission(self): |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
709 # this checks if we properly differentiate between create and |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
710 # edit permissions |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
711 self.db.security.permissions = {} |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
712 self.db.security.addRole(name='UserAdd') |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
713 # Don't allow roles |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
714 p = self.db.security.addPermission(name='Create', klass='user', |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
715 properties=("username", "password", "address", |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
716 "alternate_address", "realname", "phone", "organisation", |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
717 "timezone")) |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
718 self.db.security.addPermissionToRole('UserAdd', p) |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
719 # Don't allow roles *and* don't allow username |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
720 p = self.db.security.addPermission(name='Edit', klass='user', |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
721 properties=("password", "address", "alternate_address", |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
722 "realname", "phone", "organisation", "timezone")) |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
723 self.db.security.addPermissionToRole('UserAdd', p) |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
724 self.db.user.set('4', roles='UserAdd') |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
725 |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
726 # anonymous may not |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
727 cl = self._make_client({'username':'new_user', 'password':'secret', |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
728 '@confirm@password':'secret', 'address':'new_user@bork.bork', |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
729 'roles':'Admin'}, nodeid=None, userid='2') |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
730 self.assertRaises(exceptions.Unauthorised, |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
731 actions.NewItemAction(cl).handle) |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
732 # Don't allow creating new user with roles |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
733 cl = self._make_client({'username':'new_user', 'password':'secret', |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
734 '@confirm@password':'secret', 'address':'new_user@bork.bork', |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
735 'roles':'Admin'}, nodeid=None, userid='4') |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
736 self.assertRaises(exceptions.Unauthorised, |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
737 actions.NewItemAction(cl).handle) |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
738 self.assertEqual(cl.error_message,[]) |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
739 # this should work |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
740 cl = self._make_client({'username':'new_user', 'password':'secret', |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
741 '@confirm@password':'secret', 'address':'new_user@bork.bork'}, |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
742 nodeid=None, userid='4') |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
743 self.assertRaises(exceptions.Redirect, |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
744 actions.NewItemAction(cl).handle) |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
745 self.assertEqual(cl.error_message,[]) |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
746 # don't allow changing (my own) username (in this example) |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
747 cl = self._make_client(dict(username='new_user42'), userid='4') |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
748 self.assertRaises(exceptions.Unauthorised, |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
749 actions.EditItemAction(cl).handle) |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
750 cl = self._make_client(dict(username='new_user42'), userid='4', |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
751 nodeid='4') |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
752 self.assertRaises(exceptions.Unauthorised, |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
753 actions.EditItemAction(cl).handle) |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
754 # don't allow changing (my own) roles |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
755 cl = self._make_client(dict(roles='User,Admin'), userid='4', |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
756 nodeid='4') |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
757 self.assertRaises(exceptions.Unauthorised, |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
758 actions.EditItemAction(cl).handle) |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
759 cl = self._make_client(dict(roles='User,Admin'), userid='4') |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
760 self.assertRaises(exceptions.Unauthorised, |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
761 actions.EditItemAction(cl).handle) |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
762 cl = self._make_client(dict(roles='User,Admin')) |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
763 self.assertRaises(exceptions.Unauthorised, |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
764 actions.EditItemAction(cl).handle) |
|
8e0d350ce644
Proper handling of 'Create' permissions in both mail gateway...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4306
diff
changeset
|
765 |
|
4437
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
766 def testSearchPermission(self): |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
767 # this checks if we properly check for search permissions |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
768 self.db.security.permissions = {} |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
769 self.db.security.addRole(name='User') |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
770 self.db.security.addRole(name='Project') |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
771 self.db.security.addPermissionToRole('User', 'Web Access') |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
772 self.db.security.addPermissionToRole('Project', 'Web Access') |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
773 # Allow viewing department |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
774 p = self.db.security.addPermission(name='View', klass='department') |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
775 self.db.security.addPermissionToRole('User', p) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
776 # Allow viewing interesting things (but not department) on iss |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
777 # But users might only view issues where they are on nosy |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
778 # (so in the real world the check method would be better) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
779 p = self.db.security.addPermission(name='View', klass='iss', |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
780 properties=("title", "status"), check=lambda x,y,z: True) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
781 self.db.security.addPermissionToRole('User', p) |
|
4446
17f796a78647
fix broken tests by adding additional permissions...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4437
diff
changeset
|
782 # Allow all relevant roles access to stat |
|
17f796a78647
fix broken tests by adding additional permissions...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4437
diff
changeset
|
783 p = self.db.security.addPermission(name='View', klass='stat') |
|
17f796a78647
fix broken tests by adding additional permissions...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4437
diff
changeset
|
784 self.db.security.addPermissionToRole('User', p) |
|
17f796a78647
fix broken tests by adding additional permissions...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4437
diff
changeset
|
785 self.db.security.addPermissionToRole('Project', p) |
|
4437
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
786 # Allow role "Project" access to whole iss |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
787 p = self.db.security.addPermission(name='View', klass='iss') |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
788 self.db.security.addPermissionToRole('Project', p) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
789 |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
790 department = self.instance.backend.Class(self.db, "department", |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
791 name=hyperdb.String()) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
792 status = self.instance.backend.Class(self.db, "stat", |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
793 name=hyperdb.String()) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
794 issue = self.instance.backend.Class(self.db, "iss", |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
795 title=hyperdb.String(), status=hyperdb.Link('stat'), |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
796 department=hyperdb.Link('department')) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
797 |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
798 d1 = department.create(name='d1') |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
799 d2 = department.create(name='d2') |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
800 open = status.create(name='open') |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
801 closed = status.create(name='closed') |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
802 issue.create(title='i1', status=open, department=d2) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
803 issue.create(title='i2', status=open, department=d1) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
804 issue.create(title='i2', status=closed, department=d1) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
805 |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
806 chef = self.db.user.lookup('Chef') |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
807 mary = self.db.user.lookup('mary') |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
808 self.db.user.set(chef, roles = 'User, Project') |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
809 |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
810 perm = self.db.security.hasPermission |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
811 search = self.db.security.hasSearchPermission |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
812 self.assert_(perm('View', chef, 'iss', 'department', '1')) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
813 self.assert_(perm('View', chef, 'iss', 'department', '2')) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
814 self.assert_(perm('View', chef, 'iss', 'department', '3')) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
815 self.assert_(search(chef, 'iss', 'department')) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
816 |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
817 self.assert_(not perm('View', mary, 'iss', 'department')) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
818 self.assert_(perm('View', mary, 'iss', 'status')) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
819 # Conditionally allow view of whole iss (check is False here, |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
820 # this might check for department owner in the real world) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
821 p = self.db.security.addPermission(name='View', klass='iss', |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
822 check=lambda x,y,z: False) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
823 self.db.security.addPermissionToRole('User', p) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
824 self.assert_(perm('View', mary, 'iss', 'department')) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
825 self.assert_(not perm('View', mary, 'iss', 'department', '1')) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
826 self.assert_(not search(mary, 'iss', 'department')) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
827 |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
828 self.assert_(perm('View', mary, 'iss', 'status')) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
829 self.assert_(not search(mary, 'iss', 'status')) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
830 # Allow user to search for iss.status |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
831 p = self.db.security.addPermission(name='Search', klass='iss', |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
832 properties=("status",)) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
833 self.db.security.addPermissionToRole('User', p) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
834 self.assert_(search(mary, 'iss', 'status')) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
835 |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
836 dep = {'@action':'search','columns':'id','@filter':'department', |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
837 'department':'1'} |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
838 stat = {'@action':'search','columns':'id','@filter':'status', |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
839 'status':'1'} |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
840 depsort = {'@action':'search','columns':'id','@sort':'department'} |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
841 depgrp = {'@action':'search','columns':'id','@group':'department'} |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
842 |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
843 # Filter on department ignored for role 'User': |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
844 cl = self._make_client(dep, classname='iss', nodeid=None, userid=mary, |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
845 template='index') |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
846 h = HTMLRequest(cl) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
847 self.assertEqual([x.id for x in h.batch()],['1', '2', '3']) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
848 # Filter on department works for role 'Project': |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
849 cl = self._make_client(dep, classname='iss', nodeid=None, userid=chef, |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
850 template='index') |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
851 h = HTMLRequest(cl) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
852 self.assertEqual([x.id for x in h.batch()],['2', '3']) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
853 # Filter on status works for all: |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
854 cl = self._make_client(stat, classname='iss', nodeid=None, userid=mary, |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
855 template='index') |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
856 h = HTMLRequest(cl) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
857 self.assertEqual([x.id for x in h.batch()],['1', '2']) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
858 cl = self._make_client(stat, classname='iss', nodeid=None, userid=chef, |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
859 template='index') |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
860 h = HTMLRequest(cl) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
861 self.assertEqual([x.id for x in h.batch()],['1', '2']) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
862 # Sorting and grouping for class Project works: |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
863 cl = self._make_client(depsort, classname='iss', nodeid=None, |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
864 userid=chef, template='index') |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
865 h = HTMLRequest(cl) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
866 self.assertEqual([x.id for x in h.batch()],['2', '3', '1']) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
867 cl = self._make_client(depgrp, classname='iss', nodeid=None, |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
868 userid=chef, template='index') |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
869 h = HTMLRequest(cl) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
870 self.assertEqual([x.id for x in h.batch()],['2', '3', '1']) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
871 # Sorting and grouping for class User fails: |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
872 cl = self._make_client(depsort, classname='iss', nodeid=None, |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
873 userid=mary, template='index') |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
874 h = HTMLRequest(cl) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
875 self.assertEqual([x.id for x in h.batch()],['1', '2', '3']) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
876 cl = self._make_client(depgrp, classname='iss', nodeid=None, |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
877 userid=mary, template='index') |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
878 h = HTMLRequest(cl) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
879 self.assertEqual([x.id for x in h.batch()],['1', '2', '3']) |
|
261c9f913ff7
- Add explicit "Search" permissions, see Security Fix below.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4310
diff
changeset
|
880 |
|
4521
abd2db0a159a
Fix StringIO issue2550713:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4486
diff
changeset
|
881 def testEditCSV(self): |
|
abd2db0a159a
Fix StringIO issue2550713:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4486
diff
changeset
|
882 form = dict(rows='id,name\n1,newkey') |
|
abd2db0a159a
Fix StringIO issue2550713:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4486
diff
changeset
|
883 cl = self._make_client(form, userid='1', classname='keyword') |
|
abd2db0a159a
Fix StringIO issue2550713:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4486
diff
changeset
|
884 cl.ok_message = [] |
|
abd2db0a159a
Fix StringIO issue2550713:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4486
diff
changeset
|
885 actions.EditCSVAction(cl).handle() |
|
abd2db0a159a
Fix StringIO issue2550713:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4486
diff
changeset
|
886 self.assertEqual(cl.ok_message, ['Items edited OK']) |
|
abd2db0a159a
Fix StringIO issue2550713:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4486
diff
changeset
|
887 k = self.db.keyword.getnode('1') |
|
abd2db0a159a
Fix StringIO issue2550713:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4486
diff
changeset
|
888 self.assertEqual(k.name, 'newkey') |
|
abd2db0a159a
Fix StringIO issue2550713:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4486
diff
changeset
|
889 form = dict(rows=u'id,name\n1,\xe4\xf6\xfc'.encode('utf-8')) |
|
abd2db0a159a
Fix StringIO issue2550713:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4486
diff
changeset
|
890 cl = self._make_client(form, userid='1', classname='keyword') |
|
abd2db0a159a
Fix StringIO issue2550713:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4486
diff
changeset
|
891 cl.ok_message = [] |
|
abd2db0a159a
Fix StringIO issue2550713:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4486
diff
changeset
|
892 actions.EditCSVAction(cl).handle() |
|
abd2db0a159a
Fix StringIO issue2550713:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4486
diff
changeset
|
893 self.assertEqual(cl.ok_message, ['Items edited OK']) |
|
abd2db0a159a
Fix StringIO issue2550713:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4486
diff
changeset
|
894 k = self.db.keyword.getnode('1') |
|
abd2db0a159a
Fix StringIO issue2550713:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4486
diff
changeset
|
895 self.assertEqual(k.name, u'\xe4\xf6\xfc'.encode('utf-8')) |
|
abd2db0a159a
Fix StringIO issue2550713:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4486
diff
changeset
|
896 |
|
4306
966592263fb8
Clean up all the places where role processing occurs.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4112
diff
changeset
|
897 def testRoles(self): |
|
966592263fb8
Clean up all the places where role processing occurs.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4112
diff
changeset
|
898 cl = self._make_client({}) |
|
966592263fb8
Clean up all the places where role processing occurs.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4112
diff
changeset
|
899 self.db.user.set('1', roles='aDmin, uSer') |
|
966592263fb8
Clean up all the places where role processing occurs.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4112
diff
changeset
|
900 item = HTMLItem(cl, 'user', '1') |
|
966592263fb8
Clean up all the places where role processing occurs.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4112
diff
changeset
|
901 self.assert_(item.hasRole('Admin')) |
|
966592263fb8
Clean up all the places where role processing occurs.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4112
diff
changeset
|
902 self.assert_(item.hasRole('User')) |
|
966592263fb8
Clean up all the places where role processing occurs.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4112
diff
changeset
|
903 self.assert_(item.hasRole('AdmiN')) |
|
966592263fb8
Clean up all the places where role processing occurs.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4112
diff
changeset
|
904 self.assert_(item.hasRole('UseR')) |
|
966592263fb8
Clean up all the places where role processing occurs.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4112
diff
changeset
|
905 self.assert_(item.hasRole('UseR','Admin')) |
|
966592263fb8
Clean up all the places where role processing occurs.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4112
diff
changeset
|
906 self.assert_(item.hasRole('UseR','somethingelse')) |
|
966592263fb8
Clean up all the places where role processing occurs.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4112
diff
changeset
|
907 self.assert_(item.hasRole('somethingelse','Admin')) |
|
966592263fb8
Clean up all the places where role processing occurs.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4112
diff
changeset
|
908 self.assert_(not item.hasRole('userr')) |
|
966592263fb8
Clean up all the places where role processing occurs.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4112
diff
changeset
|
909 self.assert_(not item.hasRole('adminn')) |
|
966592263fb8
Clean up all the places where role processing occurs.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4112
diff
changeset
|
910 self.assert_(not item.hasRole('')) |
|
966592263fb8
Clean up all the places where role processing occurs.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4112
diff
changeset
|
911 self.assert_(not item.hasRole(' ')) |
|
966592263fb8
Clean up all the places where role processing occurs.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4112
diff
changeset
|
912 self.db.user.set('1', roles='') |
|
966592263fb8
Clean up all the places where role processing occurs.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4112
diff
changeset
|
913 self.assert_(not item.hasRole('')) |
|
966592263fb8
Clean up all the places where role processing occurs.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4112
diff
changeset
|
914 |
|
4112
6441ffe588f7
fix bug introduced into CSV export and view (issue 2550529)
Richard Jones <richard@users.sourceforge.net>
parents:
4088
diff
changeset
|
915 def testCSVExport(self): |
|
6441ffe588f7
fix bug introduced into CSV export and view (issue 2550529)
Richard Jones <richard@users.sourceforge.net>
parents:
4088
diff
changeset
|
916 cl = self._make_client({'@columns': 'id,name'}, nodeid=None, |
|
6441ffe588f7
fix bug introduced into CSV export and view (issue 2550529)
Richard Jones <richard@users.sourceforge.net>
parents:
4088
diff
changeset
|
917 userid='1') |
|
6441ffe588f7
fix bug introduced into CSV export and view (issue 2550529)
Richard Jones <richard@users.sourceforge.net>
parents:
4088
diff
changeset
|
918 cl.classname = 'status' |
|
6441ffe588f7
fix bug introduced into CSV export and view (issue 2550529)
Richard Jones <richard@users.sourceforge.net>
parents:
4088
diff
changeset
|
919 output = StringIO.StringIO() |
|
6441ffe588f7
fix bug introduced into CSV export and view (issue 2550529)
Richard Jones <richard@users.sourceforge.net>
parents:
4088
diff
changeset
|
920 cl.request = MockNull() |
|
6441ffe588f7
fix bug introduced into CSV export and view (issue 2550529)
Richard Jones <richard@users.sourceforge.net>
parents:
4088
diff
changeset
|
921 cl.request.wfile = output |
|
6441ffe588f7
fix bug introduced into CSV export and view (issue 2550529)
Richard Jones <richard@users.sourceforge.net>
parents:
4088
diff
changeset
|
922 actions.ExportCSVAction(cl).handle() |
|
6441ffe588f7
fix bug introduced into CSV export and view (issue 2550529)
Richard Jones <richard@users.sourceforge.net>
parents:
4088
diff
changeset
|
923 self.assertEquals('id,name\r\n1,unread\r\n2,deferred\r\n3,chatting\r\n' |
|
6441ffe588f7
fix bug introduced into CSV export and view (issue 2550529)
Richard Jones <richard@users.sourceforge.net>
parents:
4088
diff
changeset
|
924 '4,need-eg\r\n5,in-progress\r\n6,testing\r\n7,done-cbb\r\n' |
|
6441ffe588f7
fix bug introduced into CSV export and view (issue 2550529)
Richard Jones <richard@users.sourceforge.net>
parents:
4088
diff
changeset
|
925 '8,resolved\r\n', |
|
6441ffe588f7
fix bug introduced into CSV export and view (issue 2550529)
Richard Jones <richard@users.sourceforge.net>
parents:
4088
diff
changeset
|
926 output.getvalue()) |
|
6441ffe588f7
fix bug introduced into CSV export and view (issue 2550529)
Richard Jones <richard@users.sourceforge.net>
parents:
4088
diff
changeset
|
927 |
|
6441ffe588f7
fix bug introduced into CSV export and view (issue 2550529)
Richard Jones <richard@users.sourceforge.net>
parents:
4088
diff
changeset
|
928 def testCSVExportFailPermission(self): |
|
6441ffe588f7
fix bug introduced into CSV export and view (issue 2550529)
Richard Jones <richard@users.sourceforge.net>
parents:
4088
diff
changeset
|
929 cl = self._make_client({'@columns': 'id,email,password'}, nodeid=None, |
|
6441ffe588f7
fix bug introduced into CSV export and view (issue 2550529)
Richard Jones <richard@users.sourceforge.net>
parents:
4088
diff
changeset
|
930 userid='2') |
|
6441ffe588f7
fix bug introduced into CSV export and view (issue 2550529)
Richard Jones <richard@users.sourceforge.net>
parents:
4088
diff
changeset
|
931 cl.classname = 'user' |
|
6441ffe588f7
fix bug introduced into CSV export and view (issue 2550529)
Richard Jones <richard@users.sourceforge.net>
parents:
4088
diff
changeset
|
932 output = StringIO.StringIO() |
|
6441ffe588f7
fix bug introduced into CSV export and view (issue 2550529)
Richard Jones <richard@users.sourceforge.net>
parents:
4088
diff
changeset
|
933 cl.request = MockNull() |
|
6441ffe588f7
fix bug introduced into CSV export and view (issue 2550529)
Richard Jones <richard@users.sourceforge.net>
parents:
4088
diff
changeset
|
934 cl.request.wfile = output |
|
6441ffe588f7
fix bug introduced into CSV export and view (issue 2550529)
Richard Jones <richard@users.sourceforge.net>
parents:
4088
diff
changeset
|
935 self.assertRaises(exceptions.Unauthorised, |
|
6441ffe588f7
fix bug introduced into CSV export and view (issue 2550529)
Richard Jones <richard@users.sourceforge.net>
parents:
4088
diff
changeset
|
936 actions.ExportCSVAction(cl).handle) |
|
6441ffe588f7
fix bug introduced into CSV export and view (issue 2550529)
Richard Jones <richard@users.sourceforge.net>
parents:
4088
diff
changeset
|
937 |
|
6441ffe588f7
fix bug introduced into CSV export and view (issue 2550529)
Richard Jones <richard@users.sourceforge.net>
parents:
4088
diff
changeset
|
938 |
|
6441ffe588f7
fix bug introduced into CSV export and view (issue 2550529)
Richard Jones <richard@users.sourceforge.net>
parents:
4088
diff
changeset
|
939 def test_suite(): |
|
6441ffe588f7
fix bug introduced into CSV export and view (issue 2550529)
Richard Jones <richard@users.sourceforge.net>
parents:
4088
diff
changeset
|
940 suite = unittest.TestSuite() |
|
6441ffe588f7
fix bug introduced into CSV export and view (issue 2550529)
Richard Jones <richard@users.sourceforge.net>
parents:
4088
diff
changeset
|
941 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
1819
diff
changeset
|
942 def test_suite(): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
1819
diff
changeset
|
943 suite = unittest.TestSuite() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
1819
diff
changeset
|
944 suite.addTest(unittest.makeSuite(FormTestCase)) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
1819
diff
changeset
|
945 suite.addTest(unittest.makeSuite(MessageTestCase)) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
1819
diff
changeset
|
946 return suite |
|
1377
9ddb3ab23a3f
start of CGI form handling tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
947 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
1819
diff
changeset
|
948 if __name__ == '__main__': |
|
1425
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
949 runner = unittest.TextTestRunner() |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
950 unittest.main(testRunner=runner) |
|
58ce2c1614cd
new form handling complete
Richard Jones <richard@users.sourceforge.net>
parents:
1420
diff
changeset
|
951 |
|
2696
a5c5a1106e3b
init.initialize() was removed in [[CVS:1.30]] (27-jul-2004)
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2027
diff
changeset
|
952 # vim: set filetype=python sts=4 sw=4 et si : |
