Add more unit tests for ID fields

This commit is contained in:
davelopez
2022-08-24 12:00:26 +02:00
committed by mvdbeek
parent 5e2a263924
commit 8355d5e12d
+29 -3
View File
@@ -1,10 +1,14 @@
import pytest
from pydantic import BaseModel
from pydantic import (
BaseModel,
ValidationError,
)
from galaxy.schema.fields import (
BaseDatabaseIdField,
DecodedDatabaseIdField,
EncodedDatabaseIdField,
LibraryFolderDatabaseIdField,
)
from galaxy.security.idencoding import IdEncodingHelper
@@ -17,6 +21,10 @@ class EncodedIdModel(BaseModel):
id: EncodedDatabaseIdField
class LibraryFolderIdModel(BaseModel):
id: LibraryFolderDatabaseIdField
@pytest.fixture
def security() -> IdEncodingHelper:
BaseDatabaseIdField.security = IdEncodingHelper(id_secret="testing")
@@ -35,5 +43,23 @@ def test_encoded_id_schema_override():
def test_decoded_database_id_field(security: IdEncodingHelper):
decoded_id = 1
id_model = EncodedIdModel(id=decoded_id)
assert id_model.id == security.encode_id(decoded_id)
encoded_id = security.encode_id(decoded_id)
model = DecodedIdModel(id=encoded_id)
assert model.id == decoded_id
assert DecodedDatabaseIdField.encode(model.id) == encoded_id
def test_library_folder_database_id_field(security: IdEncodingHelper):
decoded_id = 1
encoded_id = f"F{security.encode_id(decoded_id)}"
model = LibraryFolderIdModel(id=encoded_id)
assert model.id == decoded_id
assert LibraryFolderDatabaseIdField.encode(model.id) == encoded_id
def test_library_folder_database_id_field_raises_validation_error(security: IdEncodingHelper):
decoded_id = 1
# The encoded ID must start with 'F'
invalid_encoded_id = security.encode_id(decoded_id)
with pytest.raises(ValidationError):
LibraryFolderIdModel(id=invalid_encoded_id)