From 487a838cf35b91d2218bdd07feed87ee61aefcf8 Mon Sep 17 00:00:00 2001 From: Evan Rusackas Date: Sat, 8 Aug 2026 21:59:58 -0700 Subject: [PATCH] test(tasks): authorize get_status polling test and OAuth2 callback tests for session binding Co-Authored-By: Claude Opus 4.8 --- tests/unit_tests/daos/test_tasks.py | 11 ++++++++++- tests/unit_tests/databases/api_test.py | 12 ++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/tests/unit_tests/daos/test_tasks.py b/tests/unit_tests/daos/test_tasks.py index 8a5d77c69ed..a24ad870fd5 100644 --- a/tests/unit_tests/daos/test_tasks.py +++ b/tests/unit_tests/daos/test_tasks.py @@ -19,6 +19,7 @@ from collections.abc import Iterator from uuid import UUID import pytest +from pytest_mock import MockerFixture from sqlalchemy.orm.session import Session from superset_core.tasks.types import TaskProperties, TaskScope, TaskStatus @@ -395,9 +396,15 @@ def test_remove_subscriber_not_subscribed(session_with_task: Session) -> None: assert result is None -def test_get_status(session_with_task: Session) -> None: +def test_get_status(session_with_task: Session, mocker: MockerFixture) -> None: """Test get_status returns status string when task found by UUID""" from superset.daos.tasks import TaskDAO + from superset.models.task_subscribers import TaskSubscriber + + # get_status enforces the TaskFilter, so the polling user must be + # authenticated and subscribed to see the task. + mocker.patch("superset.tasks.filters.get_user_id", return_value=TEST_USER_ID) + mocker.patch("superset.security_manager.is_admin", return_value=False) task = create_task( session_with_task, @@ -405,6 +412,8 @@ def test_get_status(session_with_task: Session) -> None: task_key="status-task", status=TaskStatus.IN_PROGRESS, ) + session_with_task.add(TaskSubscriber(task_id=task.id, user_id=TEST_USER_ID)) + session_with_task.flush() result = TaskDAO.get_status(task.uuid) diff --git a/tests/unit_tests/databases/api_test.py b/tests/unit_tests/databases/api_test.py index 4e8f19dbb24..7bc8eb178aa 100644 --- a/tests/unit_tests/databases/api_test.py +++ b/tests/unit_tests/databases/api_test.py @@ -700,6 +700,10 @@ def test_oauth2_happy_path( return_value=None, ) + mocker.patch( + "superset.commands.database.oauth2.get_user_id", + return_value=1, + ) state: OAuth2State = { "user_id": 1, "database_id": 1, @@ -776,6 +780,10 @@ def test_oauth2_permissions( return_value=None, ) + mocker.patch( + "superset.commands.database.oauth2.get_user_id", + return_value=1, + ) state: OAuth2State = { "user_id": 1, "database_id": 1, @@ -857,6 +865,10 @@ def test_oauth2_multiple_tokens( return_value=None, ) + mocker.patch( + "superset.commands.database.oauth2.get_user_id", + return_value=1, + ) state: OAuth2State = { "user_id": 1, "database_id": 1,