mirror of
https://github.com/apache/superset.git
synced 2026-04-19 08:04:53 +00:00
fix(Explore): Apply RLS at column values (#30490)
Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>
This commit is contained in:
@@ -21,6 +21,7 @@ from __future__ import annotations
|
||||
|
||||
from contextlib import contextmanager
|
||||
from typing import TYPE_CHECKING
|
||||
from unittest.mock import patch
|
||||
|
||||
import pytest
|
||||
from pytest_mock import MockerFixture
|
||||
@@ -85,6 +86,58 @@ def test_values_for_column(database: Database) -> None:
|
||||
assert table.values_for_column("a") == [1, None]
|
||||
|
||||
|
||||
def test_values_for_column_with_rls(database: Database) -> None:
|
||||
"""
|
||||
Test the `values_for_column` method with RLS enabled.
|
||||
"""
|
||||
from sqlalchemy.sql.elements import TextClause
|
||||
|
||||
from superset.connectors.sqla.models import SqlaTable, TableColumn
|
||||
|
||||
table = SqlaTable(
|
||||
database=database,
|
||||
schema=None,
|
||||
table_name="t",
|
||||
columns=[
|
||||
TableColumn(column_name="a"),
|
||||
],
|
||||
)
|
||||
with patch.object(
|
||||
table,
|
||||
"get_sqla_row_level_filters",
|
||||
return_value=[
|
||||
TextClause("a = 1"),
|
||||
],
|
||||
):
|
||||
assert table.values_for_column("a") == [1]
|
||||
|
||||
|
||||
def test_values_for_column_with_rls_no_values(database: Database) -> None:
|
||||
"""
|
||||
Test the `values_for_column` method with RLS enabled and no values.
|
||||
"""
|
||||
from sqlalchemy.sql.elements import TextClause
|
||||
|
||||
from superset.connectors.sqla.models import SqlaTable, TableColumn
|
||||
|
||||
table = SqlaTable(
|
||||
database=database,
|
||||
schema=None,
|
||||
table_name="t",
|
||||
columns=[
|
||||
TableColumn(column_name="a"),
|
||||
],
|
||||
)
|
||||
with patch.object(
|
||||
table,
|
||||
"get_sqla_row_level_filters",
|
||||
return_value=[
|
||||
TextClause("a = 2"),
|
||||
],
|
||||
):
|
||||
assert table.values_for_column("a") == []
|
||||
|
||||
|
||||
def test_values_for_column_calculated(
|
||||
mocker: MockerFixture,
|
||||
database: Database,
|
||||
|
||||
Reference in New Issue
Block a user