dify/api/tests/unit_tests/services
Luyu Zhang acd6942d21 feat(storage): redirect signed file previews to S3 public base URL
Add an optional S3_PUBLIC_BASE_URL setting that, when configured, lets
file controllers 302-redirect signed previews to the object store / CDN
instead of streaming bytes through the Dify API. Works with any
S3-compatible backend exposing a public domain (Cloudflare R2 custom
domain, MinIO public endpoint, Aliyun OSS public domain, etc.) so that
egress and request handling for images, attachments, tool outputs, and
webapp logos no longer go through the API container.

Signature verification is preserved: the API still validates the HMAC
before issuing the redirect. When S3_PUBLIC_BASE_URL is unset the
behavior is unchanged.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 17:12:00 -07:00
..
auth refactor: replace bare dict with dict[str, Any] in services unit test helpers (#35182) 2026-04-14 18:37:59 +00:00
enterprise test: add tests for api/services retention, enterprise, plugin (#32648) 2026-03-31 03:16:42 +00:00
plugin fix: sqlalchemy.orm.exc.DetachedInstanceError (#34910) 2026-04-10 07:44:22 +00:00
rag_pipeline chore: fix use select style api in orm (#35531) 2026-04-24 08:35:20 +00:00
recommend_app test: migrate database retrieval tests to testcontainers (#34087) 2026-03-25 23:06:46 +09:00
retention test: add tests for api/services retention, enterprise, plugin (#32648) 2026-03-31 03:16:42 +00:00
tools feat: marketplace and oauth fixes (#35509) 2026-04-24 07:53:14 +00:00
workflow feat: add service api of HITL (#32826) 2026-04-24 06:37:10 +00:00
__init__.py FEAT: NEW WORKFLOW ENGINE (#3160) 2024-04-08 18:51:46 +08:00
controller_api.py Add comprehensive API/controller tests for dataset endpoints (list, create, update, delete, documents, segments, hit testing, external datasets) (#28750) 2025-11-27 10:59:17 +08:00
dataset_service_test_helpers.py refactor: port ChildChunk (#30920) 2026-04-26 00:59:22 +00:00
document_service_validation.py chore: reorg imports (#35308) 2026-04-16 08:50:02 +00:00
hit_service.py refactor: replace bare dict with dict[str, Any] in services unit test helpers (#35182) 2026-04-14 18:37:59 +00:00
test_account_service.py chore: fix use select style api in orm (#35531) 2026-04-24 08:35:20 +00:00
test_annotation_service.py refactor: port MessageAnnotation (#31005) 2026-04-26 11:47:42 +00:00
test_app_generate_service_streaming_integration.py refactor: replace bare dict with dict[str, Any] in controller and core unit tests (#35181) 2026-04-14 17:51:49 +00:00
test_app_generate_service.py refactor: quota v3 integration (#35436) 2026-04-27 01:49:40 +00:00
test_app_model_config_service.py test: add tests for some files in services module (#32583) 2026-03-11 14:21:56 +08:00
test_app_task_service.py refactor(workflow): inject redis into graph engine manager (#32622) 2026-02-27 13:29:52 +08:00
test_archive_workflow_run_logs.py test(api): add autospec to MagicMock-based patch usage (#32752) 2026-03-01 04:30:45 +08:00
test_async_workflow_service.py refactor: quota v3 integration (#35436) 2026-04-27 01:49:40 +00:00
test_audio_service.py refactor: replace bare dict with dict[str, Any] in RAG and service unit tests (#35184) 2026-04-14 17:50:43 +00:00
test_batch_indexing_base.py test: add unit tests for some services (#32866) 2026-03-11 16:05:07 +08:00
test_billing_service.py refactor: quota v3 integration (#35436) 2026-04-27 01:49:40 +00:00
test_clear_free_plan_expired_workflow_run_logs.py feat: add metrics to clean message and workflow-run task (#33143) 2026-03-17 13:55:28 +08:00
test_clear_free_plan_tenant_expired_logs.py refactor(services): migrate dataset_service and clear_free_plan_tenant_expired_logs to SQLAlchemy 2.0 select() API (#34970) 2026-04-12 01:21:52 +00:00
test_code_based_extension_service.py test: add tests for some files in services module (#32583) 2026-03-11 14:21:56 +08:00
test_conversation_service.py test: migrate conversation service mock tests to testcontainers (#35198) 2026-04-16 07:55:21 +00:00
test_dataset_service_dataset.py test: migrate dataset service dataset mock tests to testcontainers (#35194) 2026-04-14 19:52:31 +00:00
test_dataset_service_document.py test: migrate dataset service document mock tests to testcontainers (#35191) 2026-04-17 07:03:30 +00:00
test_dataset_service_lock_not_owned.py test: replace indexing_technique string literals with IndexTechnique (#34042) 2026-03-25 12:39:58 +09:00
test_dataset_service_segment.py refactor: port ChildChunk (#30920) 2026-04-26 00:59:22 +00:00
test_datasource_provider_service.py chore: fix use select style api in orm (#35531) 2026-04-24 08:35:20 +00:00
test_document_indexing_task_proxy.py feat: enable tenant isolation on duplicate document indexing tasks (#29080) 2025-12-08 17:54:57 +08:00
test_duplicate_document_indexing_task_proxy.py feat: enable tenant isolation on duplicate document indexing tasks (#29080) 2025-12-08 17:54:57 +08:00
test_export_app_messages.py feat: add export app messages (#32990) 2026-03-07 11:27:15 +08:00
test_external_dataset_service.py refactor: replace bare dict with dict[str, Any] in services unit test helpers (#35182) 2026-04-14 18:37:59 +00:00
test_feature_service_human_input_email_delivery.py feat: Human Input Node (#32060) 2026-02-09 14:57:23 +08:00
test_file_service.py feat(storage): redirect signed file previews to S3 public base URL 2026-04-28 17:12:00 -07:00
test_human_input_service.py chore: reorg imports (#35308) 2026-04-16 08:50:02 +00:00
test_knowledge_service.py refactor: replace dict with BedrockRetrievalSetting BaseModel in knowledge_service (#34080) 2026-03-25 21:33:24 +09:00
test_message_service.py feat: improve follow-up settings (#35442) 2026-04-22 08:55:16 +00:00
test_messages_clean_service.py refactor: replace bare dict with dict[str, Any] in controller and core unit tests (#35181) 2026-04-14 17:51:49 +00:00
test_metadata_bug_complete.py refactor: port reqparse to BaseModel (#28993) 2025-12-08 15:31:19 +09:00
test_metadata_nullable_bug.py refactor: port reqparse to BaseModel (#28993) 2025-12-08 15:31:19 +09:00
test_model_load_balancing_service.py chore: reorg imports (#35308) 2026-04-16 08:50:02 +00:00
test_model_provider_service_sanitization.py chore: reorg imports (#35308) 2026-04-16 08:50:02 +00:00
test_model_provider_service.py chore: reorg imports (#35308) 2026-04-16 08:50:02 +00:00
test_operation_service.py refactor: replace bare dict with dict[str, Any] in services unit test helpers (#35182) 2026-04-14 18:37:59 +00:00
test_rag_pipeline_task_proxy.py refactor: implement tenant self queue for rag tasks (#27559) 2025-11-06 21:25:50 +08:00
test_schedule_service.py test: migrate schedule service mock tests to testcontainers (#35196) 2026-04-14 20:34:53 +00:00
test_summary_index_service.py refactor(services): migrate summary_index_service to SQLAlchemy 2.0 select() API (#34971) 2026-04-12 01:37:16 +00:00
test_trigger_provider_service.py feat: marketplace and oauth fixes (#35509) 2026-04-24 07:53:14 +00:00
test_variable_truncator_additional.py chore: reorg imports (#35308) 2026-04-16 08:50:02 +00:00
test_variable_truncator.py chore(api): adapt Graphon 0.2.2 upgrade (#35377) 2026-04-18 11:16:24 +00:00
test_vector_service.py refactor: select in 10 service files (#34373) 2026-04-01 08:03:49 +00:00
test_webhook_service_additional.py chore: fix use select style api in orm (#35531) 2026-04-24 08:35:20 +00:00
test_webhook_service.py test: split merged API test modules and remove F811 ignore (#35105) 2026-04-14 03:54:30 +00:00
test_website_service.py refactor: replace bare dict with dict[str, Any] in services unit test helpers (#35182) 2026-04-14 18:37:59 +00:00
test_workflow_collaboration_service.py feat: collaboration (#30781) 2026-04-16 02:21:04 +00:00
test_workflow_comment_service.py feat: collaboration (#30781) 2026-04-16 02:21:04 +00:00
test_workflow_run_service_pause.py chore: reorg imports (#35308) 2026-04-16 08:50:02 +00:00
test_workflow_run_service.py test: split merged API test modules and remove F811 ignore (#35105) 2026-04-14 03:54:30 +00:00
test_workflow_service.py chore: fix use select style api in orm (#35531) 2026-04-24 08:35:20 +00:00