mirror of
https://github.com/langgenius/dify.git
synced 2026-04-29 12:37:20 +08:00
fix: increase name length limit in ExternalDatasetCreatePayload (#31000)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Asuka Minato <i@asukaminato.eu.org>
This commit is contained in:
parent
a56e94ba8e
commit
5bf4114d6f
@ -81,7 +81,7 @@ class ExternalKnowledgeApiPayload(BaseModel):
|
|||||||
class ExternalDatasetCreatePayload(BaseModel):
|
class ExternalDatasetCreatePayload(BaseModel):
|
||||||
external_knowledge_api_id: str
|
external_knowledge_api_id: str
|
||||||
external_knowledge_id: str
|
external_knowledge_id: str
|
||||||
name: str = Field(..., min_length=1, max_length=40)
|
name: str = Field(..., min_length=1, max_length=100)
|
||||||
description: str | None = Field(None, max_length=400)
|
description: str | None = Field(None, max_length=400)
|
||||||
external_retrieval_model: dict[str, object] | None = None
|
external_retrieval_model: dict[str, object] | None = None
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1 @@
|
|||||||
|
"""Unit tests for `controllers.console.datasets` controllers."""
|
||||||
@ -0,0 +1,49 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
"""
|
||||||
|
Unit tests for the external dataset controller payload schemas.
|
||||||
|
|
||||||
|
These tests focus on Pydantic validation rules so we can catch regressions
|
||||||
|
in request constraints (e.g. max length changes) without exercising the
|
||||||
|
full Flask/RESTX request stack.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
from pydantic import ValidationError
|
||||||
|
|
||||||
|
from controllers.console.datasets.external import ExternalDatasetCreatePayload
|
||||||
|
|
||||||
|
|
||||||
|
def test_external_dataset_create_payload_allows_name_length_100() -> None:
|
||||||
|
"""Ensure the `name` field accepts up to 100 characters (inclusive)."""
|
||||||
|
|
||||||
|
# Build a request payload with a boundary-length name value.
|
||||||
|
name_100: str = "a" * 100
|
||||||
|
payload = {
|
||||||
|
"external_knowledge_api_id": "ek-api-1",
|
||||||
|
"external_knowledge_id": "ek-1",
|
||||||
|
"name": name_100,
|
||||||
|
}
|
||||||
|
|
||||||
|
model = ExternalDatasetCreatePayload.model_validate(payload)
|
||||||
|
assert model.name == name_100
|
||||||
|
|
||||||
|
|
||||||
|
def test_external_dataset_create_payload_rejects_name_length_101() -> None:
|
||||||
|
"""Ensure the `name` field rejects values longer than 100 characters."""
|
||||||
|
|
||||||
|
# Build a request payload that exceeds the max length by 1.
|
||||||
|
name_101: str = "a" * 101
|
||||||
|
payload: dict[str, object] = {
|
||||||
|
"external_knowledge_api_id": "ek-api-1",
|
||||||
|
"external_knowledge_id": "ek-1",
|
||||||
|
"name": name_101,
|
||||||
|
}
|
||||||
|
|
||||||
|
with pytest.raises(ValidationError) as exc_info:
|
||||||
|
ExternalDatasetCreatePayload.model_validate(payload)
|
||||||
|
|
||||||
|
errors = exc_info.value.errors()
|
||||||
|
assert errors[0]["loc"] == ("name",)
|
||||||
|
assert errors[0]["type"] == "string_too_long"
|
||||||
|
assert errors[0]["ctx"]["max_length"] == 100
|
||||||
Loading…
Reference in New Issue
Block a user