Mercurial > p > roundup > code
changeset 2930:4b5d7b4bc089
applied patch [SF#1067690];
wrap long lines, add vim modeline,
fix ShowActionTestCase.assertRaisesMessage()
| author | Alexander Smishlajev <a1s@users.sourceforge.net> |
|---|---|
| date | Thu, 18 Nov 2004 16:33:08 +0000 |
| parents | 7a8a02646d4e |
| children | e943b83e3e77 |
| files | test/test_actions.py |
| diffstat | 1 files changed, 62 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/test/test_actions.py Thu Nov 18 16:23:58 2004 +0000 +++ b/test/test_actions.py Thu Nov 18 16:33:08 2004 +0000 @@ -34,10 +34,10 @@ except exception, msg: self.assertEqual(str(msg), message) else: - if hasattr(excClass,'__name__'): - excName = excClass.__name__ + if hasattr(exception, '__name__'): + excName = exception.__name__ else: - excName = str(excClass) + excName = str(exception) raise self.failureException, excName def testShowAction(self): @@ -98,7 +98,8 @@ class FakeFilterVarsTestCase(SearchActionTestCase): def setUp(self): SearchActionTestCase.setUp(self) - self.client.db.classes.getprops = lambda: {'foo': hyperdb.Multilink('foo')} + self.client.db.classes.getprops = lambda: {'foo': + hyperdb.Multilink('foo')} def assertFilterEquals(self, expected): self.action.fakeFilterVars() @@ -136,7 +137,8 @@ self.assertFilterEquals('foo') # The single value gets replaced with the tokenized list. - self.assertEqual([x.value for x in self.form['foo']], ['hello', 'world']) + self.assertEqual([x.value for x in self.form['foo']], + ['hello', 'world']) class CollisionDetectionTestCase(ActionTestCase): def setUp(self): @@ -149,7 +151,8 @@ def testLastUserActivity(self): self.assertEqual(self.action.lastUserActivity(), None) - self.client.form.value.append(MiniFieldStorage('@lastactivity', str(self.now))) + self.client.form.value.append( + MiniFieldStorage('@lastactivity', str(self.now))) self.assertEqual(self.action.lastUserActivity(), self.now) def testLastNodeActivity(self): @@ -165,10 +168,59 @@ self.assertEqual(self.action.lastNodeActivity(), self.now) def testCollision(self): - self.failUnless(self.action.detectCollision(self.now, self.now + Interval("1d"))) - self.failIf(self.action.detectCollision(self.now, self.now - Interval("1d"))) + self.failUnless(self.action.detectCollision( + self.now, self.now + Interval("1d"))) + self.failIf(self.action.detectCollision( + self.now, self.now - Interval("1d"))) self.failIf(self.action.detectCollision(None, self.now)) +class LoginTestCase(ActionTestCase): + def setUp(self): + ActionTestCase.setUp(self) + self.client.error_message = [] + + # set the db password to 'right' + self.client.db.user.get = lambda a,b: 'right' + + # unless explicitly overridden, we should never get here + self.client.opendb = lambda a: self.fail( + "Logged in, but we shouldn't be.") + + def assertLoginLeavesMessages(self, messages, username=None, password=None): + if username is not None: + self.form.value.append(MiniFieldStorage('__login_name', username)) + if password is not None: + self.form.value.append( + MiniFieldStorage('__login_password', password)) + + LoginAction(self.client).handle() + self.assertEqual(self.client.error_message, messages) + + def testNoUsername(self): + self.assertLoginLeavesMessages(['Username required']) + + def testInvalidUsername(self): + def raiseKeyError(a): + raise KeyError + self.client.db.user.lookup = raiseKeyError + self.assertLoginLeavesMessages(['Invalid login'], 'foo') + + def testInvalidPassword(self): + self.assertLoginLeavesMessages(['Invalid login'], 'foo', 'wrong') + + def testNoWebAccess(self): + self.assertLoginLeavesMessages(['You do not have permission to login'], + 'foo', 'right') + + def testCorrectLogin(self): + self.client.db.security.hasPermission = lambda a,b,c: True + + def opendb(username): + self.assertEqual(username, 'foo') + self.client.opendb = opendb + + self.assertLoginLeavesMessages([], 'foo', 'right') + def test_suite(): suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(RetireActionTestCase)) @@ -176,9 +228,11 @@ suite.addTest(unittest.makeSuite(FakeFilterVarsTestCase)) suite.addTest(unittest.makeSuite(ShowActionTestCase)) suite.addTest(unittest.makeSuite(CollisionDetectionTestCase)) + suite.addTest(unittest.makeSuite(LoginTestCase)) return suite if __name__ == '__main__': runner = unittest.TextTestRunner() unittest.main(testRunner=runner) +# vim: set et sts=4 sw=4 :
