mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Add more unit tests for ID fields
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user