From 3f2ddbac82729241309f8fceef7c2c64f61637ab Mon Sep 17 00:00:00 2001 From: Beto Dealmeida Date: Fri, 14 Mar 2025 12:00:53 -0400 Subject: [PATCH] fix(gsheets): update params from encrypted extra (#32661) --- superset/db_engine_specs/gsheets.py | 13 +++++++++++ .../db_engine_specs/test_gsheets.py | 22 ++++++++++++++++++- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/superset/db_engine_specs/gsheets.py b/superset/db_engine_specs/gsheets.py index 65afd9aee93..b5c8165d172 100644 --- a/superset/db_engine_specs/gsheets.py +++ b/superset/db_engine_specs/gsheets.py @@ -167,6 +167,19 @@ class GSheetsEngineSpec(ShillelaghEngineSpec): ) -> str: return "gsheets://" + @staticmethod + def update_params_from_encrypted_extra( + database: Database, + params: dict[str, Any], + ) -> None: + """ + Remove `oauth2_client_info` from `encrypted_extra`. + """ + ShillelaghEngineSpec.update_params_from_encrypted_extra(database, params) + + if "oauth2_client_info" in params: + del params["oauth2_client_info"] + @classmethod def get_parameters_from_uri( cls, diff --git a/tests/unit_tests/db_engine_specs/test_gsheets.py b/tests/unit_tests/db_engine_specs/test_gsheets.py index 5405f742022..d70cf9ba655 100644 --- a/tests/unit_tests/db_engine_specs/test_gsheets.py +++ b/tests/unit_tests/db_engine_specs/test_gsheets.py @@ -17,7 +17,7 @@ # pylint: disable=import-outside-toplevel, invalid-name, line-too-long -from typing import TYPE_CHECKING +from typing import Any, TYPE_CHECKING from urllib.parse import parse_qs, urlparse import pandas as pd @@ -670,3 +670,23 @@ def test_get_oauth2_fresh_token( }, timeout=30.0, ) + + +def test_update_params_from_encrypted_extra(mocker: MockerFixture) -> None: + """ + Test `update_params_from_encrypted_extra`. + """ + from superset.db_engine_specs.gsheets import GSheetsEngineSpec + + database = mocker.MagicMock( + encrypted_extra=json.dumps( + { + "oauth2_client_info": "SECRET", + "foo": "bar", + } + ) + ) + params: dict[str, Any] = {} + + GSheetsEngineSpec.update_params_from_encrypted_extra(database, params) + assert params == {"foo": "bar"}