feat: default ports for SSH tunnel (#32403)

This commit is contained in:
Beto Dealmeida
2025-02-27 10:59:48 -05:00
committed by GitHub
parent 74733ae310
commit f4105e9ed2
7 changed files with 228 additions and 20 deletions

View File

@@ -17,6 +17,7 @@
import pytest
from sqlalchemy.orm.session import Session
from superset.commands.database.ssh_tunnel.exceptions import (
SSHTunnelDatabasePortError,
@@ -24,13 +25,16 @@ from superset.commands.database.ssh_tunnel.exceptions import (
)
def test_create_ssh_tunnel_command() -> None:
def test_create_ssh_tunnel_command(session: Session) -> None:
from superset import db
from superset.commands.database.ssh_tunnel.create import CreateSSHTunnelCommand
from superset.databases.ssh_tunnel.models import SSHTunnel
from superset.models.core import Database
engine = db.session.get_bind()
Database.metadata.create_all(engine) # pylint: disable=no-member
database = Database(
id=1,
database_name="my_database",
sqlalchemy_uri="postgresql://u:p@localhost:5432/db",
)
@@ -49,12 +53,15 @@ def test_create_ssh_tunnel_command() -> None:
assert isinstance(result, SSHTunnel)
def test_create_ssh_tunnel_command_invalid_params() -> None:
def test_create_ssh_tunnel_command_invalid_params(session: Session) -> None:
from superset import db
from superset.commands.database.ssh_tunnel.create import CreateSSHTunnelCommand
from superset.models.core import Database
engine = db.session.get_bind()
Database.metadata.create_all(engine) # pylint: disable=no-member
database = Database(
id=1,
database_name="my_database",
sqlalchemy_uri="postgresql://u:p@localhost:5432/db",
)
@@ -76,14 +83,52 @@ def test_create_ssh_tunnel_command_invalid_params() -> None:
assert str(excinfo.value) == ("SSH Tunnel parameters are invalid.")
def test_create_ssh_tunnel_command_no_port() -> None:
def test_create_ssh_tunnel_command_no_port(session: Session) -> None:
"""
Test that SSH Tunnel can be created without explicit port but with a default one.
"""
from superset import db
from superset.commands.database.ssh_tunnel.create import CreateSSHTunnelCommand
from superset.databases.ssh_tunnel.models import SSHTunnel
from superset.models.core import Database
engine = db.session.get_bind()
Database.metadata.create_all(engine) # pylint: disable=no-member
database = Database(
database_name="my_database",
sqlalchemy_uri="postgresql://u:p@localhost/db",
)
properties = {
"database": database,
"server_address": "123.132.123.1",
"server_port": "3005",
"username": "foo",
"password": "bar",
}
result = CreateSSHTunnelCommand(database, properties).run()
assert result is not None
assert isinstance(result, SSHTunnel)
def test_create_ssh_tunnel_command_no_port_no_default(session: Session) -> None:
"""
Test that error is raised when creating SSH Tunnel without explicit/default ports.
"""
from superset import db
from superset.commands.database.ssh_tunnel.create import CreateSSHTunnelCommand
from superset.models.core import Database
engine = db.session.get_bind()
Database.metadata.create_all(engine) # pylint: disable=no-member
database = Database(
id=1,
database_name="my_database",
sqlalchemy_uri="postgresql://u:p@localhost/db",
sqlalchemy_uri="weird+db://u:p@localhost/db",
)
properties = {