def hashPass(plainPass, username): #hash password through sha512 with 1 million rounds. #static salt of 20 random characters, dynamic salt of the username staticSalt = "r!6bCZ&2e7a28d6dfE0c" shaHasher = Hashing() h = shaHasher.hash_value(plainPass, salt=username+staticSalt) return h
class MyTest(unittest.TestCase): def setUp(self): self.app = Flask(__name__) self.app.config['HASHING_METHOD'] = 'sha256' self.h = Hashing(self.app) def test_hash_capability(self): val = 'somethingsecret' salt = 'abcd' valhash = self.h.hash_value(val, salt) self.assertTrue(self.h.check_value(valhash, val, salt)) self.assertFalse(self.h.check_value(valhash, val, 'efgh')) self.assertFalse(self.h.check_value(valhash, val+'poop', salt)) def test_multiple_rounds(self): self.app.config['HASHING_ROUNDS'] = 5 self.h = Hashing(self.app) self.test_hash_capability() def test_different_algorithm(self): self.app.config['HASHING_METHOD'] = 'md5' self.h = Hashing(self.app) self.test_hash_capability() def test_rounds_not_int(self): self.app.config['HASHING_ROUNDS'] = 'notanint' self.assertRaises(TypeError, Hashing().init_app, self.app) self.app.config['HASHING_ROUNDS'] = 1 def test_algorithm_not_valid(self): self.app.config['HASHING_METHOD'] = 'notahashalgorithm' self.assertRaises(ValueError, Hashing().init_app, self.app)