def test_22_deprecated(self): def getdep(ctx, category=None): return [ name for name in ctx.schemes() if ctx.handler(name, category).deprecated ] cc = CryptContext(deprecated=['md5_crypt']) cc.update(schemes=['md5_crypt', 'des_crypt']) self.assertEqual(getdep(cc), ['md5_crypt']) cc = CryptContext(deprecated=['md5_crypt'], schemes=['md5_crypt', 'des_crypt']) self.assertEqual(getdep(cc), ['md5_crypt']) self.assertRaises(TypeError, CryptContext, deprecated=[hash.md5_crypt], schemes=[ 'md5_crypt', 'des_crypt']) cc = CryptContext(deprecated='md5_crypt,des_crypt', schemes=['md5_crypt', 'des_crypt', 'sha256_crypt']) self.assertEqual(getdep(cc), ['md5_crypt', 'des_crypt']) self.assertRaises(KeyError, CryptContext, schemes=['des_crypt'], deprecated=[ 'md5_crypt']) self.assertRaises(ValueError, CryptContext, schemes=[ 'des_crypt'], deprecated=[ 'des_crypt']) self.assertRaises(ValueError, CryptContext, schemes=[ 'des_crypt', 'md5_crypt'], admin__context__deprecated=[ 'des_crypt', 'md5_crypt']) self.assertRaises(ValueError, CryptContext, schemes=[ 'des_crypt', 'md5_crypt'], default='md5_crypt', deprecated='md5_crypt') self.assertRaises(ValueError, CryptContext, schemes=[ 'des_crypt', 'md5_crypt'], default='md5_crypt', admin__context__deprecated='md5_crypt') self.assertRaises(ValueError, CryptContext, schemes=[ 'des_crypt', 'md5_crypt'], admin__context__default='md5_crypt', deprecated='md5_crypt') self.assertRaises(ValueError, CryptContext, schemes=[ 'des_crypt', 'md5_crypt'], admin__context__default='md5_crypt', admin__context__deprecated='md5_crypt') CryptContext(schemes=[ 'des_crypt', 'md5_crypt'], deprecated='md5_crypt', admin__context__default='md5_crypt', admin__context__deprecated=[]) self.assertRaises(TypeError, CryptContext, deprecated=123) cc = CryptContext(deprecated=['md5_crypt'], schemes=[ 'md5_crypt', 'des_crypt'], admin__context__deprecated=[ 'des_crypt']) self.assertEqual(getdep(cc), ['md5_crypt']) self.assertEqual(getdep(cc, 'user'), ['md5_crypt']) self.assertEqual(getdep(cc, 'admin'), ['des_crypt']) cc = CryptContext(deprecated=['md5_crypt'], schemes=[ 'md5_crypt', 'des_crypt'], admin__context__deprecated=[]) self.assertEqual(getdep(cc), ['md5_crypt']) self.assertEqual(getdep(cc, 'user'), ['md5_crypt']) self.assertEqual(getdep(cc, 'admin'), []) return
def test_23_default(self): self.assertEqual(CryptContext(default='md5_crypt').to_dict(), dict(default='md5_crypt')) ctx = CryptContext(default='md5_crypt', schemes=['des_crypt', 'md5_crypt']) self.assertEqual(ctx.default_scheme(), 'md5_crypt') ctx = CryptContext(default=hash.md5_crypt, schemes=['des_crypt', 'md5_crypt']) self.assertEqual(ctx.default_scheme(), 'md5_crypt') ctx = CryptContext(schemes=['des_crypt', 'md5_crypt']) self.assertEqual(ctx.default_scheme(), 'des_crypt') ctx.update(deprecated='des_crypt') self.assertEqual(ctx.default_scheme(), 'md5_crypt') self.assertRaises(KeyError, CryptContext, schemes=['des_crypt'], default='md5_crypt') self.assertRaises(TypeError, CryptContext, default=1) ctx = CryptContext(default='des_crypt', schemes=[ 'des_crypt', 'md5_crypt'], admin__context__default='md5_crypt') self.assertEqual(ctx.default_scheme(), 'des_crypt') self.assertEqual(ctx.default_scheme('user'), 'des_crypt') self.assertEqual(ctx.default_scheme('admin'), 'md5_crypt')
def test_12_update(self): ctx = CryptContext(**self.sample_1_dict) ctx.update() self.assertEqual(ctx.to_dict(), self.sample_1_dict) ctx = CryptContext(**self.sample_1_dict) ctx.update(**self.sample_2_dict) self.assertEqual(ctx.to_dict(), self.sample_12_dict) ctx.update(**self.sample_3_dict) self.assertEqual(ctx.to_dict(), self.sample_123_dict) ctx = CryptContext(**self.sample_1_dict) ctx.update(self.sample_2_dict) self.assertEqual(ctx.to_dict(), self.sample_12_dict) ctx = CryptContext(**self.sample_1_dict) ctx.update(self.sample_2_unicode) self.assertEqual(ctx.to_dict(), self.sample_12_dict) self.assertRaises(TypeError, ctx.update, {}, {}) self.assertRaises(TypeError, ctx.update, {}, schemes=['des_crypt']) self.assertRaises(TypeError, ctx.update, None) return
def test_61_autodeprecate(self): def getstate(ctx, category=None): return [ ctx.handler(scheme, category).deprecated for scheme in ctx.schemes() ] ctx = CryptContext('sha256_crypt,md5_crypt,des_crypt', deprecated='auto') self.assertEqual(getstate(ctx, None), [False, True, True]) self.assertEqual(getstate(ctx, 'admin'), [False, True, True]) ctx.update(default='md5_crypt') self.assertEqual(getstate(ctx, None), [True, False, True]) self.assertEqual(getstate(ctx, 'admin'), [True, False, True]) ctx.update(admin__context__default='des_crypt') self.assertEqual(getstate(ctx, None), [True, False, True]) self.assertEqual(getstate(ctx, 'admin'), [True, True, False]) ctx = CryptContext(['sha256_crypt'], deprecated='auto') self.assertEqual(getstate(ctx, None), [False]) self.assertEqual(getstate(ctx, 'admin'), [False]) self.assertRaises(ValueError, CryptContext, 'sha256_crypt,md5_crypt', deprecated='auto,md5_crypt') self.assertRaises(ValueError, CryptContext, 'sha256_crypt,md5_crypt', deprecated='md5_crypt,auto') return