feat: Implement local Mock Databus server for offline testing #52
+115
−15
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Pull Request
Description
Addressing the advanced requirement in Issue #20: "Create a local dummy Databus for testing core functionality offline."
Currently, tests depend on the live Databus, making them brittle and dependent on internet access. I have implemented a
mock_databusfixture inconftest.pyto solve this.Features:
Ephemeral Port Binding: Automatically finds a free port (binds to
localhost:0) to avoid conflicts.Threaded Execution: Runs the
HTTPServerin a background daemon thread.Fixture Integration: Returns the dynamic base URL (e.g.,
http://localhost:58074) directly to tests.Proof of Concept: Added
tests/test_download_mock.pyto verify the mock server handles requests and returns 404s correctly.Terminal output showing the Mock Server starting on a random port and handling a request:
This provides the infrastructure needed to rewrite the download tests (Issue #20) without external dependencies.
Related Issues
Part of #20
Type of change
Checklist:
poetry run pytest- all tests passedpoetry run ruff check- no linting errorsSummary by CodeRabbit
Tests
✏️ Tip: You can customize this high-level summary in your review settings.