mirror of
https://github.com/langgenius/dify.git
synced 2026-04-19 18:27:27 +08:00
test: fix external dataset update integration fixtures
This commit is contained in:
@ -1,3 +1,4 @@
|
||||
import json
|
||||
from unittest.mock import Mock, patch
|
||||
from uuid import uuid4
|
||||
|
||||
@ -7,7 +8,7 @@ from sqlalchemy.orm import Session
|
||||
|
||||
from core.rag.index_processor.constant.index_type import IndexTechniqueType
|
||||
from models.account import Account, Tenant, TenantAccountJoin, TenantAccountRole
|
||||
from models.dataset import Dataset, ExternalKnowledgeBindings
|
||||
from models.dataset import Dataset, ExternalKnowledgeApis, ExternalKnowledgeBindings
|
||||
from models.enums import DataSourceType
|
||||
from services.dataset_service import DatasetService
|
||||
from services.errors.account import NoPermissionError
|
||||
@ -103,6 +104,34 @@ class DatasetUpdateTestDataFactory:
|
||||
db_session_with_containers.commit()
|
||||
return binding
|
||||
|
||||
@staticmethod
|
||||
def create_external_knowledge_api(
|
||||
db_session_with_containers: Session,
|
||||
tenant_id: str,
|
||||
created_by: str,
|
||||
api_id: str | None = None,
|
||||
name: str = "test-api",
|
||||
) -> ExternalKnowledgeApis:
|
||||
"""Create a real external knowledge API template for tenant-scoped update validation."""
|
||||
external_api = ExternalKnowledgeApis(
|
||||
tenant_id=tenant_id,
|
||||
created_by=created_by,
|
||||
updated_by=created_by,
|
||||
name=name,
|
||||
description="test description",
|
||||
settings=json.dumps(
|
||||
{
|
||||
"endpoint": "https://example.com",
|
||||
"api_key": "test-api-key",
|
||||
}
|
||||
),
|
||||
)
|
||||
if api_id is not None:
|
||||
external_api.id = api_id
|
||||
db_session_with_containers.add(external_api)
|
||||
db_session_with_containers.commit()
|
||||
return external_api
|
||||
|
||||
|
||||
class TestDatasetServiceUpdateDataset:
|
||||
"""
|
||||
@ -138,6 +167,11 @@ class TestDatasetServiceUpdateDataset:
|
||||
)
|
||||
binding_id = binding.id
|
||||
db_session_with_containers.expunge(binding)
|
||||
external_api = DatasetUpdateTestDataFactory.create_external_knowledge_api(
|
||||
db_session_with_containers,
|
||||
tenant_id=tenant.id,
|
||||
created_by=user.id,
|
||||
)
|
||||
|
||||
update_data = {
|
||||
"name": "new_name",
|
||||
@ -145,7 +179,7 @@ class TestDatasetServiceUpdateDataset:
|
||||
"external_retrieval_model": "new_model",
|
||||
"permission": "only_me",
|
||||
"external_knowledge_id": "new_knowledge_id",
|
||||
"external_knowledge_api_id": str(uuid4()),
|
||||
"external_knowledge_api_id": external_api.id,
|
||||
}
|
||||
|
||||
result = DatasetService.update_dataset(dataset.id, update_data, user)
|
||||
@ -218,11 +252,16 @@ class TestDatasetServiceUpdateDataset:
|
||||
created_by=user.id,
|
||||
provider="external",
|
||||
)
|
||||
external_api = DatasetUpdateTestDataFactory.create_external_knowledge_api(
|
||||
db_session_with_containers,
|
||||
tenant_id=tenant.id,
|
||||
created_by=user.id,
|
||||
)
|
||||
|
||||
update_data = {
|
||||
"name": "new_name",
|
||||
"external_knowledge_id": "knowledge_id",
|
||||
"external_knowledge_api_id": str(uuid4()),
|
||||
"external_knowledge_api_id": external_api.id,
|
||||
}
|
||||
|
||||
with pytest.raises(ValueError) as context:
|
||||
|
||||
Reference in New Issue
Block a user