chore: replace selenium user with fixed user (#31844)

This commit is contained in:
Ville Brofeldt
2025-01-22 12:46:06 -08:00
committed by GitHub
parent 1d6423e71f
commit 7482b20f7b
25 changed files with 304 additions and 215 deletions

View File

@@ -30,7 +30,7 @@ from superset import db, is_feature_enabled, security_manager
from superset.extensions import machine_auth_provider_factory
from superset.models.dashboard import Dashboard
from superset.models.slice import Slice
from superset.tasks.types import ExecutorType
from superset.tasks.types import ExecutorType, FixedExecutor
from superset.utils import json
from superset.utils.screenshots import ChartScreenshot, DashboardScreenshot
from superset.utils.urls import get_url_path
@@ -53,8 +53,8 @@ class TestThumbnailsSeleniumLive(LiveServerTestCase):
return app
def url_open_auth(self, username: str, url: str):
admin_user = security_manager.find_user(username=username)
cookies = machine_auth_provider_factory.instance.get_auth_cookies(admin_user)
user = security_manager.find_user(username=username)
cookies = machine_auth_provider_factory.instance.get_auth_cookies(user)
opener = urllib.request.build_opener()
opener.addheaders.append(("Cookie", f"session={cookies['session']}"))
return opener.open(f"{self.get_server_url()}/{url}")
@@ -70,7 +70,7 @@ class TestThumbnailsSeleniumLive(LiveServerTestCase):
thumbnail_url = resp["result"][0]["thumbnail_url"]
response = self.url_open_auth(
"admin",
ADMIN_USERNAME,
thumbnail_url,
)
assert response.getcode() == 202
@@ -84,9 +84,7 @@ class TestWebDriverScreenshotErrorDetector(SupersetTestCase):
self, mock_find_unexpected_errors, mock_firefox, mock_webdriver_wait
):
webdriver_proxy = WebDriverSelenium("firefox")
user = security_manager.get_user_by_username(
app.config["THUMBNAIL_SELENIUM_USER"]
)
user = security_manager.get_user_by_username(ADMIN_USERNAME)
url = get_url_path("Superset.dashboard", dashboard_id_or_slug=1)
webdriver_proxy.get_screenshot(url, "grid-container", user=user)
@@ -100,9 +98,7 @@ class TestWebDriverScreenshotErrorDetector(SupersetTestCase):
):
app.config["SCREENSHOT_REPLACE_UNEXPECTED_ERRORS"] = True
webdriver_proxy = WebDriverSelenium("firefox")
user = security_manager.get_user_by_username(
app.config["THUMBNAIL_SELENIUM_USER"]
)
user = security_manager.get_user_by_username(ADMIN_USERNAME)
url = get_url_path("Superset.dashboard", dashboard_id_or_slug=1)
webdriver_proxy.get_screenshot(url, "grid-container", user=user)
@@ -149,9 +145,7 @@ class TestWebDriverSelenium(SupersetTestCase):
self, mock_sleep, mock_webdriver, mock_webdriver_wait
):
webdriver = WebDriverSelenium("firefox")
user = security_manager.get_user_by_username(
app.config["THUMBNAIL_SELENIUM_USER"]
)
user = security_manager.get_user_by_username(ADMIN_USERNAME)
url = get_url_path("Superset.slice", slice_id=1, standalone="true")
app.config["SCREENSHOT_SELENIUM_HEADSTART"] = 5
webdriver.get_screenshot(url, "chart-container", user=user)
@@ -162,9 +156,7 @@ class TestWebDriverSelenium(SupersetTestCase):
def test_screenshot_selenium_locate_wait(self, mock_webdriver, mock_webdriver_wait):
app.config["SCREENSHOT_LOCATE_WAIT"] = 15
webdriver = WebDriverSelenium("firefox")
user = security_manager.get_user_by_username(
app.config["THUMBNAIL_SELENIUM_USER"]
)
user = security_manager.get_user_by_username(ADMIN_USERNAME)
url = get_url_path("Superset.slice", slice_id=1, standalone="true")
webdriver.get_screenshot(url, "chart-container", user=user)
assert mock_webdriver_wait.call_args_list[0] == call(ANY, 15)
@@ -174,9 +166,7 @@ class TestWebDriverSelenium(SupersetTestCase):
def test_screenshot_selenium_load_wait(self, mock_webdriver, mock_webdriver_wait):
app.config["SCREENSHOT_LOAD_WAIT"] = 15
webdriver = WebDriverSelenium("firefox")
user = security_manager.get_user_by_username(
app.config["THUMBNAIL_SELENIUM_USER"]
)
user = security_manager.get_user_by_username(ADMIN_USERNAME)
url = get_url_path("Superset.slice", slice_id=1, standalone="true")
webdriver.get_screenshot(url, "chart-container", user=user)
assert mock_webdriver_wait.call_args_list[2] == call(ANY, 15)
@@ -188,9 +178,7 @@ class TestWebDriverSelenium(SupersetTestCase):
self, mock_sleep, mock_webdriver, mock_webdriver_wait
):
webdriver = WebDriverSelenium("firefox")
user = security_manager.get_user_by_username(
app.config["THUMBNAIL_SELENIUM_USER"]
)
user = security_manager.get_user_by_username(ADMIN_USERNAME)
url = get_url_path("Superset.slice", slice_id=1, standalone="true")
app.config["SCREENSHOT_SELENIUM_ANIMATION_WAIT"] = 4
webdriver.get_screenshot(url, "chart-container", user=user)
@@ -232,7 +220,7 @@ class TestThumbnails(SupersetTestCase):
@pytest.mark.usefixtures("load_birth_names_dashboard_with_slices")
@with_feature_flags(THUMBNAILS=True)
def test_get_async_dashboard_screenshot_as_selenium(self):
def test_get_async_dashboard_screenshot_as_fixed_user(self):
"""
Thumbnails: Simple get async dashboard screenshot as selenium user
"""
@@ -241,7 +229,7 @@ class TestThumbnails(SupersetTestCase):
patch.dict(
"superset.thumbnails.digest.current_app.config",
{
"THUMBNAIL_EXECUTE_AS": [ExecutorType.SELENIUM],
"THUMBNAIL_EXECUTORS": [FixedExecutor(ADMIN_USERNAME)],
},
),
patch(
@@ -251,8 +239,8 @@ class TestThumbnails(SupersetTestCase):
mock_adjust_string.return_value = self.digest_return_value
_, thumbnail_url = self._get_id_and_thumbnail_url(DASHBOARD_URL)
assert self.digest_hash in thumbnail_url
assert mock_adjust_string.call_args[0][1] == ExecutorType.SELENIUM
assert mock_adjust_string.call_args[0][2] == "admin"
assert mock_adjust_string.call_args[0][1] == ExecutorType.FIXED_USER
assert mock_adjust_string.call_args[0][2] == ADMIN_USERNAME
rv = self.client.get(thumbnail_url)
assert rv.status_code == 202
@@ -269,7 +257,7 @@ class TestThumbnails(SupersetTestCase):
patch.dict(
"superset.thumbnails.digest.current_app.config",
{
"THUMBNAIL_EXECUTE_AS": [ExecutorType.CURRENT_USER],
"THUMBNAIL_EXECUTORS": [ExecutorType.CURRENT_USER],
},
),
patch(
@@ -310,7 +298,7 @@ class TestThumbnails(SupersetTestCase):
@pytest.mark.usefixtures("load_birth_names_dashboard_with_slices")
@with_feature_flags(THUMBNAILS=True)
def test_get_async_chart_screenshot_as_selenium(self):
def test_get_async_chart_screenshot_as_fixed_user(self):
"""
Thumbnails: Simple get async chart screenshot as selenium user
"""
@@ -319,7 +307,7 @@ class TestThumbnails(SupersetTestCase):
patch.dict(
"superset.thumbnails.digest.current_app.config",
{
"THUMBNAIL_EXECUTE_AS": [ExecutorType.SELENIUM],
"THUMBNAIL_EXECUTORS": [FixedExecutor(ADMIN_USERNAME)],
},
),
patch(
@@ -329,8 +317,8 @@ class TestThumbnails(SupersetTestCase):
mock_adjust_string.return_value = self.digest_return_value
_, thumbnail_url = self._get_id_and_thumbnail_url(CHART_URL)
assert self.digest_hash in thumbnail_url
assert mock_adjust_string.call_args[0][1] == ExecutorType.SELENIUM
assert mock_adjust_string.call_args[0][2] == "admin"
assert mock_adjust_string.call_args[0][1] == ExecutorType.FIXED_USER
assert mock_adjust_string.call_args[0][2] == ADMIN_USERNAME
rv = self.client.get(thumbnail_url)
assert rv.status_code == 202
@@ -347,7 +335,7 @@ class TestThumbnails(SupersetTestCase):
patch.dict(
"superset.thumbnails.digest.current_app.config",
{
"THUMBNAIL_EXECUTE_AS": [ExecutorType.CURRENT_USER],
"THUMBNAIL_EXECUTORS": [ExecutorType.CURRENT_USER],
},
),
patch(