Fix API unit tests with ID encodings

This commit is contained in:
davelopez
2022-08-24 12:05:47 +02:00
committed by mvdbeek
parent a840696b93
commit a7303e219e
3 changed files with 19 additions and 17 deletions
+10
View File
@@ -0,0 +1,10 @@
import pytest
from galaxy.schema.fields import BaseDatabaseIdField
from galaxy.security.idencoding import IdEncodingHelper
@pytest.fixture(scope="session", autouse=True)
def security() -> IdEncodingHelper:
BaseDatabaseIdField.security = IdEncodingHelper(id_secret="testing")
return BaseDatabaseIdField.security
+3 -3
View File
@@ -10,7 +10,7 @@ from galaxy.schema.fetch_data import (
UrlDataElement,
)
HISTORY_ID = "abcdef0123456789"
HISTORY_ID = "378807ae895b74ff"
example_payload = {
"targets": [
{
@@ -69,7 +69,7 @@ ftp_hdca_target = {
}
recursive_archive_payload = {
"history_id": "f3f73e481f432006",
"history_id": "70583a56914a26f9",
"targets": [
{
"destination": {"type": "library", "name": "My Cool Library"},
@@ -82,7 +82,7 @@ recursive_archive_payload = {
nested_element_regression_payload = {
"history_id": "80a1fcbe9fcb3c61",
"history_id": "c369577e3c21d7b7",
"targets": [
{
"destination": {"type": "hdca"},
+6 -14
View File
@@ -5,12 +5,10 @@ from pydantic import (
)
from galaxy.schema.fields import (
BaseDatabaseIdField,
DecodedDatabaseIdField,
EncodedDatabaseIdField,
LibraryFolderDatabaseIdField,
)
from galaxy.security.idencoding import IdEncodingHelper
class DecodedIdModel(BaseModel):
@@ -25,12 +23,6 @@ class LibraryFolderIdModel(BaseModel):
id: LibraryFolderDatabaseIdField
@pytest.fixture
def security() -> IdEncodingHelper:
BaseDatabaseIdField.security = IdEncodingHelper(id_secret="testing")
return BaseDatabaseIdField.security
def test_decoded_id_schema_override():
schema = DecodedIdModel.schema()
assert schema["properties"]["id"]["type"] == "string", schema
@@ -41,25 +33,25 @@ def test_encoded_id_schema_override():
assert schema["properties"]["id"]["type"] == "string", schema
def test_decoded_database_id_field(security: IdEncodingHelper):
def test_decoded_database_id_field():
decoded_id = 1
encoded_id = security.encode_id(decoded_id)
encoded_id = DecodedDatabaseIdField.encode(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):
def test_library_folder_database_id_field():
decoded_id = 1
encoded_id = f"F{security.encode_id(decoded_id)}"
encoded_id = f"F{DecodedDatabaseIdField.encode(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):
def test_library_folder_database_id_field_raises_validation_error():
decoded_id = 1
# The encoded ID must start with 'F'
invalid_encoded_id = security.encode_id(decoded_id)
invalid_encoded_id = DecodedDatabaseIdField.encode(decoded_id)
with pytest.raises(ValidationError):
LibraryFolderIdModel(id=invalid_encoded_id)