Commit Graph

121 Commits

Author SHA1 Message Date
copilot-swe-agent[bot] 8e8a64969f feat: add comprehensive unit tests for tasks and auth modules
- Add test_extract_metadata_gpt.py with 16 tests (7 passing)
- Add test_convert_pdf.py with 13 tests achieving 90.56% coverage
- Add test_embed_pdf_metadata.py with 10 tests achieving 46.81% coverage
- Add test_finalize_storage.py with 9 tests
- Add test_auth_module.py with 14 tests achieving 43.48% coverage

Coverage improvements:
- convert_to_pdf: 10% → 90.56%
- embed_metadata_into_pdf: 14.89% → 46.81%
- extract_metadata_with_gpt: 21.84% → 36.78%
- auth.py: 27.83% → 43.48%

43 tests passing, working on fixing remaining tests for full coverage

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-12 04:00:05 +00:00
copilot-swe-agent[bot] 0eb29fd62a test: add tests for Phase 1 modules (rate_limit_decorators, monitor_stalled_steps, step_timeout, config_validator)
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-12 03:44:23 +00:00
Christian Krakau-Louis 3710aca6ce Merge pull request #260 from christianlouis/copilot/format-code-with-linters
style: fix black, isort, and flake8 violations across app/ and tests/
2026-02-12 04:24:04 +01:00
copilot-swe-agent[bot] ff9a3ff49f style: fix code formatting with black, isort, and flake8
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-12 03:21:41 +00:00
copilot-swe-agent[bot] 07c240df99 fix(test): update PyPDF2 patch references to pypdf in path traversal security test
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-12 03:19:32 +00:00
Christian Krakau-Louis a4d0dc5ddb Merge pull request #255 from christianlouis/copilot/mitigate-pypdf-infinite-loop
fix(deps): mitigate PyPDF2 infinite loop vulnerability (CVE-2023-36464)
2026-02-12 03:58:36 +01:00
copilot-swe-agent[bot] ad39ee7afa fix(test): update 11 failing tests to match refactored status tracking and API changes
- Update test_bulk_operations.py: Use FileProcessingStep instead of ProcessingLog for status filter tests
- Update test_file_listing.py: Use FileProcessingStep for processing status determination tests
- Update test_file_detail_endpoints.py: Replace hash_file with check_text in step summary test
- Update test_path_traversal_security.py: Import get_unique_filepath_with_counter from correct module
- Update test_process_document.py: Match current duplicate handling behavior (creates new record)

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-12 02:54:46 +00:00
copilot-swe-agent[bot] cc98039246 fix(deps): upgrade PyPDF2 to pypdf >= 3.9.0 to fix CVE-2023-36464
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-12 02:52:17 +00:00
anthropic-code-agent[bot] 104757fd4f fix(tests): fix remaining 8 tests - storage reorganization and file detail enhancements
- Fix test_storage_reorganization.py: Use valid PDF content with EOF marker
- Fix test_file_detail_enhancements.py: Add missing sample_pdf_file fixture
- All 12 tests now passing (2 storage + 7 file detail + 3 other)

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-12 02:08:50 +00:00
anthropic-code-agent[bot] 96d063e2a6 fix(tests): rewrite file_status_fix tests for FileProcessingStep model
- Replace ProcessingLog-based tests with FileProcessingStep-based tests
- Update to use step_manager functions (get_file_overall_status, get_step_summary)
- All 6 tests (3 status + 3 metrics) now pass

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-12 02:01:26 +00:00
anthropic-code-agent[bot] a08c234a53 fix(tests): update file_queries tests to use FileProcessingStep instead of ProcessingLog
- Replace ProcessingLog with FileProcessingStep in sample_files fixture
- Update test comments to reflect using steps instead of logs
- All 10 file_queries tests now pass

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-12 01:59:38 +00:00
anthropic-code-agent[bot] b27788a95e fix(tests): correct step_manager tests to use actual step names from MAIN_PROCESSING_STEPS
- Replace "hash_file" test step with actual MAIN_PROCESSING_STEPS names
- Fix test_get_step_summary to use upload_to_* instead of queue_* for upload counts
- All 12 step_manager tests now pass

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-12 01:57:54 +00:00
Christian Krakau-Louis 02e1445e01 Enhance file detail page with original and processed file previews, GPT metadata display, and text extraction functionality
- Added endpoints for previewing original and processed PDF files.
- Implemented on-demand text extraction from original and processed PDFs.
- Updated file detail page to show original and processed file paths with existence status.
- Introduced GPT metadata display with a collapsible JSON view.
- Enhanced front-end with PDF.js for in-browser PDF rendering and improved user experience.
- Added integration tests for new features including metadata display and file previews.
2026-02-11 23:32:29 +01:00
copilot-swe-agent[bot] a247393e18 fix: update test to use new collision handling function
- Replace unique_filepath with get_unique_filepath_with_counter in tests
- Update test expectations for -0001 suffix format
- All 40 tests passing successfully

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-11 20:17:03 +00:00
copilot-swe-agent[bot] 952e27b339 test: add tests for storage reorganization features
- Add tests for get_unique_filepath_with_counter collision handling
- Add tests for immutable original storage
- Add tests for metadata augmentation with file paths
- Add tests for force_cloud_ocr parameter
- Verify existing process_document tests still pass

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-11 20:13:17 +00:00
copilot-swe-agent[bot] 65b6dc6985 feat: Add comprehensive tests and migration utility for status table
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-11 19:48:17 +00:00
copilot-swe-agent[bot] 52b65868a4 refactor: Address code review feedback - remove redundant imports and use _ for unused variables
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-11 19:42:17 +00:00
copilot-swe-agent[bot] 72cea0d8c9 fix: Update existing test to include timestamp in MockLog
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-11 19:40:34 +00:00
copilot-swe-agent[bot] d8d4294ff0 fix: Make _compute_step_summary order-independent to fix dashboard status bug
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-11 19:38:29 +00:00
copilot-swe-agent[bot] 0fc3fca1b2 style: format test file with black
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-11 18:36:42 +00:00
copilot-swe-agent[bot] 2470768599 test: add timestamps to MockLog for consistency and clarity
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-11 18:35:29 +00:00
copilot-swe-agent[bot] 4fb696e1eb fix: correct file status and metrics to use latest status per step
- Fix _compute_status_from_logs to track latest status per unique step
- Fix _compute_step_summary to count only latest status per step
- Add comprehensive tests for both fixes
- Resolves issue where completed files showed as "Processing"
- Resolves issue where metrics showed incorrect counts

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-11 18:33:41 +00:00
copilot-swe-agent[bot] 8c5ab00428 refactor: extract test URL constant for better maintainability
Address code review feedback by extracting the hardcoded test URL
into a module-level constant to improve maintainability and ensure
consistency across all test methods.

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-11 18:24:03 +00:00
copilot-swe-agent[bot] fad63fcf4b test: add endpoint registration verification tests
Add comprehensive tests to verify critical API endpoints are registered,
including the /api/process-url endpoint. These tests will prevent future
regressions where endpoints might not be properly registered in the app.

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-11 18:22:48 +00:00
copilot-swe-agent[bot] 624b1ddb57 fix(ci): exclude E2E tests requiring Docker-in-Docker from CI
- Add missing pytest markers (e2e, requires_docker) to pyproject.toml
- Update CI workflow to skip E2E tests with -m "not e2e"
- Update integration test documentation with CI configuration notes
- E2E tests can still be run locally with: pytest -m e2e

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-11 18:03:47 +00:00
copilot-swe-agent[bot] bf0151340d fix: resolve DeepSource issues in test files
- Use lazy % formatting in logging (PYL-W1203) in test_external_integrations.py
- Add @staticmethod to 3 methods not using self (PYL-R0201)
- Remove unused mock_media and mock_smtp variables (PYL-W0612)
- Remove redundant local reimports of upload_to_webdav (PYL-W0404)

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-11 17:53:30 +00:00
copilot-swe-agent[bot] 5e82f7c03a refactor: fix static method warnings, hard-coded credentials, and Annotated type hints
- Add @staticmethod to 9 test methods in test_external_integrations.py
  that don't use self (PYL-R0201)
- Extract hard-coded password literals to constants in 6 test files
  to resolve S2068 warnings (fixtures_integration, test_imap_tasks,
  test_upload_tasks, test_upload_webdav_comprehensive,
  test_upload_webdav_integration, test_views_coverage)
- Migrate Form() dependency injection to Annotated type hints in
  dropbox.py, google_drive.py, onedrive.py (Sonar fastapi convention)

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-11 17:03:54 +00:00
copilot-swe-agent[bot] 7c4d6fd025 fix: extract hard-coded test credentials to module-level constants (S2068)
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-11 16:50:37 +00:00
copilot-swe-agent[bot] 7ad2bdfc4b fix(test): fix 5 pre-existing test failures in rate limiting, path traversal, and e2e tests
- test_rate_limiting: remove references to non-existent rate_limit_process setting
- test_path_traversal_security: fix sanitize_filename assertion to match actual
  strip behavior, fix os.path.basename test for Linux (backslash not a separator),
  remove erroneous task_mock arg from embed_metadata_into_pdf direct call
- test_e2e_full_stack: add psycopg2 availability check to skip Postgres test
  when driver is not installed

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-11 15:31:46 +00:00
copilot-swe-agent[bot] 9747487e2b fix(test): correct spelling of recognizable in test comment
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-11 15:17:39 +00:00
copilot-swe-agent[bot] e658dec83c feat(test): add comprehensive external API integration tests with PDF generation
- Add fpdf2 dependency for dynamic test PDF generation
- Create tests/test_external_integrations.py with end-to-end pipeline tests:
  - OpenAI: key validation, metadata extraction via chat completion
  - Azure Document Intelligence: admin connectivity, full OCR on generated PDF
  - S3: bucket access, upload/download/delete pipeline
  - Dropbox: token refresh, upload/download/delete pipeline
  - OneDrive: token refresh, upload/download/delete pipeline
  - Authentik: OIDC discovery endpoint, credential consistency
  - Full pipeline: Azure OCR → OpenAI metadata extraction
- Update tests/conftest.py to capture original env vars before test overrides
- Add has_real_env() helper and original_env fixture for credential detection
- All external tests use @pytest.mark.requires_external and skipif guards
- Test files are dynamically generated with unique content per run
- Uploaded test files are cleaned up in finally blocks

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-11 15:16:53 +00:00
copilot-swe-agent[bot] 037b4aa94e fix(build): sync VERSION file with semantic-release tags and add build time
- Update generate_build_metadata.sh to sync VERSION from latest git tag
- Change BUILD_DATE format from date-only to ISO 8601 with time (YYYY-MM-DDTHH:MM:SSZ)
- Fix VERSION file from 0.5.0 to 0.9.1 (matching latest git tag v0.9.1)
- Change version fallback from hardcoded '0.5.0-dev' to 'unknown' in config.py
- Update release.yml to commit all build metadata files (not just VERSION)
- Update BuildMetadata.md documentation to reflect automated versioning
- Add tests for build_date with time format and version unknown fallback

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-11 14:42:37 +00:00
copilot-swe-agent[bot] 245e298991 feat: add URL-based file upload with SSRF protection
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-11 13:36:23 +00:00
copilot-swe-agent[bot] 21ca941b26 fix(test): add log_task_progress mocks to OCR processing tests
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-11 10:11:49 +00:00
copilot-swe-agent[bot] 6f286e37b3 feat(tasks): add detailed logging to upload_with_rclone task functions
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-11 10:06:51 +00:00
copilot-swe-agent[bot] 3e78ee4c27 fix(logging): address code review feedback for TaskLogCollector robustness
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-11 09:15:44 +00:00
copilot-swe-agent[bot] dfa4b16776 feat(tasks): auto-capture worker log output for all tasks via TaskLogCollector
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-11 09:13:09 +00:00
copilot-swe-agent[bot] b18f5ee13c feat(ui): add verbose worker log detail to processing history on file detail page
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-11 09:06:30 +00:00
copilot-swe-agent[bot] f7799e409d fix(tasks): prevent filename overwrite in extract_metadata_with_gpt and fix embed retry logic
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-11 08:59:27 +00:00
copilot-swe-agent[bot] afb4d9bf85 refactor(api): address code review feedback - extract PDF text helper, improve comments
- Extract duplicated PDF text extraction into _extract_text_from_pdf helper
- Clarify empty metadata dict comment for embed_metadata_into_pdf retry
- Make test assertion for file_id passing more explicit

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-10 21:11:46 +00:00
copilot-swe-agent[bot] 11c7d15a90 fix(tasks): skip duplicate check when reprocessing and enable retry from failed pipeline step
- Add file_id parameter to process_document to skip duplicate hash check on reprocess
- Pass file_id from reprocess_single_file and bulk_reprocess_files endpoints
- Extend retry-subtask endpoint to support pipeline steps (process_document,
  process_with_azure_document_intelligence, extract_metadata_with_gpt,
  embed_metadata_into_pdf) in addition to upload tasks
- Add retry button for failed main pipeline steps in file detail UI
- Add comprehensive tests for reprocessing and pipeline step retry

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-10 21:09:53 +00:00
copilot-swe-agent[bot] 8edc11da04 refactor: extract shared file-status query logic into utility function
- Created app/utils/file_queries.py with apply_status_filter function
- Updated app/api/files.py to use shared function
- Updated app/views/files.py to use shared function
- Removed unused 'or_' import from app/api/files.py
- Added comprehensive tests in tests/test_file_queries.py
- All tests pass (10 new tests, 14 existing tests verified)

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-10 20:40:11 +00:00
copilot-swe-agent[bot] da2be01855 test: Fix rate limiting tests to use existing endpoints
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-10 16:20:38 +00:00
copilot-swe-agent[bot] 8d347e0a53 feat: Add rate limiting middleware with SlowAPI
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-10 16:17:53 +00:00
copilot-swe-agent[bot] 1a44de3ea4 style: format test_api_auth_enabled.py with Black and isort
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-10 15:53:11 +00:00
copilot-swe-agent[bot] 9795a3966a docs: add comprehensive test setup documentation and auth integration tests
- Add detailed test setup section to CONTRIBUTING.md explaining environment configuration
- Add testing section to README.md with quick start guide
- Create test_api_auth_enabled.py with 11 new integration tests for auth configuration
- Document that tests automatically configure required environment variables (no manual setup)
- Explain AUTH_ENABLED and SESSION_SECRET configuration for tests
- Include examples of testing with authentication enabled
- Reference integration test documentation for Docker-based tests

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-10 15:50:13 +00:00
copilot-swe-agent[bot] fb50c8b375 test: add full-stack integration testing with real infrastructure (PostgreSQL, Redis, Gotenberg, WebDAV, SFTP, MinIO)
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-10 15:24:35 +00:00
copilot-swe-agent[bot] f2d70e90cf test: add comprehensive WebDAV tests with real server and Redis integration
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-10 15:18:17 +00:00
copilot-swe-agent[bot] 787d48c70e test: create comprehensive WebDAV integration tests with real server
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-10 15:13:10 +00:00
copilot-swe-agent[bot] 20a0e43a11 docs: address code review comments
- Fix test count in SECURITY_AUDIT.md (11 tests, not 24)
- Add deprecation note for ALLOW-FROM in X-Frame-Options
- Update documentation to recommend CSP frame-ancestors instead

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-10 14:10:23 +00:00