[PR #23269] Feat add testcontainers test #30218

Closed
opened 2026-02-21 20:47:04 -05:00 by yindo · 0 comments
Owner

Original Pull Request: https://github.com/langgenius/dify/pull/23269

State: closed
Merged: Yes


Important

  1. Make sure you have read our contribution guidelines
  2. Ensure there is an associated issue and you have been assigned to it
  3. Use the correct syntax to link this PR: Fixes #<issue number>.

Summary

This PR adds comprehensive integration tests for the StorageKeyLoader class, which handles batched loading of storage keys from the database for files with different transfer methods (LOCAL_FILE, REMOTE_URL, and TOOL_FILE).

close https://github.com/langgenius/dify/issues/23268
The implementation includes:

  • Complete test coverage for all transfer methods: LOCAL_FILE, REMOTE_URL, and TOOL_FILE
  • Batch processing tests to verify efficient database query handling
  • Error handling tests for various edge cases including tenant validation, missing records, and invalid UUIDs
  • Tenant isolation tests to ensure proper multi-tenancy support
  • Helper methods for creating test data (UploadFile and ToolFile records)
  • Proper test setup and teardown with database session management

Key test scenarios covered:

  • Single file loading for each transfer method
  • Mixed transfer methods in batch operations
  • Empty file list handling
  • Tenant ID validation and isolation
  • Missing database records handling
  • Invalid UUID format handling
  • Duplicate file ID handling
  • Session isolation verification
  • Query efficiency verification (ensuring batched operations use minimal database queries)

The tests use pytest fixtures and unittest framework, with proper mocking to verify database query efficiency and maintain test isolation.

Screenshots

Before After
No integration tests for StorageKeyLoader Comprehensive test suite with 15 test methods covering all scenarios

Checklist

  • This change requires a documentation update, included: Dify Document
  • I understand that this PR may be closed in case there was no previous discussion or issues. (This doesn't apply to typos!)
  • I've added a test for each change that was introduced, and I tried as much as possible to make a single atomic change.
  • I've updated the documentation accordingly.
  • I ran dev/reformat(backend) and cd web && npx lint-staged(frontend) to appease the lint gods
**Original Pull Request:** https://github.com/langgenius/dify/pull/23269 **State:** closed **Merged:** Yes --- > [!IMPORTANT] > > 1. Make sure you have read our [contribution guidelines](https://github.com/langgenius/dify/blob/main/CONTRIBUTING.md) > 2. Ensure there is an associated issue and you have been assigned to it > 3. Use the correct syntax to link this PR: `Fixes #<issue number>`. ## Summary This PR adds comprehensive integration tests for the `StorageKeyLoader` class, which handles batched loading of storage keys from the database for files with different transfer methods (LOCAL_FILE, REMOTE_URL, and TOOL_FILE). close https://github.com/langgenius/dify/issues/23268 The implementation includes: - **Complete test coverage** for all transfer methods: LOCAL_FILE, REMOTE_URL, and TOOL_FILE - **Batch processing tests** to verify efficient database query handling - **Error handling tests** for various edge cases including tenant validation, missing records, and invalid UUIDs - **Tenant isolation tests** to ensure proper multi-tenancy support - **Helper methods** for creating test data (UploadFile and ToolFile records) - **Proper test setup and teardown** with database session management Key test scenarios covered: - Single file loading for each transfer method - Mixed transfer methods in batch operations - Empty file list handling - Tenant ID validation and isolation - Missing database records handling - Invalid UUID format handling - Duplicate file ID handling - Session isolation verification - Query efficiency verification (ensuring batched operations use minimal database queries) The tests use pytest fixtures and unittest framework, with proper mocking to verify database query efficiency and maintain test isolation. ## Screenshots | Before | After | |--------|-------| | No integration tests for StorageKeyLoader | Comprehensive test suite with 15 test methods covering all scenarios | ## Checklist - [ ] This change requires a documentation update, included: [Dify Document](https://github.com/langgenius/dify-docs) - [x] I understand that this PR may be closed in case there was no previous discussion or issues. (This doesn't apply to typos!) - [x] I've added a test for each change that was introduced, and I tried as much as possible to make a single atomic change. - [x] I've updated the documentation accordingly. - [x] I ran `dev/reformat`(backend) and `cd web && npx lint-staged`(frontend) to appease the lint gods
yindo added the pull-request label 2026-02-21 20:47:04 -05:00
yindo closed this issue 2026-02-21 20:47:04 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: langgenius/dify#30218