@@ -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'\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
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