This is an automated email from the ASF dual-hosted git repository.

michaelsmolina pushed a commit to branch 5.0
in repository https://gitbox.apache.org/repos/asf/superset.git

commit 3f2ddbac82729241309f8fceef7c2c64f61637ab
Author: Beto Dealmeida <[email protected]>
AuthorDate: Fri Mar 14 12:00:53 2025 -0400

    fix(gsheets): update params from encrypted extra (#32661)
---
 superset/db_engine_specs/gsheets.py              | 13 +++++++++++++
 tests/unit_tests/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 65afd9aee9..b5c8165d17 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 5405f74202..d70cf9ba65 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"}

Reply via email to