diff test/test_actions.py @ 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 f8dafdd91bf5
children e665582ec099
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 :

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