| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 89cb8aa commit 1be80be
1 file changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -200,18 +200,6 @@ def test_b64decode(self): | |||
| 200 | 200 | self.check_other_types(base64.b64decode, b"YWJj", b"abc") | |
| 201 | 201 | self.check_decode_type_errors(base64.b64decode) | |
| 202 | 202 | ||
| 203 | - # Test with arbitrary alternative characters | ||
| 204 | - tests_altchars = {(b'01a*b$cd', b'*$'): b'\xd3V\xbeo\xf7\x1d', | ||
| 205 | - } | ||
| 206 | - for (data, altchars), res in tests_altchars.items(): | ||
| 207 | - data_str = data.decode('ascii') | ||
| 208 | - altchars_str = altchars.decode('ascii') | ||
| 209 | - | ||
| 210 | - eq(base64.b64decode(data, altchars=altchars), res) | ||
| 211 | - eq(base64.b64decode(data_str, altchars=altchars), res) | ||
| 212 | - eq(base64.b64decode(data, altchars=altchars_str), res) | ||
| 213 | - eq(base64.b64decode(data_str, altchars=altchars_str), res) | ||
| 214 | - | ||
| 215 | 203 | # Test standard alphabet | |
| 216 | 204 | for data, res in tests.items(): | |
| 217 | 205 | eq(base64.standard_b64decode(data), res) | |
@@ -232,6 +220,20 @@ def test_b64decode(self): | |||
| 232 | 220 | b'\xd3V\xbeo\xf7\x1d') | |
| 233 | 221 | self.check_decode_type_errors(base64.urlsafe_b64decode) | |
| 234 | 222 | ||
| 223 | + def test_b64decode_altchars(self): | ||
| 224 | + # Test with arbitrary alternative characters | ||
| 225 | + eq = self.assertEqual | ||
| 226 | + res = b'\xd3V\xbeo\xf7\x1d' | ||
| 227 | + for altchars in b'*$', b'+/', b'/+', b'+_', b'-+', b'-/', b'/_': | ||
| 228 | + data = b'01a%cb%ccd' % tuple(altchars) | ||
| 229 | + data_str = data.decode('ascii') | ||
| 230 | + altchars_str = altchars.decode('ascii') | ||
| 231 | + | ||
| 232 | + eq(base64.b64decode(data, altchars=altchars), res) | ||
| 233 | + eq(base64.b64decode(data_str, altchars=altchars), res) | ||
| 234 | + eq(base64.b64decode(data, altchars=altchars_str), res) | ||
| 235 | + eq(base64.b64decode(data_str, altchars=altchars_str), res) | ||
| 236 | + | ||
| 235 | 237 | def test_b64decode_padding_error(self): | |
| 236 | 238 | self.assertRaises(binascii.Error, base64.b64decode, b'abc') | |
| 237 | 239 | self.assertRaises(binascii.Error, base64.b64decode, 'abc') | |
@@ -264,9 +266,12 @@ def test_b64decode_invalid_chars(self): | |||
| 264 | 266 | base64.b64decode(bstr.decode('ascii'), validate=True) | |
| 265 | 267 | ||
| 266 | 268 | # Normal alphabet characters not discarded when alternative given | |
| 267 | - res = b'\xFB\xEF\xBE\xFF\xFF\xFF' | ||
| 268 | - self.assertEqual(base64.b64decode(b'++[[//]]', b'[]'), res) | ||
| 269 | - self.assertEqual(base64.urlsafe_b64decode(b'++--//__'), res) | ||
| 269 | + res = b'\xfb\xef\xff' | ||
| 270 | + self.assertEqual(base64.b64decode(b'++//', validate=True), res) | ||
| 271 | + self.assertEqual(base64.b64decode(b'++//', '-_', validate=True), res) | ||
| 272 | + self.assertEqual(base64.b64decode(b'--__', '-_', validate=True), res) | ||
| 273 | + self.assertEqual(base64.urlsafe_b64decode(b'++//'), res) | ||
| 274 | + self.assertEqual(base64.urlsafe_b64decode(b'--__'), res) | ||
| 270 | 275 | ||
| 271 | 276 | def test_b32encode(self): | |
| 272 | 277 | eq = self.assertEqual | |
@@ -321,23 +326,33 @@ def test_b32decode_casefold(self): | |||
| 321 | 326 | self.assertRaises(binascii.Error, base64.b32decode, b'me======') | |
| 322 | 327 | self.assertRaises(binascii.Error, base64.b32decode, 'me======') | |
| 323 | 328 | ||
| 329 | + def test_b32decode_map01(self): | ||
| 324 | 330 | # Mapping zero and one | |
| 325 | - eq(base64.b32decode(b'MLO23456'), b'b\xdd\xad\xf3\xbe') | ||
| 326 | - eq(base64.b32decode('MLO23456'), b'b\xdd\xad\xf3\xbe') | ||
| 327 | - | ||
| 328 | - map_tests = {(b'M1023456', b'L'): b'b\xdd\xad\xf3\xbe', | ||
| 329 | - (b'M1023456', b'I'): b'b\x1d\xad\xf3\xbe', | ||
| 330 | - } | ||
| 331 | - for (data, map01), res in map_tests.items(): | ||
| 332 | - data_str = data.decode('ascii') | ||
| 331 | + eq = self.assertEqual | ||
| 332 | + res_L = b'b\xdd\xad\xf3\xbe' | ||
| 333 | + res_I = b'b\x1d\xad\xf3\xbe' | ||
| 334 | + eq(base64.b32decode(b'MLO23456'), res_L) | ||
| 335 | + eq(base64.b32decode('MLO23456'), res_L) | ||
| 336 | + eq(base64.b32decode(b'MIO23456'), res_I) | ||
| 337 | + eq(base64.b32decode('MIO23456'), res_I) | ||
| 338 | + self.assertRaises(binascii.Error, base64.b32decode, b'M1023456') | ||
| 339 | + self.assertRaises(binascii.Error, base64.b32decode, b'M1O23456') | ||
| 340 | + self.assertRaises(binascii.Error, base64.b32decode, b'ML023456') | ||
| 341 | + self.assertRaises(binascii.Error, base64.b32decode, b'MI023456') | ||
| 342 | + | ||
| 343 | + data = b'M1023456' | ||
| 344 | + data_str = data.decode('ascii') | ||
| 345 | + for map01, res in [(b'L', res_L), (b'I', res_I)]: | ||
| 333 | 346 | map01_str = map01.decode('ascii') | |
| 334 | 347 | ||
| 335 | 348 | eq(base64.b32decode(data, map01=map01), res) | |
| 336 | 349 | eq(base64.b32decode(data_str, map01=map01), res) | |
| 337 | 350 | eq(base64.b32decode(data, map01=map01_str), res) | |
| 338 | 351 | eq(base64.b32decode(data_str, map01=map01_str), res) | |
| 339 | - self.assertRaises(binascii.Error, base64.b32decode, data) | ||
| 340 | - self.assertRaises(binascii.Error, base64.b32decode, data_str) | ||
| 352 | + | ||
| 353 | + eq(base64.b32decode(b'M1O23456', map01=map01), res) | ||
| 354 | + eq(base64.b32decode(b'M%c023456' % map01, map01=map01), res) | ||
| 355 | + eq(base64.b32decode(b'M%cO23456' % map01, map01=map01), res) | ||
| 341 | 356 | ||
| 342 | 357 | def test_b32decode_error(self): | |
| 343 | 358 | tests = [b'abc', b'ABCDEF==', b'==ABCDEF'] | |
| Back | FazBrowse Home | New Git URL |
0 commit comments