From 8355d5e12db4d10c14eb88a00ddcc2ffb5248a72 Mon Sep 17 00:00:00 2001 From: davelopez <46503462+davelopez@users.noreply.github.com> Date: Wed, 10 Aug 2022 09:23:42 +0200 Subject: [PATCH] Add more unit tests for ID fields --- test/unit/webapps/api/test_id_fields.py | 32 ++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/test/unit/webapps/api/test_id_fields.py b/test/unit/webapps/api/test_id_fields.py index 6a926f41465..f5df335a949 100644 --- a/test/unit/webapps/api/test_id_fields.py +++ b/test/unit/webapps/api/test_id_fields.py @@ -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)