@@ -379,19 +379,26 @@ def test_partial_parse():
379
379
380
380
381
381
def 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'TDR3\xbe \x11 J\xe9 \x9f \xa4 &\x91 \xff \xc8 \xef 4\xdf \xd3 $\xf3 ^\xca \xb5 \x14 V \xde DH\n \x85 \x8b '
383
+ encoded_std = b'"VERSM74RSumfpCaR/8jvNN/TJPNeyrUUViDeREgKhYs="'
384
+ encoded_url = b'"VERSM74RSumfpCaR_8jvNN_TJPNeyrUUViDeREgKhYs="'
385
+ assert to_json (data , bytes_mode = 'base64' ) == encoded_url
385
386
386
387
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'
388
395
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' }'
390
397
v = SchemaValidator (
391
398
{'type' : 'dict' , 'keys_schema' : {'type' : 'str' }, 'values_schema' : {'type' : 'bytes' }},
392
399
{'val_json_bytes' : 'base64' },
393
400
)
394
- assert v .validate_json ('{"key":"aGVsbG8=" }' ) == {'key' : data }
401
+ assert v .validate_json (b '{"key":' + encoded_url + b' }' ) == {'key' : data }
395
402
396
403
397
404
def test_json_bytes_base64_invalid ():
0 commit comments