480 # self.execute('INSERT CWUser X: X login "badaboum", X upassword %(pwd)s, ' |
480 # self.execute('INSERT CWUser X: X login "badaboum", X upassword %(pwd)s, ' |
481 # 'X in_state S, X in_group G WHERE S name "deactivated", G name "users"', {'pwd': 'oops'}) |
481 # 'X in_state S, X in_group G WHERE S name "deactivated", G name "users"', {'pwd': 'oops'}) |
482 # self.commit() |
482 # self.commit() |
483 |
483 |
484 # test that the workflow is correctly enforced |
484 # test that the workflow is correctly enforced |
|
485 |
|
486 def _cleanup_msg(self, msg): |
|
487 """remove the variable part of one specific error message""" |
|
488 lmsg = msg.split() |
|
489 lmsg.pop(1) |
|
490 lmsg.pop() |
|
491 return ' '.join(lmsg) |
|
492 |
485 def test_transition_checking1(self): |
493 def test_transition_checking1(self): |
486 cnx = self.login('stduser') |
494 cnx = self.login('stduser') |
487 user = cnx.user(self.session) |
495 user = cnx.user(self.session) |
488 ex = self.assertRaises(ValidationError, |
496 ex = self.assertRaises(ValidationError, |
489 user.fire_transition, 'activate') |
497 user.fire_transition, 'activate') |
490 self.assertEquals(ex.errors, {'by_transition': u"transition isn't allowed"}) |
498 self.assertEquals(self._cleanup_msg(ex.errors['by_transition']), |
|
499 u"transition isn't allowed from") |
491 cnx.close() |
500 cnx.close() |
492 |
501 |
493 def test_transition_checking2(self): |
502 def test_transition_checking2(self): |
494 cnx = self.login('stduser') |
503 cnx = self.login('stduser') |
495 user = cnx.user(self.session) |
504 user = cnx.user(self.session) |
496 ex = self.assertRaises(ValidationError, |
505 ex = self.assertRaises(ValidationError, |
497 user.fire_transition, 'dummy') |
506 user.fire_transition, 'dummy') |
498 self.assertEquals(ex.errors, {'by_transition': u"transition isn't allowed"}) |
507 self.assertEquals(self._cleanup_msg(ex.errors['by_transition']), |
|
508 u"transition isn't allowed from") |
499 cnx.close() |
509 cnx.close() |
500 |
510 |
501 def test_transition_checking3(self): |
511 def test_transition_checking3(self): |
502 cnx = self.login('stduser') |
512 cnx = self.login('stduser') |
503 session = self.session |
513 session = self.session |
505 user.fire_transition('deactivate') |
515 user.fire_transition('deactivate') |
506 cnx.commit() |
516 cnx.commit() |
507 session.set_pool() |
517 session.set_pool() |
508 ex = self.assertRaises(ValidationError, |
518 ex = self.assertRaises(ValidationError, |
509 user.fire_transition, 'deactivate') |
519 user.fire_transition, 'deactivate') |
510 self.assertEquals(ex.errors, {'by_transition': u"transition isn't allowed"}) |
520 self.assertEquals(self._cleanup_msg(ex.errors['by_transition']), |
|
521 u"transition isn't allowed from") |
511 # get back now |
522 # get back now |
512 user.fire_transition('activate') |
523 user.fire_transition('activate') |
513 cnx.commit() |
524 cnx.commit() |
514 cnx.close() |
525 cnx.close() |
515 |
526 |