Skip to content

Commit 615ded3

Browse files
author
Alexander Smishlajev
committed
applied patch [SF#1067690];
wrap long lines, add vim modeline, fix ShowActionTestCase.assertRaisesMessage()
1 parent 11d9852 commit 615ded3

File tree

1 file changed

+62
-8
lines changed

1 file changed

+62
-8
lines changed

test/test_actions.py

Lines changed: 62 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,10 @@ def assertRaisesMessage(self, exception, callable, message, *args,
3434
except exception, msg:
3535
self.assertEqual(str(msg), message)
3636
else:
37-
if hasattr(excClass,'__name__'):
38-
excName = excClass.__name__
37+
if hasattr(exception, '__name__'):
38+
excName = exception.__name__
3939
else:
40-
excName = str(excClass)
40+
excName = str(exception)
4141
raise self.failureException, excName
4242

4343
def testShowAction(self):
@@ -98,7 +98,8 @@ def testQueryName(self):
9898
class FakeFilterVarsTestCase(SearchActionTestCase):
9999
def setUp(self):
100100
SearchActionTestCase.setUp(self)
101-
self.client.db.classes.getprops = lambda: {'foo': hyperdb.Multilink('foo')}
101+
self.client.db.classes.getprops = lambda: {'foo':
102+
hyperdb.Multilink('foo')}
102103

103104
def assertFilterEquals(self, expected):
104105
self.action.fakeFilterVars()
@@ -136,7 +137,8 @@ def testTokenizedStringKey(self):
136137
self.assertFilterEquals('foo')
137138

138139
# The single value gets replaced with the tokenized list.
139-
self.assertEqual([x.value for x in self.form['foo']], ['hello', 'world'])
140+
self.assertEqual([x.value for x in self.form['foo']],
141+
['hello', 'world'])
140142

141143
class CollisionDetectionTestCase(ActionTestCase):
142144
def setUp(self):
@@ -149,7 +151,8 @@ def setUp(self):
149151
def testLastUserActivity(self):
150152
self.assertEqual(self.action.lastUserActivity(), None)
151153

152-
self.client.form.value.append(MiniFieldStorage('@lastactivity', str(self.now)))
154+
self.client.form.value.append(
155+
MiniFieldStorage('@lastactivity', str(self.now)))
153156
self.assertEqual(self.action.lastUserActivity(), self.now)
154157

155158
def testLastNodeActivity(self):
@@ -165,20 +168,71 @@ def get(nodeid, propname):
165168
self.assertEqual(self.action.lastNodeActivity(), self.now)
166169

167170
def testCollision(self):
168-
self.failUnless(self.action.detectCollision(self.now, self.now + Interval("1d")))
169-
self.failIf(self.action.detectCollision(self.now, self.now - Interval("1d")))
171+
self.failUnless(self.action.detectCollision(
172+
self.now, self.now + Interval("1d")))
173+
self.failIf(self.action.detectCollision(
174+
self.now, self.now - Interval("1d")))
170175
self.failIf(self.action.detectCollision(None, self.now))
171176

177+
class LoginTestCase(ActionTestCase):
178+
def setUp(self):
179+
ActionTestCase.setUp(self)
180+
self.client.error_message = []
181+
182+
# set the db password to 'right'
183+
self.client.db.user.get = lambda a,b: 'right'
184+
185+
# unless explicitly overridden, we should never get here
186+
self.client.opendb = lambda a: self.fail(
187+
"Logged in, but we shouldn't be.")
188+
189+
def assertLoginLeavesMessages(self, messages, username=None, password=None):
190+
if username is not None:
191+
self.form.value.append(MiniFieldStorage('__login_name', username))
192+
if password is not None:
193+
self.form.value.append(
194+
MiniFieldStorage('__login_password', password))
195+
196+
LoginAction(self.client).handle()
197+
self.assertEqual(self.client.error_message, messages)
198+
199+
def testNoUsername(self):
200+
self.assertLoginLeavesMessages(['Username required'])
201+
202+
def testInvalidUsername(self):
203+
def raiseKeyError(a):
204+
raise KeyError
205+
self.client.db.user.lookup = raiseKeyError
206+
self.assertLoginLeavesMessages(['Invalid login'], 'foo')
207+
208+
def testInvalidPassword(self):
209+
self.assertLoginLeavesMessages(['Invalid login'], 'foo', 'wrong')
210+
211+
def testNoWebAccess(self):
212+
self.assertLoginLeavesMessages(['You do not have permission to login'],
213+
'foo', 'right')
214+
215+
def testCorrectLogin(self):
216+
self.client.db.security.hasPermission = lambda a,b,c: True
217+
218+
def opendb(username):
219+
self.assertEqual(username, 'foo')
220+
self.client.opendb = opendb
221+
222+
self.assertLoginLeavesMessages([], 'foo', 'right')
223+
172224
def test_suite():
173225
suite = unittest.TestSuite()
174226
suite.addTest(unittest.makeSuite(RetireActionTestCase))
175227
suite.addTest(unittest.makeSuite(StandardSearchActionTestCase))
176228
suite.addTest(unittest.makeSuite(FakeFilterVarsTestCase))
177229
suite.addTest(unittest.makeSuite(ShowActionTestCase))
178230
suite.addTest(unittest.makeSuite(CollisionDetectionTestCase))
231+
suite.addTest(unittest.makeSuite(LoginTestCase))
179232
return suite
180233

181234
if __name__ == '__main__':
182235
runner = unittest.TextTestRunner()
183236
unittest.main(testRunner=runner)
184237

238+
# vim: set et sts=4 sw=4 :

0 commit comments

Comments
 (0)