comparison test/test_actions.py @ 6684:9ca5cbffa0c4

Switch off using blank passwords for login There is now a config.ini setting [web] login_empty_passwords to enable logins for users without a password set. By default it's off and every user must have a password.
author John Rouillard <rouilj@ieee.org>
date Mon, 23 May 2022 17:31:50 -0400
parents 8269e89530e5
children 273c8c2b5042
comparison
equal deleted inserted replaced
6683:12c5ddf865b1 6684:9ca5cbffa0c4
25 self.client.db.Otk = MockNull() 25 self.client.db.Otk = MockNull()
26 self.client.db.Otk.data = {} 26 self.client.db.Otk.data = {}
27 self.client.db.Otk.getall = self.data_get 27 self.client.db.Otk.getall = self.data_get
28 self.client.db.Otk.set = self.data_set 28 self.client.db.Otk.set = self.data_set
29 self.client.db.config.WEB_LOGIN_ATTEMPTS_MIN = 20 29 self.client.db.config.WEB_LOGIN_ATTEMPTS_MIN = 20
30 self.client.db.config.WEB_LOGIN_EMPTY_PASSWORDS = 0
30 self.client._ok_message = [] 31 self.client._ok_message = []
31 self.client._error_message = [] 32 self.client._error_message = []
32 self.client.add_error_message = lambda x, escape=True: add_message( 33 self.client.add_error_message = lambda x, escape=True: add_message(
33 self.client._error_message, x, escape=escape) 34 self.client._error_message, x, escape=escape)
34 self.client.add_ok_message = lambda x : add_message( 35 self.client.add_ok_message = lambda x : add_message(
369 self.assertEqual(username, 'foo') 370 self.assertEqual(username, 'foo')
370 self.client.opendb = opendb 371 self.client.opendb = opendb
371 372
372 self.assertLoginLeavesMessages([], 'foo', 'right') 373 self.assertLoginLeavesMessages([], 'foo', 'right')
373 374
375 def testBlankPasswordLogin(self):
376 self.client.db.security.hasPermission = lambda *args, **kwargs: True
377
378 self.client.db.user.get = lambda a,b: None
379
380 def opendb(username):
381 self.assertEqual(username, 'blank')
382 self.client.opendb = opendb
383
384 self.assertEqual(self.client.db.config.WEB_LOGIN_EMPTY_PASSWORDS, 0)
385 self.assertLoginLeavesMessages(['Invalid login'], 'blank', '' )
386
387 self.client.db.config.WEB_LOGIN_EMPTY_PASSWORDS = 1
388 self.form.value[:] = [] # reset form
389 self.client._error_message = [] # reset errors
390 self.assertLoginLeavesMessages([], 'blank', '' )
391
392 # reset
393 self.client.db.user.get = lambda a,b: 'right'
394 self.client.db.config.WEB_LOGIN_EMPTY_PASSWORDS = 0
395
374 def testCorrectLoginRedirect(self): 396 def testCorrectLoginRedirect(self):
375 self.client.db.security.hasPermission = lambda *args, **kwargs: True 397 self.client.db.security.hasPermission = lambda *args, **kwargs: True
376 def opendb(username): 398 def opendb(username):
377 self.assertEqual(username, 'foo') 399 self.assertEqual(username, 'foo')
378 self.client.opendb = opendb 400 self.client.opendb = opendb
429 Default limit is 3/min, but that means we sleep for 20 451 Default limit is 3/min, but that means we sleep for 20
430 seconds so I override the default limit to speed this up. 452 seconds so I override the default limit to speed this up.
431 ''' 453 '''
432 # Do the first login setting an invalid login name 454 # Do the first login setting an invalid login name
433 self.assertLoginLeavesMessages(['Invalid login'], 'nouser') 455 self.assertLoginLeavesMessages(['Invalid login'], 'nouser')
434 # use up the rest of the 20 login attempts 456 # use up the rest of the 20 login attempts. Login name
457 # persists.
435 for i in range(19): 458 for i in range(19):
436 self.client._error_message = [] 459 self.client._error_message = []
437 self.assertLoginLeavesMessages(['Invalid login']) 460 self.assertLoginLeavesMessages(['Invalid login'])
438 461
439 self.assertRaisesMessage(Reject, LoginAction(self.client).handle, 462 self.assertRaisesMessage(Reject, LoginAction(self.client).handle,

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