fix(OAuth2): Update connection should not fail if connection is missing OAuth2 token (#33100)

This commit is contained in:
Vitor Avila
2025-04-14 11:19:55 -03:00
committed by GitHub
parent e1f5c49df7
commit a5a91d5e48
6 changed files with 58 additions and 3 deletions

View File

@@ -35,6 +35,7 @@ from sqlalchemy.exc import DBAPIError
from sqlalchemy.sql import func
from superset import db, security_manager
from superset.commands.database.exceptions import MissingOAuth2TokenError
from superset.connectors.sqla.models import SqlaTable
from superset.databases.ssh_tunnel.models import SSHTunnel
from superset.databases.utils import make_url_safe # noqa: F401
@@ -1393,6 +1394,32 @@ class TestDatabaseApi(SupersetTestCase):
db.session.delete(model)
db.session.commit()
@mock.patch(
"superset.commands.database.sync_permissions.SyncPermissionsCommand.run",
)
def test_update_database_missing_oauth2_token(self, mock_sync_perms):
"""
Database API: Test update DB connection that does not have
an OAuth2 token yet does not raise.
"""
example_db = get_example_database()
test_database = self.insert_database(
"test-oauth-database", example_db.sqlalchemy_uri_decrypted
)
mock_sync_perms.side_effect = MissingOAuth2TokenError()
self.login(ADMIN_USERNAME)
database_data = {
"database_name": "test-database-updated",
"configuration_method": ConfigurationMethod.SQLALCHEMY_FORM,
}
uri = f"api/v1/database/{test_database.id}"
rv = self.client.put(uri, json=database_data)
assert rv.status_code == 200
# Cleanup
model = db.session.query(Database).get(test_database.id)
db.session.delete(model)
db.session.commit()
def test_update_database_uniqueness(self):
"""
Database API: Test update uniqueness