initial import for Open Source 🎉
This commit is contained in:
parent
1898c361f3
commit
9c0dd3b722
2048 changed files with 218743 additions and 0 deletions
87
data/model/oci/test/test_oci_label.py
Normal file
87
data/model/oci/test/test_oci_label.py
Normal file
|
@ -0,0 +1,87 @@
|
|||
import pytest
|
||||
|
||||
from playhouse.test_utils import assert_query_count
|
||||
|
||||
from data.database import Manifest, ManifestLabel
|
||||
from data.model.oci.label import (create_manifest_label, list_manifest_labels, get_manifest_label,
|
||||
delete_manifest_label, DataModelException)
|
||||
|
||||
from test.fixtures import *
|
||||
|
||||
|
||||
@pytest.mark.parametrize('key, value, source_type, expected_error', [
|
||||
('foo', 'bar', 'manifest', None),
|
||||
|
||||
pytest.param('..foo', 'bar', 'manifest', None, id='invalid key on manifest'),
|
||||
pytest.param('..foo', 'bar', 'api', 'is invalid', id='invalid key on api'),
|
||||
])
|
||||
def test_create_manifest_label(key, value, source_type, expected_error, initialized_db):
|
||||
manifest = Manifest.get()
|
||||
|
||||
if expected_error:
|
||||
with pytest.raises(DataModelException) as ex:
|
||||
create_manifest_label(manifest, key, value, source_type)
|
||||
|
||||
assert ex.match(expected_error)
|
||||
return
|
||||
|
||||
label = create_manifest_label(manifest, key, value, source_type)
|
||||
labels = [ml.label_id for ml in ManifestLabel.select().where(ManifestLabel.manifest == manifest)]
|
||||
assert label.id in labels
|
||||
|
||||
with assert_query_count(1):
|
||||
assert label in list_manifest_labels(manifest)
|
||||
|
||||
assert label not in list_manifest_labels(manifest, 'someprefix')
|
||||
assert label in list_manifest_labels(manifest, key[0:2])
|
||||
|
||||
with assert_query_count(1):
|
||||
assert get_manifest_label(label.uuid, manifest) == label
|
||||
|
||||
|
||||
def test_list_manifest_labels(initialized_db):
|
||||
manifest = Manifest.get()
|
||||
|
||||
label1 = create_manifest_label(manifest, 'foo', '1', 'manifest')
|
||||
label2 = create_manifest_label(manifest, 'bar', '2', 'api')
|
||||
label3 = create_manifest_label(manifest, 'baz', '3', 'internal')
|
||||
|
||||
assert label1 in list_manifest_labels(manifest)
|
||||
assert label2 in list_manifest_labels(manifest)
|
||||
assert label3 in list_manifest_labels(manifest)
|
||||
|
||||
other_manifest = Manifest.select().where(Manifest.id != manifest.id).get()
|
||||
assert label1 not in list_manifest_labels(other_manifest)
|
||||
assert label2 not in list_manifest_labels(other_manifest)
|
||||
assert label3 not in list_manifest_labels(other_manifest)
|
||||
|
||||
|
||||
def test_get_manifest_label(initialized_db):
|
||||
found = False
|
||||
for manifest_label in ManifestLabel.select():
|
||||
assert (get_manifest_label(manifest_label.label.uuid, manifest_label.manifest) ==
|
||||
manifest_label.label)
|
||||
assert manifest_label.label in list_manifest_labels(manifest_label.manifest)
|
||||
found = True
|
||||
|
||||
assert found
|
||||
|
||||
|
||||
def test_delete_manifest_label(initialized_db):
|
||||
found = False
|
||||
for manifest_label in list(ManifestLabel.select()):
|
||||
assert (get_manifest_label(manifest_label.label.uuid, manifest_label.manifest) ==
|
||||
manifest_label.label)
|
||||
assert manifest_label.label in list_manifest_labels(manifest_label.manifest)
|
||||
|
||||
if manifest_label.label.source_type.mutable:
|
||||
assert delete_manifest_label(manifest_label.label.uuid, manifest_label.manifest)
|
||||
assert manifest_label.label not in list_manifest_labels(manifest_label.manifest)
|
||||
assert get_manifest_label(manifest_label.label.uuid, manifest_label.manifest) is None
|
||||
else:
|
||||
with pytest.raises(DataModelException):
|
||||
delete_manifest_label(manifest_label.label.uuid, manifest_label.manifest)
|
||||
|
||||
found = True
|
||||
|
||||
assert found
|
Reference in a new issue