comparison roundup/password.py @ 7185:8e8d111fcdcd

Make in file tests work again. Also allow manual testing without overriding PBKDF rounds
author John Rouillard <rouilj@ieee.org>
date Sun, 26 Feb 2023 23:38:06 -0500
parents 8b2287d850c8
children da751d3a2138
comparison
equal deleted inserted replaced
7184:8b2287d850c8 7185:8e8d111fcdcd
419 if self.password is None: 419 if self.password is None:
420 raise ValueError('Password not set') 420 raise ValueError('Password not set')
421 return '{%s}%s' % (self.scheme, self.password) 421 return '{%s}%s' % (self.scheme, self.password)
422 422
423 423
424 def test_missing_crypt(): 424 def test_missing_crypt(config=None):
425 p = encodePassword('sekrit', 'crypt') # noqa: F841 - test only 425 p = encodePassword('sekrit', 'crypt') # noqa: F841 - test only
426 426
427 427
428 def test(): 428 def test(config=None):
429 # SHA 429 # SHA
430 p = Password('sekrit') 430 p = Password('sekrit', config=config)
431 assert Password(encrypted=str(p)) == 'sekrit' 431 assert Password(encrypted=str(p)) == 'sekrit'
432 assert 'sekrit' == Password(encrypted=str(p)) 432 assert 'sekrit' == Password(encrypted=str(p))
433 assert p == 'sekrit' 433 assert p == 'sekrit'
434 assert p != 'not sekrit' 434 assert p != 'not sekrit'
435 assert 'sekrit' == p 435 assert 'sekrit' == p
436 assert 'not sekrit' != p 436 assert 'not sekrit' != p
437 437
438 # MD5 438 # MD5
439 p = Password('sekrit', 'MD5') 439 p = Password('sekrit', 'MD5', config=config)
440 assert Password(encrypted=str(p)) == 'sekrit' 440 assert Password(encrypted=str(p)) == 'sekrit'
441 assert 'sekrit' == Password(encrypted=str(p)) 441 assert 'sekrit' == Password(encrypted=str(p))
442 assert p == 'sekrit' 442 assert p == 'sekrit'
443 assert p != 'not sekrit' 443 assert p != 'not sekrit'
444 assert 'sekrit' == p 444 assert 'sekrit' == p
445 assert 'not sekrit' != p 445 assert 'not sekrit' != p
446 446
447 # crypt 447 # crypt
448 if crypt: # not available on Windows 448 if crypt: # not available on Windows
449 p = Password('sekrit', 'crypt') 449 p = Password('sekrit', 'crypt', config=config)
450 assert Password(encrypted=str(p)) == 'sekrit' 450 assert Password(encrypted=str(p)) == 'sekrit'
451 assert 'sekrit' == Password(encrypted=str(p)) 451 assert 'sekrit' == Password(encrypted=str(p))
452 assert p == 'sekrit' 452 assert p == 'sekrit'
453 assert p != 'not sekrit' 453 assert p != 'not sekrit'
454 assert 'sekrit' == p 454 assert 'sekrit' == p
455 assert 'not sekrit' != p 455 assert 'not sekrit' != p
456 456
457 # SSHA 457 # SSHA
458 p = Password('sekrit', 'SSHA') 458 p = Password('sekrit', 'SSHA', config=config)
459 assert Password(encrypted=str(p)) == 'sekrit' 459 assert Password(encrypted=str(p)) == 'sekrit'
460 assert 'sekrit' == Password(encrypted=str(p)) 460 assert 'sekrit' == Password(encrypted=str(p))
461 assert p == 'sekrit' 461 assert p == 'sekrit'
462 assert p != 'not sekrit' 462 assert p != 'not sekrit'
463 assert 'sekrit' == p 463 assert 'sekrit' == p
471 # PBKDF2 - hash function 471 # PBKDF2 - hash function
472 h = "5000$7BvbBq.EZzz/O0HuwX3iP.nAG3s$g3oPnFFaga2BJaX5PoPRljl4XIE" 472 h = "5000$7BvbBq.EZzz/O0HuwX3iP.nAG3s$g3oPnFFaga2BJaX5PoPRljl4XIE"
473 assert encodePassword("sekrit", "PBKDF2", h) == h 473 assert encodePassword("sekrit", "PBKDF2", h) == h
474 474
475 # PBKDF2 - high level integration 475 # PBKDF2 - high level integration
476 p = Password('sekrit', 'PBKDF2') 476 p = Password('sekrit', 'PBKDF2', config=config)
477 assert Password(encrypted=str(p)) == 'sekrit' 477 assert Password(encrypted=str(p)) == 'sekrit'
478 assert 'sekrit' == Password(encrypted=str(p)) 478 assert 'sekrit' == Password(encrypted=str(p))
479 assert p == 'sekrit' 479 assert p == 'sekrit'
480 assert p != 'not sekrit' 480 assert p != 'not sekrit'
481 assert 'sekrit' == p 481 assert 'sekrit' == p
482 assert 'not sekrit' != p 482 assert 'not sekrit' != p
483 483
484 484
485 if __name__ == '__main__': 485 if __name__ == '__main__':
486 test() 486 from roundup.configuration import CoreConfig
487 test_missing_crypt() 487 test(CoreConfig())
488 crypt = None
489 exception = None
490 try:
491 test_missing_crypt(CoreConfig())
492 except PasswordValueError as e:
493 exception = e
494 assert exception != None
495 assert exception.__str__() == "Unsupported encryption scheme 'crypt'"
488 496
489 # vim: set filetype=python sts=4 sw=4 et si : 497 # vim: set filetype=python sts=4 sw=4 et si :

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