Fix handling of manifests with unicode in the backfill
Also adds a bunch of tests around manifests to ensure we get the same information in and out
This commit is contained in:
parent
a66a4d6a10
commit
fa58f3b1d2
9 changed files with 176 additions and 7 deletions
|
@ -1,4 +1,7 @@
|
|||
import os
|
||||
import hashlib
|
||||
import json
|
||||
|
||||
import pytest
|
||||
|
||||
from image.docker.schema1 import MalformedSchema1Manifest, DockerSchema1Manifest
|
||||
|
@ -76,4 +79,32 @@ def test_valid_manifest():
|
|||
|
||||
assert manifest.leaf_layer == manifest.layers[1]
|
||||
|
||||
assert manifest.digest
|
||||
|
||||
def test_validate_manifest():
|
||||
test_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
with open(os.path.join(test_dir, 'validated_manifest.json'), 'r') as f:
|
||||
manifest_bytes = f.read()
|
||||
|
||||
manifest = DockerSchema1Manifest(manifest_bytes, validate=True)
|
||||
digest = manifest.digest
|
||||
assert digest == 'sha256:b5dc4f63fdbd64f34f2314c0747ef81008f9fcddce4edfc3fd0e8ec8b358d571'
|
||||
|
||||
|
||||
def test_validate_manifest_with_unicode():
|
||||
test_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
with open(os.path.join(test_dir, 'validated_manifest_with_unicode.json'), 'r') as f:
|
||||
manifest_bytes = f.read()
|
||||
|
||||
manifest = DockerSchema1Manifest(manifest_bytes, validate=True)
|
||||
digest = manifest.digest
|
||||
assert digest == 'sha256:815ecf45716a96b19d54d911e6ace91f78bab26ca0dd299645d9995dacd9f1ef'
|
||||
|
||||
|
||||
def test_validate_manifest_with_unicode_encoded():
|
||||
test_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
with open(os.path.join(test_dir, 'manifest_unicode_row.json'), 'r') as f:
|
||||
manifest_bytes = json.loads(f.read())[0]['json_data']
|
||||
|
||||
manifest = DockerSchema1Manifest.for_latin1_bytes(manifest_bytes, validate=True)
|
||||
digest = manifest.digest
|
||||
assert digest == 'sha256:dde3714ce7e23edc6413aa85c0b42792e4f2f79e9ea36afc154d63ff3d04e86c'
|
||||
|
|
Reference in a new issue