def test_47_verify_and_update(self): cc = CryptContext(**self.sample_4_dict) h1 = cc.handler('des_crypt').hash('password') h2 = cc.handler('sha256_crypt').hash('password') ok, new_hash = cc.verify_and_update('wrongpass', h1) self.assertFalse(ok) self.assertIs(new_hash, None) ok, new_hash = cc.verify_and_update('wrongpass', h2) self.assertFalse(ok) self.assertIs(new_hash, None) ok, new_hash = cc.verify_and_update('password', h1) self.assertTrue(ok) self.assertTrue(cc.identify(new_hash), 'sha256_crypt') ok, new_hash = cc.verify_and_update('password', h2) self.assertTrue(ok) self.assertIs(new_hash, None) cc = CryptContext(['des_crypt']) hash = refhash = cc.hash('stub') for secret, kwds in self.nonstring_vectors: self.assertRaises(TypeError, cc.verify_and_update, secret, hash, **kwds) self.assertEqual(cc.verify_and_update(secret, None), (False, None)) cc = CryptContext(['des_crypt']) for hash, kwds in self.nonstring_vectors: if hash is None: continue self.assertRaises(TypeError, cc.verify_and_update, 'secret', hash, **kwds) self.assertRaises(KeyError, CryptContext().verify_and_update, 'secret', 'hash') self.assertRaises(KeyError, cc.verify_and_update, 'secret', refhash, scheme='fake') self.assertRaises(TypeError, cc.verify_and_update, 'secret', refhash, scheme=1) self.assertRaises(TypeError, cc.verify_and_update, 'secret', refhash, category=1) return
def test_32_handler(self): ctx = CryptContext() self.assertRaises(KeyError, ctx.handler) self.assertRaises(KeyError, ctx.handler, 'md5_crypt') ctx = CryptContext(**self.sample_1_dict) self.assertEqual(ctx.handler(unconfigured=True), hash.md5_crypt) self.assertHandlerDerivedFrom(ctx.handler(), hash.md5_crypt) self.assertEqual(ctx.handler('des_crypt', unconfigured=True), hash.des_crypt) self.assertHandlerDerivedFrom(ctx.handler('des_crypt'), hash.des_crypt) self.assertRaises(KeyError, ctx.handler, 'mysql323') ctx = CryptContext('sha256_crypt,md5_crypt', admin__context__default='md5_crypt') self.assertEqual(ctx.handler(unconfigured=True), hash.sha256_crypt) self.assertHandlerDerivedFrom(ctx.handler(), hash.sha256_crypt) self.assertEqual(ctx.handler(category='staff', unconfigured=True), hash.sha256_crypt) self.assertHandlerDerivedFrom(ctx.handler(category='staff'), hash.sha256_crypt) self.assertEqual(ctx.handler(category='admin', unconfigured=True), hash.md5_crypt) self.assertHandlerDerivedFrom(ctx.handler(category='staff'), hash.sha256_crypt) if PY2: self.assertEqual(ctx.handler(category=u('staff'), unconfigured=True), hash.sha256_crypt) self.assertEqual(ctx.handler(category=u('admin'), unconfigured=True), hash.md5_crypt)