chore: Remove database ID dependency for SSH Tunnel creation (#26989)

This commit is contained in:
Geido
2024-02-07 18:03:19 +02:00
committed by GitHub
parent 43e1dc49c9
commit d8e26cfff1
6 changed files with 51 additions and 73 deletions

View File

@@ -538,14 +538,16 @@ class TestDatabaseApi(SupersetTestCase):
@mock.patch(
"superset.models.core.Database.get_all_schema_names",
)
@mock.patch("superset.extensions.db.session.rollback")
def test_do_not_create_database_if_ssh_tunnel_creation_fails(
self,
mock_rollback,
mock_test_connection_database_command_run,
mock_create_is_feature_enabled,
mock_get_all_schema_names,
):
"""
Database API: Test Database is not created if SSH Tunnel creation fails
Database API: Test rollback is called if SSH Tunnel creation fails
"""
mock_create_is_feature_enabled.return_value = True
self.login(username="admin")
@@ -566,6 +568,7 @@ class TestDatabaseApi(SupersetTestCase):
rv = self.client.post(uri, json=database_data)
response = json.loads(rv.data.decode("utf-8"))
self.assertEqual(rv.status_code, 422)
model_ssh_tunnel = (
db.session.query(SSHTunnel)
.filter(SSHTunnel.database_id == response.get("id"))
@@ -573,14 +576,9 @@ class TestDatabaseApi(SupersetTestCase):
)
assert model_ssh_tunnel is None
self.assertEqual(response, fail_message)
# Cleanup
model = (
db.session.query(Database)
.filter(Database.database_name == "test-db-failure-ssh-tunnel")
.one_or_none()
)
# the DB should not be created
assert model is None
# Check that rollback was called
mock_rollback.assert_called()
@mock.patch(
"superset.commands.database.test_connection.TestConnectionDatabaseCommand.run",