示例#1
0
    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
示例#2
0
 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)