45 self.failUnless('users' in self.schema.eschema('CWGroup').get_groups('read')) |
45 self.failUnless('users' in self.schema.eschema('CWGroup').get_groups('read')) |
46 |
46 |
47 def test_noparam_edit(self): |
47 def test_noparam_edit(self): |
48 """check behaviour of this controller without any form parameter |
48 """check behaviour of this controller without any form parameter |
49 """ |
49 """ |
50 ex = self.assertRaises(ValidationError, self.ctrl_publish, self.request()) |
50 with self.assertRaises(ValidationError) as cm: |
51 self.assertEqual(ex.errors, {None: u'no selected entities'}) |
51 self.ctrl_publish(self.request()) |
|
52 self.assertEqual(cm.exception.errors, {None: u'no selected entities'}) |
52 |
53 |
53 def test_validation_unique(self): |
54 def test_validation_unique(self): |
54 """test creation of two linked entities |
55 """test creation of two linked entities |
55 """ |
56 """ |
56 user = self.user() |
57 user = self.user() |
59 '_cw_edited_fields:X': 'login-subject,upassword-subject', |
60 '_cw_edited_fields:X': 'login-subject,upassword-subject', |
60 'login-subject:X': u'admin', |
61 'login-subject:X': u'admin', |
61 'upassword-subject:X': u'toto', |
62 'upassword-subject:X': u'toto', |
62 'upassword-subject-confirm:X': u'toto', |
63 'upassword-subject-confirm:X': u'toto', |
63 } |
64 } |
64 ex = self.assertRaises(ValidationError, self.ctrl_publish, req) |
65 with self.assertRaises(ValidationError) as cm: |
65 self.assertEqual(ex.errors, {'login-subject': 'the value "admin" is already used, use another one'}) |
66 self.ctrl_publish(req) |
|
67 self.assertEqual(cm.exception.errors, {'login-subject': 'the value "admin" is already used, use another one'}) |
66 |
68 |
67 def test_user_editing_itself(self): |
69 def test_user_editing_itself(self): |
68 """checking that a manager user can edit itself |
70 """checking that a manager user can edit itself |
69 """ |
71 """ |
70 user = self.user() |
72 user = self.user() |
203 '__cloned_eid:X': u(user.eid), '__type:X': 'CWUser', |
205 '__cloned_eid:X': u(user.eid), '__type:X': 'CWUser', |
204 '_cw_edited_fields:X': 'login-subject,upassword-subject', |
206 '_cw_edited_fields:X': 'login-subject,upassword-subject', |
205 'login-subject:X': u'toto', |
207 'login-subject:X': u'toto', |
206 'upassword-subject:X': u'toto', |
208 'upassword-subject:X': u'toto', |
207 } |
209 } |
208 ex = self.assertRaises(ValidationError, self.ctrl_publish, req) |
210 with self.assertRaises(ValidationError) as cm: |
209 self.assertEqual(ex.errors, {'upassword-subject': u'password and confirmation don\'t match'}) |
211 self.ctrl_publish(req) |
|
212 self.assertEqual(cm.exception.errors, {'upassword-subject': u'password and confirmation don\'t match'}) |
210 req = self.request() |
213 req = self.request() |
211 req.form = {'__cloned_eid:X': u(user.eid), |
214 req.form = {'__cloned_eid:X': u(user.eid), |
212 'eid': 'X', '__type:X': 'CWUser', |
215 'eid': 'X', '__type:X': 'CWUser', |
213 '_cw_edited_fields:X': 'login-subject,upassword-subject', |
216 '_cw_edited_fields:X': 'login-subject,upassword-subject', |
214 'login-subject:X': u'toto', |
217 'login-subject:X': u'toto', |
215 'upassword-subject:X': u'toto', |
218 'upassword-subject:X': u'toto', |
216 'upassword-subject-confirm:X': u'tutu', |
219 'upassword-subject-confirm:X': u'tutu', |
217 } |
220 } |
218 ex = self.assertRaises(ValidationError, self.ctrl_publish, req) |
221 with self.assertRaises(ValidationError) as cm: |
219 self.assertEqual(ex.errors, {'upassword-subject': u'password and confirmation don\'t match'}) |
222 self.ctrl_publish(req) |
|
223 self.assertEqual(cm.exception.errors, {'upassword-subject': u'password and confirmation don\'t match'}) |
220 |
224 |
221 |
225 |
222 def test_interval_bound_constraint_success(self): |
226 def test_interval_bound_constraint_success(self): |
223 feid = self.execute('INSERT File X: X data_name "toto.txt", X data %(data)s', |
227 feid = self.execute('INSERT File X: X data_name "toto.txt", X data %(data)s', |
224 {'data': Binary('yo')})[0][0] |
228 {'data': Binary('yo')})[0][0] |
228 '__type:X': 'Salesterm', |
232 '__type:X': 'Salesterm', |
229 '_cw_edited_fields:X': 'amount-subject,described_by_test-subject', |
233 '_cw_edited_fields:X': 'amount-subject,described_by_test-subject', |
230 'amount-subject:X': u'-10', |
234 'amount-subject:X': u'-10', |
231 'described_by_test-subject:X': u(feid), |
235 'described_by_test-subject:X': u(feid), |
232 } |
236 } |
233 ex = self.assertRaises(ValidationError, self.ctrl_publish, req) |
237 with self.assertRaises(ValidationError) as cm: |
234 self.assertEqual(ex.errors, {'amount-subject': 'value must be >= 0'}) |
238 self.ctrl_publish(req) |
|
239 self.assertEqual(cm.exception.errors, {'amount-subject': 'value must be >= 0'}) |
235 req = self.request(rollbackfirst=True) |
240 req = self.request(rollbackfirst=True) |
236 req.form = {'eid': ['X'], |
241 req.form = {'eid': ['X'], |
237 '__type:X': 'Salesterm', |
242 '__type:X': 'Salesterm', |
238 '_cw_edited_fields:X': 'amount-subject,described_by_test-subject', |
243 '_cw_edited_fields:X': 'amount-subject,described_by_test-subject', |
239 'amount-subject:X': u'110', |
244 'amount-subject:X': u'110', |
240 'described_by_test-subject:X': u(feid), |
245 'described_by_test-subject:X': u(feid), |
241 } |
246 } |
242 ex = self.assertRaises(ValidationError, self.ctrl_publish, req) |
247 with self.assertRaises(ValidationError) as cm: |
243 self.assertEqual(ex.errors, {'amount-subject': 'value must be <= 100'}) |
248 self.ctrl_publish(req) |
|
249 self.assertEqual(cm.exception.errors, {'amount-subject': 'value must be <= 100'}) |
244 req = self.request(rollbackfirst=True) |
250 req = self.request(rollbackfirst=True) |
245 req.form = {'eid': ['X'], |
251 req.form = {'eid': ['X'], |
246 '__type:X': 'Salesterm', |
252 '__type:X': 'Salesterm', |
247 '_cw_edited_fields:X': 'amount-subject,described_by_test-subject', |
253 '_cw_edited_fields:X': 'amount-subject,described_by_test-subject', |
248 'amount-subject:X': u'10', |
254 'amount-subject:X': u'10', |
419 '_cw_edited_fields:Y': 'address-subject,alias-subject,use_email-object', |
425 '_cw_edited_fields:Y': 'address-subject,alias-subject,use_email-object', |
420 'address-subject:Y': u'', |
426 'address-subject:Y': u'', |
421 'alias-subject:Y': u'', |
427 'alias-subject:Y': u'', |
422 'use_email-object:Y': 'X', |
428 'use_email-object:Y': 'X', |
423 } |
429 } |
424 ex = self.assertRaises(ValidationError, self.ctrl_publish, req) |
430 with self.assertRaises(ValidationError) as cm: |
425 self.assertEqual(ex.errors, {'address-subject': u'required field'}) |
431 self.ctrl_publish(req) |
|
432 self.assertEqual(cm.exception.errors, {'address-subject': u'required field'}) |
426 |
433 |
427 def test_nonregr_copy(self): |
434 def test_nonregr_copy(self): |
428 user = self.user() |
435 user = self.user() |
429 req = self.request() |
436 req = self.request() |
430 req.form = {'__maineid' : 'X', 'eid': 'X', |
437 req.form = {'__maineid' : 'X', 'eid': 'X', |