mirror of
https://github.com/apache/superset.git
synced 2026-04-19 16:14:52 +00:00
fix(OAuth2): Update connection should not fail if connection is missing OAuth2 token (#33100)
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user