def test_b64s_decode(self):
"""b64s_decode()"""
from passlib.utils.binary import b64s_decode
# accept bytes or unicode
self.assertEqual(b64s_decode(b"abc"), hb("69b7"))
self.assertEqual(b64s_decode(u("abc")), hb("69b7"))
# reject non-ascii unicode
self.assertRaises(ValueError, b64s_decode, u("ab\xff"))
# underlying a2b_ascii treats non-base64 chars as "Incorrect padding"
self.assertRaises(TypeError, b64s_decode, b"ab\xff")
self.assertRaises(TypeError, b64s_decode, b"ab!")
self.assertRaises(TypeError, b64s_decode, u("ab!"))
# insert correct padding, handle dirty padding bits
self.assertEqual(b64s_decode(b"abcd"), hb("69b71d")) # 0 mod 4
self.assertRaises(ValueError, b64s_decode, b"abcde") # 1 mod 4
self.assertEqual(b64s_decode(b"abcdef"), hb("69b71d79")) # 2 mod 4, dirty padding bits
self.assertEqual(b64s_decode(b"abcdeQ"), hb("69b71d79")) # 2 mod 4, clean padding bits
self.assertEqual(b64s_decode(b"abcdefg"), hb("69b71d79f8")) # 3 mod 4, clean padding bits
评论列表
文章目录