From 27d4f46db1b3737dc46943ab7f7885894cdf8286 Mon Sep 17 00:00:00 2001 From: RoopakBRK Date: Tue, 8 Sep 2026 11:24:43 +0530 Subject: [PATCH 1/3] fix(api): validate overflow policy type --- packages/sie_server/src/sie_server/api/options.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/sie_server/src/sie_server/api/options.py b/packages/sie_server/src/sie_server/api/options.py index 9667b3c4f..483797e9c 100644 --- a/packages/sie_server/src/sie_server/api/options.py +++ b/packages/sie_server/src/sie_server/api/options.py @@ -53,7 +53,10 @@ def resolve_runtime_options_with_profile( ) from e overflow_policy = merged.get("overflow_policy") - if overflow_policy is not None and overflow_policy not in VALID_OVERFLOW_POLICIES: + if overflow_policy is not None and ( + not isinstance(overflow_policy, str) + or overflow_policy not in VALID_OVERFLOW_POLICIES + ): span.set_attribute("error", "invalid_overflow_policy") raise HTTPException( status_code=status.HTTP_400_BAD_REQUEST, From 4917b084b5f90e50f05d6349032545065dd6381a Mon Sep 17 00:00:00 2001 From: RoopakBRK Date: Tue, 8 Sep 2026 11:38:34 +0530 Subject: [PATCH 2/3] fix(api): validate overflow policy type --- packages/sie_server/src/sie_server/api/options.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/sie_server/src/sie_server/api/options.py b/packages/sie_server/src/sie_server/api/options.py index 483797e9c..153ffff33 100644 --- a/packages/sie_server/src/sie_server/api/options.py +++ b/packages/sie_server/src/sie_server/api/options.py @@ -54,8 +54,7 @@ def resolve_runtime_options_with_profile( overflow_policy = merged.get("overflow_policy") if overflow_policy is not None and ( - not isinstance(overflow_policy, str) - or overflow_policy not in VALID_OVERFLOW_POLICIES + not isinstance(overflow_policy, str) or overflow_policy not in VALID_OVERFLOW_POLICIES ): span.set_attribute("error", "invalid_overflow_policy") raise HTTPException( From 43d39d9239577446db4c73c115375ae26f0fd6a2 Mon Sep 17 00:00:00 2001 From: RoopakBRK Date: Tue, 8 Sep 2026 18:14:50 +0530 Subject: [PATCH 3/3] test(api): cover invalid overflow policy type --- packages/sie_server/tests/api/test_option.py | 34 ++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 packages/sie_server/tests/api/test_option.py diff --git a/packages/sie_server/tests/api/test_option.py b/packages/sie_server/tests/api/test_option.py new file mode 100644 index 000000000..489a03f82 --- /dev/null +++ b/packages/sie_server/tests/api/test_option.py @@ -0,0 +1,34 @@ +from unittest.mock import MagicMock + +import pytest +from fastapi import HTTPException +from sie_server.api.options import resolve_runtime_options_with_profile +from sie_server.config.model import EmbeddingDim, EncodeTask, ModelConfig, ProfileConfig, Tasks + + +def _make_config() -> ModelConfig: + return ModelConfig( + sie_id="test", + hf_id="org/test", + tasks=Tasks(encode=EncodeTask(dense=EmbeddingDim(dim=8))), + profiles={ + "default": ProfileConfig( + adapter_path="sie_server.adapters.base:ModelAdapter", + max_batch_tokens=8, + ) + }, + ) + + +def test_invalid_overflow_policy_type_returns_400() -> None: + span = MagicMock() + + with pytest.raises(HTTPException) as exc_info: + resolve_runtime_options_with_profile( + _make_config(), + {"overflow_policy": ["truncate_text"]}, + span, + ) + + assert exc_info.value.status_code == 400 + assert exc_info.value.detail["code"] == "INVALID_INPUT"