@@ -379,19 +379,26 @@ def test_partial_parse():
379379
380380
381381def test_json_bytes_base64_round_trip ():
382- data = b'hello'
383- encoded = b'"aGVsbG8="'
384- assert to_json (data , bytes_mode = 'base64' ) == encoded
382+ data = b'\xd8 \x07 \xc1 Tx$\x91 F%\xf3 \xf3 I\xca \xd8 @\x0c \xee \xc3 \xab \xff \x7f \xd3 \xcd \xcd \xf9 \xc2 \x10 \xe4 \xa1 \xb0 1e'
383+ encoded_std = b'"2AfBVHgkkUYl8/NJythADO7Dq/9/083N+cIQ5KGwMWU="'
384+ encoded_url = b'"2AfBVHgkkUYl8_NJythADO7Dq_9_083N-cIQ5KGwMWU="'
385+ assert to_json (data , bytes_mode = 'base64' ) == encoded_url
385386
386387 v = SchemaValidator ({'type' : 'bytes' }, {'val_json_bytes' : 'base64' })
387- assert v .validate_json (encoded ) == data
388+ assert v .validate_json (encoded_url ) == data
389+ assert v .validate_json (encoded_std ) == data
390+
391+ with pytest .raises (ValidationError ) as exc :
392+ v .validate_json ('"wrong!"' )
393+ [details ] = exc .value .errors ()
394+ assert details ['type' ] == 'bytes_invalid_encoding'
388395
389- assert to_json ({'key' : data }, bytes_mode = 'base64' ) == b'{"key":"aGVsbG8=" }'
396+ assert to_json ({'key' : data }, bytes_mode = 'base64' ) == b'{"key":' + encoded_url + b' }'
390397 v = SchemaValidator (
391398 {'type' : 'dict' , 'keys_schema' : {'type' : 'str' }, 'values_schema' : {'type' : 'bytes' }},
392399 {'val_json_bytes' : 'base64' },
393400 )
394- assert v .validate_json ('{"key":"aGVsbG8=" }' ) == {'key' : data }
401+ assert v .validate_json (b '{"key":' + encoded_url + b' }' ) == {'key' : data }
395402
396403
397404def test_json_bytes_base64_invalid ():
0 commit comments