Mercurial > p > roundup > code
comparison test/test_cgi.py @ 1420:3ac43c62a250
implemented extension to form parsing...
...to allow editing of multiple items and creation of multiple items
(but only one per class)
the colon ":" special form variable designator may now be any of : + @
| author | Richard Jones <richard@users.sourceforge.net> |
|---|---|
| date | Wed, 12 Feb 2003 06:41:58 +0000 |
| parents | 71928bf79302 |
| children | 58ce2c1614cd |
comparison
equal
deleted
inserted
replaced
| 1419:c717b8d63a7e | 1420:3ac43c62a250 |
|---|---|
| 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.6 2003-01-20 23:05:20 richard Exp $ | 11 # $Id: test_cgi.py,v 1.7 2003-02-12 06:41:58 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, hyperdb, date | 16 from roundup import init, instance, password, hyperdb, date |
| 21 if type(v) is type([]): | 21 if type(v) is type([]): |
| 22 [form.list.append(cgi.MiniFieldStorage(k, x)) for x in v] | 22 [form.list.append(cgi.MiniFieldStorage(k, x)) for x in v] |
| 23 else: | 23 else: |
| 24 form.list.append(cgi.MiniFieldStorage(k, v)) | 24 form.list.append(cgi.MiniFieldStorage(k, v)) |
| 25 return form | 25 return form |
| 26 | |
| 27 class config: | |
| 28 TRACKER_NAME = 'testing testing' | |
| 29 TRACKER_WEB = 'http://testing.testing/' | |
| 26 | 30 |
| 27 class FormTestCase(unittest.TestCase): | 31 class FormTestCase(unittest.TestCase): |
| 28 def setUp(self): | 32 def setUp(self): |
| 29 self.dirname = '_test_cgi_form' | 33 self.dirname = '_test_cgi_form' |
| 30 try: | 34 try: |
| 42 realname='Bork, Chef', roles='User') | 46 realname='Bork, Chef', roles='User') |
| 43 self.db.user.create(username='mary', address='mary@test', | 47 self.db.user.create(username='mary', address='mary@test', |
| 44 roles='User', realname='Contrary, Mary') | 48 roles='User', realname='Contrary, Mary') |
| 45 | 49 |
| 46 test = self.instance.dbinit.Class(self.db, "test", | 50 test = self.instance.dbinit.Class(self.db, "test", |
| 51 string=hyperdb.String(), | |
| 47 boolean=hyperdb.Boolean(), link=hyperdb.Link('test'), | 52 boolean=hyperdb.Boolean(), link=hyperdb.Link('test'), |
| 48 multilink=hyperdb.Multilink('test'), date=hyperdb.Date(), | 53 multilink=hyperdb.Multilink('test'), date=hyperdb.Date(), |
| 49 interval=hyperdb.Interval()) | 54 interval=hyperdb.Interval()) |
| 55 | |
| 56 def parseForm(self, form, classname='test', nodeid=None): | |
| 57 cl = client.Client(self.instance, None, {'PATH_INFO':'/'}, | |
| 58 makeForm(form)) | |
| 59 cl.classname = classname | |
| 60 cl.nodeid = nodeid | |
| 61 cl.db = self.db | |
| 62 return cl.parsePropsFromForm() | |
| 50 | 63 |
| 51 def tearDown(self): | 64 def tearDown(self): |
| 52 self.db.close() | 65 self.db.close() |
| 53 try: | 66 try: |
| 54 shutil.rmtree(self.dirname) | 67 shutil.rmtree(self.dirname) |
| 57 | 70 |
| 58 # | 71 # |
| 59 # Empty form | 72 # Empty form |
| 60 # | 73 # |
| 61 def testNothing(self): | 74 def testNothing(self): |
| 62 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, | 75 self.assertEqual(self.parseForm({}), {'test': {}}) |
| 63 makeForm({})), {}) | |
| 64 | 76 |
| 65 def testNothingWithRequired(self): | 77 def testNothingWithRequired(self): |
| 66 self.assertRaises(ValueError, client.parsePropsFromForm, self.db, | 78 self.assertRaises(ValueError, self.parseForm, {':required': 'string'}) |
| 67 self.db.issue, makeForm({':required': 'title'})) | 79 self.assertRaises(ValueError, self.parseForm, |
| 68 self.assertRaises(ValueError, client.parsePropsFromForm, self.db, | 80 {':required': 'title,status', 'status':'1'}, 'issue') |
| 69 self.db.issue, makeForm({':required': 'title,status', | 81 self.assertRaises(ValueError, self.parseForm, |
| 70 'status':'1'})) | 82 {':required': ['title','status'], 'status':'1'}, 'issue') |
| 71 self.assertRaises(ValueError, client.parsePropsFromForm, self.db, | 83 self.assertRaises(ValueError, self.parseForm, |
| 72 self.db.issue, makeForm({':required': ['title','status'], | 84 {':required': 'status', 'status':''}, 'issue') |
| 73 'status':'1'})) | 85 self.assertRaises(ValueError, self.parseForm, |
| 74 self.assertRaises(ValueError, client.parsePropsFromForm, self.db, | 86 {':required': 'nosy', 'nosy':''}, 'issue') |
| 75 self.db.issue, makeForm({':required': 'status', | |
| 76 'status':''})) | |
| 77 self.assertRaises(ValueError, client.parsePropsFromForm, self.db, | |
| 78 self.db.issue, makeForm({':required': 'nosy', | |
| 79 'nosy':''})) | |
| 80 | 87 |
| 81 # | 88 # |
| 82 # Nonexistant edit | 89 # Nonexistant edit |
| 83 # | 90 # |
| 84 def testEditNonexistant(self): | 91 def testEditNonexistant(self): |
| 85 self.assertRaises(IndexError, client.parsePropsFromForm, self.db, | 92 self.assertRaises(IndexError, self.parseForm, {'boolean': ''}, |
| 86 self.db.test, makeForm({'boolean': ''}), '1') | 93 'test', '1') |
| 87 | 94 |
| 88 # | 95 # |
| 89 # String | 96 # String |
| 90 # | 97 # |
| 91 def testEmptyString(self): | 98 def testEmptyString(self): |
| 92 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, | 99 self.assertEqual(self.parseForm({'string': ''}), {'test': {}}) |
| 93 makeForm({'title': ''})), {}) | 100 self.assertEqual(self.parseForm({'string': ' '}), {'test': {}}) |
| 94 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, | 101 self.assertRaises(ValueError, self.parseForm, {'string': ['', '']}) |
| 95 makeForm({'title': ' '})), {}) | |
| 96 self.assertRaises(ValueError, client.parsePropsFromForm, self.db, | |
| 97 self.db.issue, makeForm({'title': ['', '']})) | |
| 98 | 102 |
| 99 def testSetString(self): | 103 def testSetString(self): |
| 100 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, | 104 self.assertEqual(self.parseForm({'string': 'foo'}), |
| 101 makeForm({'title': 'foo'})), {'title': 'foo'}) | 105 {'test': {'string': 'foo'}}) |
| 102 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, | 106 self.assertEqual(self.parseForm({'string': 'a\r\nb\r\n'}), |
| 103 makeForm({'title': 'a\r\nb\r\n'})), {'title': 'a\nb'}) | 107 {'test': {'string': 'a\nb'}}) |
| 104 nodeid = self.db.issue.create(title='foo') | 108 nodeid = self.db.issue.create(title='foo') |
| 105 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, | 109 self.assertEqual(self.parseForm({'title': 'foo'}, 'issue', nodeid), |
| 106 makeForm({'title': 'foo'}), nodeid), {}) | 110 {'issue'+nodeid: {}}) |
| 107 | 111 |
| 108 def testEmptyStringSet(self): | 112 def testEmptyStringSet(self): |
| 109 nodeid = self.db.issue.create(title='foo') | 113 nodeid = self.db.issue.create(title='foo') |
| 110 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, | 114 self.assertEqual(self.parseForm({'title': ''}, 'issue', nodeid), |
| 111 makeForm({'title': ''}), nodeid), {'title': None}) | 115 {'issue'+nodeid: {'title': None}}) |
| 112 nodeid = self.db.issue.create(title='foo') | 116 nodeid = self.db.issue.create(title='foo') |
| 113 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, | 117 self.assertEqual(self.parseForm({'title': ' '}, 'issue', nodeid), |
| 114 makeForm({'title': ' '}), nodeid), {'title': None}) | 118 {'issue'+nodeid: {'title': None}}) |
| 115 | 119 |
| 116 # | 120 # |
| 117 # Link | 121 # Link |
| 118 # | 122 # |
| 119 def testEmptyLink(self): | 123 def testEmptyLink(self): |
| 120 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, | 124 self.assertEqual(self.parseForm({'link': ''}), {'test': {}}) |
| 121 makeForm({'status': ''})), {}) | 125 self.assertEqual(self.parseForm({'link': ' '}), {'test': {}}) |
| 122 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, | 126 self.assertRaises(ValueError, self.parseForm, {'link': ['', '']}) |
| 123 makeForm({'status': ' '})), {}) | 127 self.assertEqual(self.parseForm({'link': '-1'}), {'test': {}}) |
| 124 self.assertRaises(ValueError, client.parsePropsFromForm, self.db, | |
| 125 self.db.issue, makeForm({'status': ['', '']})) | |
| 126 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, | |
| 127 makeForm({'status': '-1'})), {}) | |
| 128 | 128 |
| 129 def testSetLink(self): | 129 def testSetLink(self): |
| 130 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, | 130 self.assertEqual(self.parseForm({'status': 'unread'}, 'issue'), |
| 131 makeForm({'status': 'unread'})), {'status': '1'}) | 131 {'issue': {'status': '1'}}) |
| 132 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, | 132 self.assertEqual(self.parseForm({'status': '1'}, 'issue'), |
| 133 makeForm({'status': '1'})), {'status': '1'}) | 133 {'issue': {'status': '1'}}) |
| 134 nodeid = self.db.issue.create(status='unread') | 134 nodeid = self.db.issue.create(status='unread') |
| 135 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, | 135 self.assertEqual(self.parseForm({'status': 'unread'}, 'issue', nodeid), |
| 136 makeForm({'status': 'unread'}), nodeid), {}) | 136 {'issue'+nodeid: {}}) |
| 137 | 137 |
| 138 def testUnsetLink(self): | 138 def testUnsetLink(self): |
| 139 nodeid = self.db.issue.create(status='unread') | 139 nodeid = self.db.issue.create(status='unread') |
| 140 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, | 140 self.assertEqual(self.parseForm({'status': '-1'}, 'issue', nodeid), |
| 141 makeForm({'status': '-1'}), nodeid), {'status': None}) | 141 {'issue'+nodeid: {'status': None}}) |
| 142 | 142 |
| 143 def testInvalidLinkValue(self): | 143 def testInvalidLinkValue(self): |
| 144 # XXX This is not the current behaviour - should we enforce this? | 144 # XXX This is not the current behaviour - should we enforce this? |
| 145 # self.assertRaises(IndexError, client.parsePropsFromForm, self.db, | 145 # self.assertRaises(IndexError, self.parseForm, |
| 146 # self.db.issue, makeForm({'status': '4'})) | 146 # {'status': '4'})) |
| 147 self.assertRaises(ValueError, client.parsePropsFromForm, self.db, | 147 self.assertRaises(ValueError, self.parseForm, {'link': 'frozzle'}) |
| 148 self.db.issue, makeForm({'status': 'frozzle'})) | 148 |
| 149 | 149 self.assertRaises(ValueError, self.parseForm, {'link': 'frozzle'}) |
| 150 self.assertRaises(ValueError, client.parsePropsFromForm, self.db, | |
| 151 self.db.test, makeForm({'link': 'frozzle'})) | |
| 152 | 150 |
| 153 # | 151 # |
| 154 # Multilink | 152 # Multilink |
| 155 # | 153 # |
| 156 def testEmptyMultilink(self): | 154 def testEmptyMultilink(self): |
| 157 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, | 155 self.assertEqual(self.parseForm({'nosy': ''}), {'test': {}}) |
| 158 makeForm({'nosy': ''})), {}) | 156 self.assertEqual(self.parseForm({'nosy': ' '}), {'test': {}}) |
| 159 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, | |
| 160 makeForm({'nosy': ' '})), {}) | |
| 161 | 157 |
| 162 def testSetMultilink(self): | 158 def testSetMultilink(self): |
| 163 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, | 159 self.assertEqual(self.parseForm({'nosy': '1'}, 'issue'), |
| 164 makeForm({'nosy': '1'})), {'nosy': ['1']}) | 160 {'issue': {'nosy': ['1']}}) |
| 165 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, | 161 self.assertEqual(self.parseForm({'nosy': 'admin'}, 'issue'), |
| 166 makeForm({'nosy': 'admin'})), {'nosy': ['1']}) | 162 {'issue': {'nosy': ['1']}}) |
| 167 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, | 163 self.assertEqual(self.parseForm({'nosy': ['1','2']}, 'issue'), |
| 168 makeForm({'nosy': ['1','2']})), {'nosy': ['1','2']}) | 164 {'issue': {'nosy': ['1','2']}}) |
| 169 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, | 165 self.assertEqual(self.parseForm({'nosy': '1,2'}, 'issue'), |
| 170 makeForm({'nosy': '1,2'})), {'nosy': ['1','2']}) | 166 {'issue': {'nosy': ['1','2']}}) |
| 171 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, | 167 self.assertEqual(self.parseForm({'nosy': 'admin,2'}, 'issue'), |
| 172 makeForm({'nosy': 'admin,2'})), {'nosy': ['1','2']}) | 168 {'issue': {'nosy': ['1','2']}}) |
| 173 | 169 |
| 174 def testEmptyMultilinkSet(self): | 170 def testEmptyMultilinkSet(self): |
| 175 nodeid = self.db.issue.create(nosy=['1','2']) | 171 nodeid = self.db.issue.create(nosy=['1','2']) |
| 176 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, | 172 self.assertEqual(self.parseForm({'nosy': ''}, 'issue', nodeid), |
| 177 makeForm({'nosy': ''}), nodeid), {'nosy': []}) | 173 {'issue'+nodeid: {'nosy': []}}) |
| 178 nodeid = self.db.issue.create(nosy=['1','2']) | 174 nodeid = self.db.issue.create(nosy=['1','2']) |
| 179 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, | 175 self.assertEqual(self.parseForm({'nosy': ' '}, 'issue', nodeid), |
| 180 makeForm({'nosy': ' '}), nodeid), {'nosy': []}) | 176 {'issue'+nodeid: {'nosy': []}}) |
| 181 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, | 177 self.assertEqual(self.parseForm({'nosy': '1,2'}, 'issue', nodeid), |
| 182 makeForm({'nosy': '1,2'}), nodeid), {}) | 178 {'issue'+nodeid: {}}) |
| 183 | 179 |
| 184 def testInvalidMultilinkValue(self): | 180 def testInvalidMultilinkValue(self): |
| 185 # XXX This is not the current behaviour - should we enforce this? | 181 # XXX This is not the current behaviour - should we enforce this? |
| 186 # self.assertRaises(IndexError, client.parsePropsFromForm, self.db, | 182 # self.assertRaises(IndexError, self.parseForm, |
| 187 # self.db.issue, makeForm({'nosy': '4'})) | 183 # {'nosy': '4'})) |
| 188 self.assertRaises(ValueError, client.parsePropsFromForm, self.db, | 184 self.assertRaises(ValueError, self.parseForm, {'nosy': 'frozzle'}, |
| 189 self.db.issue, makeForm({'nosy': 'frozzle'})) | 185 'issue') |
| 190 self.assertRaises(ValueError, client.parsePropsFromForm, self.db, | 186 self.assertRaises(ValueError, self.parseForm, {'nosy': '1,frozzle'}, |
| 191 self.db.issue, makeForm({'nosy': '1,frozzle'})) | 187 'issue') |
| 192 | 188 self.assertRaises(ValueError, self.parseForm, {'multilink': 'frozzle'}) |
| 193 self.assertRaises(ValueError, client.parsePropsFromForm, self.db, | |
| 194 self.db.test, makeForm({'multilink': 'frozzle'})) | |
| 195 | 189 |
| 196 def testMultilinkAdd(self): | 190 def testMultilinkAdd(self): |
| 197 nodeid = self.db.issue.create(nosy=['1']) | 191 nodeid = self.db.issue.create(nosy=['1']) |
| 198 # do nothing | 192 # do nothing |
| 199 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, | 193 self.assertEqual(self.parseForm({':add:nosy': ''}, 'issue', nodeid), |
| 200 makeForm({':add:nosy': ''}), nodeid), {}) | 194 {'issue'+nodeid: {}}) |
| 201 | 195 |
| 202 # do something ;) | 196 # do something ;) |
| 203 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, | 197 self.assertEqual(self.parseForm({':add:nosy': '2'}, 'issue', nodeid), |
| 204 makeForm({':add:nosy': '2'}), nodeid), {'nosy': ['1','2']}) | 198 {'issue'+nodeid: {'nosy': ['1','2']}}) |
| 205 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, | 199 self.assertEqual(self.parseForm({':add:nosy': '2,mary'}, 'issue', |
| 206 makeForm({':add:nosy': '2,mary'}), nodeid), {'nosy': ['1','2','4']}) | 200 nodeid), {'issue'+nodeid: {'nosy': ['1','2','4']}}) |
| 207 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, | 201 self.assertEqual(self.parseForm({':add:nosy': ['2','3']}, 'issue', |
| 208 makeForm({':add:nosy': ['2','3']}), nodeid), {'nosy': ['1','2','3']}) | 202 nodeid), {'issue'+nodeid: {'nosy': ['1','2','3']}}) |
| 209 | 203 |
| 210 def testMultilinkAddNew(self): | 204 def testMultilinkAddNew(self): |
| 211 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, | 205 self.assertEqual(self.parseForm({':add:nosy': ['2','3']}, 'issue'), |
| 212 makeForm({':add:nosy': ['2','3']})), {'nosy': ['2','3']}) | 206 {'issue': {'nosy': ['2','3']}}) |
| 213 | 207 |
| 214 def testMultilinkRemove(self): | 208 def testMultilinkRemove(self): |
| 215 nodeid = self.db.issue.create(nosy=['1','2']) | 209 nodeid = self.db.issue.create(nosy=['1','2']) |
| 216 # do nothing | 210 # do nothing |
| 217 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, | 211 self.assertEqual(self.parseForm({':remove:nosy': ''}, 'issue', nodeid), |
| 218 makeForm({':remove:nosy': ''}), nodeid), {}) | 212 {'issue'+nodeid: {}}) |
| 219 | 213 |
| 220 # do something ;) | 214 # do something ;) |
| 221 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, | 215 self.assertEqual(self.parseForm({':remove:nosy': '1'}, 'issue', |
| 222 makeForm({':remove:nosy': '1'}), nodeid), {'nosy': ['2']}) | 216 nodeid), {'issue'+nodeid: {'nosy': ['2']}}) |
| 223 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, | 217 self.assertEqual(self.parseForm({':remove:nosy': 'admin,2'}, |
| 224 makeForm({':remove:nosy': 'admin,2'}), nodeid), {'nosy': []}) | 218 'issue', nodeid), {'issue'+nodeid: {'nosy': []}}) |
| 225 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, | 219 self.assertEqual(self.parseForm({':remove:nosy': ['1','2']}, |
| 226 makeForm({':remove:nosy': ['1','2']}), nodeid), {'nosy': []}) | 220 'issue', nodeid), {'issue'+nodeid: {'nosy': []}}) |
| 227 | 221 |
| 228 # remove one that doesn't exist? | 222 # remove one that doesn't exist? |
| 229 self.assertRaises(ValueError, client.parsePropsFromForm, self.db, | 223 self.assertRaises(ValueError, self.parseForm, {':remove:nosy': '4'}, |
| 230 self.db.issue, makeForm({':remove:nosy': '4'}), nodeid) | 224 'issue', nodeid) |
| 231 | 225 |
| 232 def testMultilinkRetired(self): | 226 def testMultilinkRetired(self): |
| 233 self.db.user.retire('2') | 227 self.db.user.retire('2') |
| 234 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, | 228 self.assertEqual(self.parseForm({'nosy': ['2','3']}, 'issue'), |
| 235 makeForm({'nosy': ['2','3']})), {'nosy': ['2','3']}) | 229 {'issue': {'nosy': ['2','3']}}) |
| 236 nodeid = self.db.issue.create(nosy=['1','2']) | 230 nodeid = self.db.issue.create(nosy=['1','2']) |
| 237 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, | 231 self.assertEqual(self.parseForm({':remove:nosy': '2'}, 'issue', |
| 238 makeForm({':remove:nosy': '2'}), nodeid), {'nosy': ['1']}) | 232 nodeid), {'issue'+nodeid: {'nosy': ['1']}}) |
| 239 self.assertEqual(client.parsePropsFromForm(self.db, self.db.issue, | 233 self.assertEqual(self.parseForm({':add:nosy': '3'}, 'issue', nodeid), |
| 240 makeForm({':add:nosy': '3'}), nodeid), {'nosy': ['1','2','3']}) | 234 {'issue'+nodeid: {'nosy': ['1','2','3']}}) |
| 241 | 235 |
| 242 def testAddRemoveNonexistant(self): | 236 def testAddRemoveNonexistant(self): |
| 243 self.assertRaises(ValueError, client.parsePropsFromForm, self.db, | 237 self.assertRaises(ValueError, self.parseForm, {':remove:foo': '2'}, |
| 244 self.db.issue, makeForm({':remove:foo': '2'})) | 238 'issue') |
| 245 self.assertRaises(ValueError, client.parsePropsFromForm, self.db, | 239 self.assertRaises(ValueError, self.parseForm, {':add:foo': '2'}, |
| 246 self.db.issue, makeForm({':add:foo': '2'})) | 240 'issue') |
| 247 | 241 |
| 248 # | 242 # |
| 249 # Password | 243 # Password |
| 250 # | 244 # |
| 251 def testEmptyPassword(self): | 245 def testEmptyPassword(self): |
| 252 self.assertEqual(client.parsePropsFromForm(self.db, self.db.user, | 246 self.assertEqual(self.parseForm({'password': ''}, 'user'), |
| 253 makeForm({'password': ''})), {}) | 247 {'user': {}}) |
| 254 self.assertEqual(client.parsePropsFromForm(self.db, self.db.user, | 248 self.assertEqual(self.parseForm({'password': ''}, 'user'), |
| 255 makeForm({'password': ''})), {}) | 249 {'user': {}}) |
| 256 self.assertRaises(ValueError, client.parsePropsFromForm, self.db, | 250 self.assertRaises(ValueError, self.parseForm, {'password': ['', '']}, |
| 257 self.db.user, makeForm({'password': ['', '']})) | 251 'user') |
| 258 self.assertRaises(ValueError, client.parsePropsFromForm, self.db, | 252 self.assertRaises(ValueError, self.parseForm, {'password': 'foo', |
| 259 self.db.user, makeForm({'password': 'foo', | 253 'password:confirm': ['', '']}, 'user') |
| 260 'password:confirm': ['', '']})) | |
| 261 | 254 |
| 262 def testSetPassword(self): | 255 def testSetPassword(self): |
| 263 self.assertEqual(client.parsePropsFromForm(self.db, self.db.user, | 256 self.assertEqual(self.parseForm({'password': 'foo', |
| 264 makeForm({'password': 'foo', 'password:confirm': 'foo'})), | 257 'password:confirm': 'foo'}, 'user'), {'user': {'password': 'foo'}}) |
| 265 {'password': 'foo'}) | |
| 266 | 258 |
| 267 def testSetPasswordConfirmBad(self): | 259 def testSetPasswordConfirmBad(self): |
| 268 self.assertRaises(ValueError, client.parsePropsFromForm, self.db, | 260 self.assertRaises(ValueError, self.parseForm, {'password': 'foo'}, |
| 269 self.db.user, makeForm({'password': 'foo'})) | 261 'user') |
| 270 self.assertRaises(ValueError, client.parsePropsFromForm, self.db, | 262 self.assertRaises(ValueError, self.parseForm, {'password': 'foo', |
| 271 self.db.user, makeForm({'password': 'foo', | 263 'password:confirm': 'bar'}, 'user') |
| 272 'password:confirm': 'bar'})) | |
| 273 | 264 |
| 274 def testEmptyPasswordNotSet(self): | 265 def testEmptyPasswordNotSet(self): |
| 275 nodeid = self.db.user.create(username='1', | 266 nodeid = self.db.user.create(username='1', |
| 276 password=password.Password('foo')) | 267 password=password.Password('foo')) |
| 277 self.assertEqual(client.parsePropsFromForm(self.db, self.db.user, | 268 self.assertEqual(self.parseForm({'password': ''}, 'user', nodeid), |
| 278 makeForm({'password': ''}), nodeid), {}) | 269 {'user'+nodeid: {}}) |
| 279 nodeid = self.db.user.create(username='2', | 270 nodeid = self.db.user.create(username='2', |
| 280 password=password.Password('foo')) | 271 password=password.Password('foo')) |
| 281 self.assertEqual(client.parsePropsFromForm(self.db, self.db.user, | 272 self.assertEqual(self.parseForm({'password': '', |
| 282 makeForm({'password': '', 'password:confirm': ''}), nodeid), {}) | 273 'password:confirm': ''}, 'user', nodeid), |
| 274 {'user'+nodeid: {}}) | |
| 283 | 275 |
| 284 # | 276 # |
| 285 # Boolean | 277 # Boolean |
| 286 # | 278 # |
| 287 def testEmptyBoolean(self): | 279 def testEmptyBoolean(self): |
| 288 self.assertEqual(client.parsePropsFromForm(self.db, self.db.test, | 280 self.assertEqual(self.parseForm({'boolean': ''}), {'test': {}}) |
| 289 makeForm({'boolean': ''})), {}) | 281 self.assertEqual(self.parseForm({'boolean': ' '}), {'test': {}}) |
| 290 self.assertEqual(client.parsePropsFromForm(self.db, self.db.test, | 282 self.assertRaises(ValueError, self.parseForm, {'boolean': ['', '']}) |
| 291 makeForm({'boolean': ' '})), {}) | |
| 292 self.assertRaises(ValueError, client.parsePropsFromForm, self.db, | |
| 293 self.db.test, makeForm({'boolean': ['', '']})) | |
| 294 | 283 |
| 295 def testSetBoolean(self): | 284 def testSetBoolean(self): |
| 296 self.assertEqual(client.parsePropsFromForm(self.db, self.db.test, | 285 self.assertEqual(self.parseForm({'boolean': 'yes'}), |
| 297 makeForm({'boolean': 'yes'})), {'boolean': 1}) | 286 {'test': {'boolean': 1}}) |
| 298 self.assertEqual(client.parsePropsFromForm(self.db, self.db.test, | 287 self.assertEqual(self.parseForm({'boolean': 'a\r\nb\r\n'}), |
| 299 makeForm({'boolean': 'a\r\nb\r\n'})), {'boolean': 0}) | 288 {'test': {'boolean': 0}}) |
| 300 nodeid = self.db.test.create(boolean=1) | 289 nodeid = self.db.test.create(boolean=1) |
| 301 self.assertEqual(client.parsePropsFromForm(self.db, self.db.test, | 290 self.assertEqual(self.parseForm({'boolean': 'yes'}, 'test', nodeid), |
| 302 makeForm({'boolean': 'yes'}), nodeid), {}) | 291 {'test'+nodeid: {}}) |
| 303 nodeid = self.db.test.create(boolean=0) | 292 nodeid = self.db.test.create(boolean=0) |
| 304 self.assertEqual(client.parsePropsFromForm(self.db, self.db.test, | 293 self.assertEqual(self.parseForm({'boolean': 'no'}, 'test', nodeid), |
| 305 makeForm({'boolean': 'no'}), nodeid), {}) | 294 {'test'+nodeid: {}}) |
| 306 | 295 |
| 307 def testEmptyBooleanSet(self): | 296 def testEmptyBooleanSet(self): |
| 308 nodeid = self.db.test.create(boolean=0) | 297 nodeid = self.db.test.create(boolean=0) |
| 309 self.assertEqual(client.parsePropsFromForm(self.db, self.db.test, | 298 self.assertEqual(self.parseForm({'boolean': ''}, 'test', nodeid), |
| 310 makeForm({'boolean': ''}), nodeid), {'boolean': None}) | 299 {'test'+nodeid: {'boolean': None}}) |
| 311 nodeid = self.db.test.create(boolean=1) | 300 nodeid = self.db.test.create(boolean=1) |
| 312 self.assertEqual(client.parsePropsFromForm(self.db, self.db.test, | 301 self.assertEqual(self.parseForm({'boolean': ' '}, 'test', nodeid), |
| 313 makeForm({'boolean': ' '}), nodeid), {'boolean': None}) | 302 {'test'+nodeid: {'boolean': None}}) |
| 314 | 303 |
| 315 # | 304 # |
| 316 # Date | 305 # Date |
| 317 # | 306 # |
| 318 def testEmptyDate(self): | 307 def testEmptyDate(self): |
| 319 self.assertEqual(client.parsePropsFromForm(self.db, self.db.test, | 308 self.assertEqual(self.parseForm({'date': ''}), {'test': {}}) |
| 320 makeForm({'date': ''})), {}) | 309 self.assertEqual(self.parseForm({'date': ' '}), {'test': {}}) |
| 321 self.assertEqual(client.parsePropsFromForm(self.db, self.db.test, | 310 self.assertRaises(ValueError, self.parseForm, {'date': ['', '']}) |
| 322 makeForm({'date': ' '})), {}) | |
| 323 self.assertRaises(ValueError, client.parsePropsFromForm, self.db, | |
| 324 self.db.test, makeForm({'date': ['', '']})) | |
| 325 | 311 |
| 326 def testSetDate(self): | 312 def testSetDate(self): |
| 327 self.assertEqual(client.parsePropsFromForm(self.db, self.db.test, | 313 self.assertEqual(self.parseForm({'date': '2003-01-01'}), |
| 328 makeForm({'date': '2003-01-01'})), | 314 {'test': {'date': date.Date('2003-01-01')}}) |
| 329 {'date': date.Date('2003-01-01')}) | |
| 330 nodeid = self.db.test.create(date=date.Date('2003-01-01')) | 315 nodeid = self.db.test.create(date=date.Date('2003-01-01')) |
| 331 self.assertEqual(client.parsePropsFromForm(self.db, self.db.test, | 316 self.assertEqual(self.parseForm({'date': '2003-01-01'}, 'test', |
| 332 makeForm({'date': '2003-01-01'}), nodeid), {}) | 317 nodeid), {'test'+nodeid: {}}) |
| 333 | 318 |
| 334 def testEmptyDateSet(self): | 319 def testEmptyDateSet(self): |
| 335 nodeid = self.db.test.create(date=date.Date('.')) | 320 nodeid = self.db.test.create(date=date.Date('.')) |
| 336 self.assertEqual(client.parsePropsFromForm(self.db, self.db.test, | 321 self.assertEqual(self.parseForm({'date': ''}, 'test', nodeid), |
| 337 makeForm({'date': ''}), nodeid), {'date': None}) | 322 {'test'+nodeid: {'date': None}}) |
| 338 nodeid = self.db.test.create(date=date.Date('1970-01-01.00:00:00')) | 323 nodeid = self.db.test.create(date=date.Date('1970-01-01.00:00:00')) |
| 339 self.assertEqual(client.parsePropsFromForm(self.db, self.db.test, | 324 self.assertEqual(self.parseForm({'date': ' '}, 'test', nodeid), |
| 340 makeForm({'date': ' '}), nodeid), {'date': None}) | 325 {'test'+nodeid: {'date': None}}) |
| 326 | |
| 327 # | |
| 328 # Test multiple items in form | |
| 329 # | |
| 330 def testMultiple(self): | |
| 331 self.assertEqual(self.parseForm({'string': 'a', 'issue@title': 'b'}), | |
| 332 {'test': {'string': 'a'}, 'issue': {'title': 'b'}}) | |
| 333 nodeid = self.db.test.create() | |
| 334 self.assertEqual(self.parseForm({'string': 'a', 'issue@title': 'b'}, | |
| 335 'test', nodeid), | |
| 336 {'test1': {'string': 'a'}, 'issue': {'title': 'b'}}) | |
| 341 | 337 |
| 342 def suite(): | 338 def suite(): |
| 343 l = [unittest.makeSuite(FormTestCase), | 339 l = [unittest.makeSuite(FormTestCase), |
| 344 ] | 340 ] |
| 345 return unittest.TestSuite(l) | 341 return unittest.TestSuite(l) |
