comparison test/test_cgi.py @ 1381:944bd3c6d365

more cgi form parsing tests, and a fix for an outstanding couple of bugs
author Richard Jones <richard@users.sourceforge.net>
date Wed, 15 Jan 2003 11:07:45 +0000
parents 4ce6820c18fa
children 87143c3d7156
comparison
equal deleted inserted replaced
1380:4ce6820c18fa 1381:944bd3c6d365
6 # 6 #
7 # This module is distributed in the hope that it will be useful, 7 # This module is distributed in the hope that it will be useful,
8 # but WITHOUT ANY WARRANTY; without even the implied warranty of 8 # but WITHOUT ANY WARRANTY; without even the implied warranty of
9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10 # 10 #
11 # $Id: test_cgi.py,v 1.2 2003-01-14 22:21:35 richard Exp $ 11 # $Id: test_cgi.py,v 1.3 2003-01-15 11:07:45 richard Exp $
12 12
13 import unittest, os, shutil, errno, sys, difflib, cgi 13 import unittest, os, shutil, errno, sys, difflib, cgi
14 14
15 from roundup.cgi import client 15 from roundup.cgi import client
16 from roundup import init, instance, password 16 from roundup import init, instance, password
68 def testEmptyString(self): 68 def testEmptyString(self):
69 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, 69 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue,
70 makeForm({'title': ''})), {}) 70 makeForm({'title': ''})), {})
71 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, 71 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue,
72 makeForm({'title': ' '})), {}) 72 makeForm({'title': ' '})), {})
73 self.assertRaises(ValueError, client.parsePropsFromForm, self.db,
74 self.db.issue, makeForm({'title': ['', '']}))
73 75
74 def testSetString(self): 76 def testSetString(self):
75 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, 77 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue,
76 makeForm({'title': 'foo'})), {'title': 'foo'}) 78 makeForm({'title': 'foo'})), {'title': 'foo'})
77 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, 79 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue,
96 98
97 def testSetMultilink(self): 99 def testSetMultilink(self):
98 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, 100 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue,
99 makeForm({'nosy': '1'})), {'nosy': ['1']}) 101 makeForm({'nosy': '1'})), {'nosy': ['1']})
100 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, 102 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue,
103 makeForm({'nosy': 'admin'})), {'nosy': ['1']})
104 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue,
101 makeForm({'nosy': ['1','2']})), {'nosy': ['1','2']}) 105 makeForm({'nosy': ['1','2']})), {'nosy': ['1','2']})
102 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, 106 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue,
103 makeForm({'nosy': '1,2'})), {'nosy': ['1','2']}) 107 makeForm({'nosy': '1,2'})), {'nosy': ['1','2']})
108 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue,
109 makeForm({'nosy': 'admin,2'})), {'nosy': ['1','2']})
104 110
105 def testEmptyMultilinkSet(self): 111 def testEmptyMultilinkSet(self):
106 nodeid = self.db.issue.create(nosy=['1','2']) 112 nodeid = self.db.issue.create(nosy=['1','2'])
107 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, 113 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue,
108 makeForm({'nosy': ''}), nodeid), {'nosy': []}) 114 makeForm({'nosy': ''}), nodeid), {'nosy': []})
109 nodeid = self.db.issue.create(nosy=['1','2']) 115 nodeid = self.db.issue.create(nosy=['1','2'])
110 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, 116 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue,
111 makeForm({'nosy': ' '}), nodeid), {'nosy': []}) 117 makeForm({'nosy': ' '}), nodeid), {'nosy': []})
112 118
119 def testInvalidMultilinkValue(self):
120 # XXX This is not the current behaviour - should we enforce this?
121 # self.assertRaises(IndexError, client.parsePropsFromForm, self.db,
122 # self.db.issue, makeForm({'nosy': '4'}))
123 self.assertRaises(ValueError, client.parsePropsFromForm, self.db,
124 self.db.issue, makeForm({'nosy': 'frozzle'}))
125 self.assertRaises(ValueError, client.parsePropsFromForm, self.db,
126 self.db.issue, makeForm({'nosy': '1,frozzle'}))
127 # XXX need a test for the TypeError (where the ML class doesn't define a key
128
129 def testMultilinkAdd(self):
130 nodeid = self.db.issue.create(nosy=['1'])
131 # do nothing
132 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue,
133 makeForm({':add:nosy': ''}), nodeid), {})
134
135 # do something ;)
136 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue,
137 makeForm({':add:nosy': '2'}), nodeid), {'nosy': ['1','2']})
138 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue,
139 makeForm({':add:nosy': '2,mary'}), nodeid), {'nosy': ['1','2','4']})
140 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue,
141 makeForm({':add:nosy': ['2','3']}), nodeid), {'nosy': ['1','2','3']})
142
143 def testMultilinkRemove(self):
144 nodeid = self.db.issue.create(nosy=['1','2'])
145 # do nothing
146 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue,
147 makeForm({':remove:nosy': ''}), nodeid), {})
148
149 # do something ;)
150 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue,
151 makeForm({':remove:nosy': '1'}), nodeid), {'nosy': ['2']})
152 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue,
153 makeForm({':remove:nosy': 'admin,2'}), nodeid), {'nosy': []})
154 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue,
155 makeForm({':remove:nosy': ['1','2']}), nodeid), {'nosy': []})
156
157 # remove one that doesn't exist?
158 self.assertRaises(ValueError, client.parsePropsFromForm, self.db,
159 self.db.issue, makeForm({':remove:nosy': '4'}), nodeid)
160
113 # 161 #
114 # Password 162 # Password
115 # 163 #
116 def testEmptyPassword(self): 164 def testEmptyPassword(self):
117 self.assertEqual(client.parsePropsFromForm(self.db, self.db.user, 165 self.assertEqual(client.parsePropsFromForm(self.db, self.db.user,
118 makeForm({'password': ''})), {}) 166 makeForm({'password': ''})), {})
119 self.assertEqual(client.parsePropsFromForm(self.db, self.db.user, 167 self.assertEqual(client.parsePropsFromForm(self.db, self.db.user,
120 makeForm({'password': ''})), {}) 168 makeForm({'password': ''})), {})
169 self.assertRaises(ValueError, client.parsePropsFromForm, self.db,
170 self.db.user, makeForm({'password': ['', '']}))
171 self.assertRaises(ValueError, client.parsePropsFromForm, self.db,
172 self.db.user, makeForm({'password': 'foo',
173 'password:confirm': ['', '']}))
121 174
122 def testSetPassword(self): 175 def testSetPassword(self):
123 self.assertEqual(client.parsePropsFromForm(self.db, self.db.user, 176 self.assertEqual(client.parsePropsFromForm(self.db, self.db.user,
124 makeForm({'password': 'foo', 'password:confirm': 'foo'})), 177 makeForm({'password': 'foo', 'password:confirm': 'foo'})),
125 {'password': 'foo'}) 178 {'password': 'foo'})

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