feat(db): Adding DB_SQLA_URI_VALIDATOR (#27847)

This commit is contained in:
Craig Rueda
2024-04-02 09:00:32 -07:00
committed by GitHub
parent 9fece4f811
commit 8bdf457dfa
4 changed files with 36 additions and 1 deletions

View File

@@ -23,6 +23,7 @@ import pytest
from pytest_mock import MockFixture
from sqlalchemy import types
from sqlalchemy.dialects import sqlite
from sqlalchemy.engine.url import URL
from sqlalchemy.sql import sqltypes
from superset.superset_typing import ResultSetColumnType, SQLAColumnType
@@ -69,6 +70,25 @@ def test_parse_sql_multi_statement() -> None:
]
def test_validate_db_uri(mocker: MockFixture) -> None:
"""
Ensures that the `validate_database_uri` method invokes the validator correctly
"""
def mock_validate(sqlalchemy_uri: URL) -> None:
raise ValueError("Invalid URI")
mocker.patch(
"superset.db_engine_specs.base.current_app.config",
{"DB_SQLA_URI_VALIDATOR": mock_validate},
)
from superset.db_engine_specs.base import BaseEngineSpec
with pytest.raises(ValueError):
BaseEngineSpec.validate_database_uri(URL.create("sqlite"))
@pytest.mark.parametrize(
"original,expected",
[

View File

@@ -124,7 +124,7 @@ def test_superset_limit(mocker: MockFixture, app_context: None, table1: None) ->
"""
mocker.patch(
"superset.extensions.metadb.current_app.config",
{"SUPERSET_META_DB_LIMIT": 1},
{"DB_SQLA_URI_VALIDATOR": None, "SUPERSET_META_DB_LIMIT": 1},
)
mocker.patch("superset.extensions.metadb.security_manager")