7a0da7932b
OSV-Scanner (Scheduled) / scan-scheduled (push) Failing after 0s
Create Release / test-gate (push) Has been cancelled
Create Release / release-gate (push) Has been cancelled
Create Release / ci-gate (push) Has been cancelled
Create Release / version-check (push) Has been cancelled
Create Release / e2e-test-gate (push) Has been cancelled
Create Release / responsive-test-gate (push) Has been cancelled
Create Release / compat-test-gate (push) Has been cancelled
Create Release / compose-integration-gate (push) Has been cancelled
Create Release / vulture-gate (push) Has been cancelled
Create Release / build (push) Has been cancelled
Create Release / provenance (push) Has been cancelled
Create Release / prerelease-docker (push) Has been cancelled
Create Release / publish-docker (push) Has been cancelled
Create Release / create-release (push) Has been cancelled
Create Release / cleanup-changelog (push) Has been cancelled
Create Release / trigger-pypi (push) Has been cancelled
Create Release / monitor-pypi (push) Has been cancelled
Create Release / Clean up orphan prerelease tags and signatures (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [research-form] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [research-metrics] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [research-workflow] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [settings-core] (push) Has been cancelled
CodeQL Advanced / Analyze (javascript-typescript) (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [history-news] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [library] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [link-analytics] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [chat-core] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [chat-lifecycle] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [error-benchmark] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [settings-pages] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) (push) Has been cancelled
Docker Tests (Consolidated) / Accessibility Tests (push) Has been cancelled
Docker Tests (Consolidated) / LLM Unit Tests (push) Has been cancelled
Docker Tests (Consolidated) / LLM Example Tests (push) Has been cancelled
Docker Tests (Consolidated) / Production Image Smoke Test (push) Has been cancelled
Docker Tests (Consolidated) / Infrastructure Tests (push) Has been cancelled
OSSF Scorecard / OSSF Security Scorecard Analysis (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [mobile] (push) Has been cancelled
Backwards Compatibility / Verify Encryption Constants (push) Has been cancelled
Backwards Compatibility / PyPI Version Compatibility (push) Has been cancelled
Backwards Compatibility / Database Migration Tests (push) Has been cancelled
CodeQL Advanced / Analyze (python) (push) Has been cancelled
Docker Tests (Consolidated) / detect-changes (push) Has been cancelled
Docker Tests (Consolidated) / Build Test Image (push) Has been cancelled
Docker Tests (Consolidated) / All Pytest Tests + Coverage (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [accessibility] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [api-crud] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [auth-login] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [auth-pages] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [auth-register] (push) Has been cancelled
58 lines
2.2 KiB
Python
58 lines
2.2 KiB
Python
"""Shared fixtures for socket-service tests.
|
|
|
|
The chat feature added a research-ownership guard to
|
|
``SocketIOService.__handle_subscribe`` so that an authenticated user
|
|
cannot subscribe to another user's research_id. The check pulls
|
|
``username`` from ``flask.session`` and consults the user's encrypted
|
|
DB via the new ``_user_owns_research`` helper.
|
|
|
|
Pre-existing socket-service tests in this directory exercise the
|
|
subscription bookkeeping (set membership, snapshot emit, etc.) and do
|
|
NOT set up a Flask request context or a real DB. To keep their intent
|
|
intact, this autouse fixture mocks the new authorization layer so every
|
|
test in this directory exercises the subscribe-as-owner code path
|
|
unless it opts out by overriding the fixtures.
|
|
|
|
Tests that explicitly want to exercise the negative path
|
|
(``_user_owns_research → False`` or ``session.get("username") → None``)
|
|
should override the relevant mock with their own ``patch.object`` call
|
|
inside the test body.
|
|
"""
|
|
|
|
from unittest.mock import patch
|
|
|
|
import pytest
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _allow_socket_subscribe(monkeypatch):
|
|
"""Patch ``socket_service.session`` and ``_user_owns_research`` so
|
|
tests that call ``__handle_subscribe`` don't crash on the new
|
|
ownership check.
|
|
|
|
Scope: function. The patches are torn down at test exit.
|
|
"""
|
|
# Lazy import — keep this conftest cheap for tests that never touch
|
|
# the socket service at all. Some tests in this dir import via
|
|
# ``local_deep_research...`` while others use ``src.local_deep_research...``;
|
|
# Python may cache them as separate module identities, so resolve
|
|
# whichever is importable and patch its session binding.
|
|
try:
|
|
from local_deep_research.web.services.socket_service import (
|
|
SocketIOService,
|
|
)
|
|
|
|
module_path = "local_deep_research.web.services.socket_service"
|
|
except ImportError:
|
|
from src.local_deep_research.web.services.socket_service import (
|
|
SocketIOService,
|
|
)
|
|
|
|
module_path = "src.local_deep_research.web.services.socket_service"
|
|
|
|
with (
|
|
patch(f"{module_path}.session", {"username": "test-owner"}),
|
|
patch.object(SocketIOService, "_user_owns_research", return_value=True),
|
|
):
|
|
yield
|