This is an automated email from the ASF dual-hosted git repository. hugh pushed a commit to branch ssh-create-command in repository https://gitbox.apache.org/repos/asf/superset.git
commit 1b4e0b338335b1846c394d96174a7dd5345531e3 Author: hughhhh <[email protected]> AuthorDate: Wed Nov 16 14:32:00 2022 -0500 change name --- superset/databases/ssh_tunnel/commands/create.py | 5 +- superset/databases/ssh_tunnel/models.py | 2 +- ...c2d8ec8595_create_ssh_tunnel_credentials_tbl.py | 4 +- .../databases/ssh_tunnel/commands/create_test.py | 64 +++++----------------- 4 files changed, 20 insertions(+), 55 deletions(-) diff --git a/superset/databases/ssh_tunnel/commands/create.py b/superset/databases/ssh_tunnel/commands/create.py index 56eb575fd3..43cf7df1ba 100644 --- a/superset/databases/ssh_tunnel/commands/create.py +++ b/superset/databases/ssh_tunnel/commands/create.py @@ -24,9 +24,7 @@ from superset.commands.base import BaseCommand from superset.dao.exceptions import DAOCreateFailedError from superset.databases.commands.exceptions import SSHTunnelCreateFailedError from superset.databases.commands.test_connection import TestConnectionDatabaseCommand -from superset.databases.ssh_tunnel_dao import SSHTunnelDAO -from superset.exceptions import SupersetErrorsException -from superset.extensions import db, event_logger, security_manager +from superset.databases.ssh_tunnel.dao import SSHTunnelDAO logger = logging.getLogger(__name__) @@ -47,4 +45,5 @@ class CreateSSHTunnelCommand(BaseCommand): return tunnel def validate(self) -> None: + # check to make sure the server port is not localhost pass diff --git a/superset/databases/ssh_tunnel/models.py b/superset/databases/ssh_tunnel/models.py index 02ece395ea..7b97b04320 100644 --- a/superset/databases/ssh_tunnel/models.py +++ b/superset/databases/ssh_tunnel/models.py @@ -38,7 +38,7 @@ class SSHTunnel(Model, AuditMixinNullable, ExtraJSONMixin, ImportExportMixin): A ssh tunnel configuration in a database. """ - __tablename__ = "ssh_tunnel" + __tablename__ = "ssh_tunnels" id = sa.Column(sa.Integer, primary_key=True) database_id = sa.Column(sa.Integer, sa.ForeignKey("dbs.id"), nullable=False) diff --git a/superset/migrations/versions/2022-10-20_10-48_f3c2d8ec8595_create_ssh_tunnel_credentials_tbl.py b/superset/migrations/versions/2022-10-20_10-48_f3c2d8ec8595_create_ssh_tunnel_credentials_tbl.py index 9023caa017..e0b874fccd 100644 --- a/superset/migrations/versions/2022-10-20_10-48_f3c2d8ec8595_create_ssh_tunnel_credentials_tbl.py +++ b/superset/migrations/versions/2022-10-20_10-48_f3c2d8ec8595_create_ssh_tunnel_credentials_tbl.py @@ -40,7 +40,7 @@ app_config = app.config def upgrade(): op.create_table( - "ssh_tunnel_credentials", + "ssh_tunnels", # AuditMixinNullable sa.Column("created_on", sa.DateTime(), nullable=True), sa.Column("changed_on", sa.DateTime(), nullable=True), @@ -72,4 +72,4 @@ def upgrade(): def downgrade(): - op.drop_table("ssh_tunnel") + op.drop_table("ssh_tunnels") diff --git a/tests/unit_tests/databases/ssh_tunnel/commands/create_test.py b/tests/unit_tests/databases/ssh_tunnel/commands/create_test.py index f472d71689..c828f86f43 100644 --- a/tests/unit_tests/databases/ssh_tunnel/commands/create_test.py +++ b/tests/unit_tests/databases/ssh_tunnel/commands/create_test.py @@ -15,59 +15,25 @@ # specific language governing permissions and limitations # under the License. -from typing import Iterator - -import pytest from sqlalchemy.orm.session import Session -# @pytest.fixture -# def session_with_data(session: Session) -> Iterator[Session]: -# from superset.connectors.sqla.models import SqlaTable -# from superset.databases.ssh_tunnel.models import SSHTunnel -# from superset.models.core import Database - -# engine = session.get_bind() -# SqlaTable.metadata.create_all(engine) # pylint: disable=no-member - -# db = Database(database_name="my_database", sqlalchemy_uri="sqlite://") -# sqla_table = SqlaTable( -# table_name="my_sqla_table", -# columns=[], -# metrics=[], -# database=db, -# ) -# ssh_tunnel = SSHTunnel( -# database_id=db.id, -# database=db, -# ) - -# session.add(db) -# session.add(sqla_table) -# session.add(ssh_tunnel) -# session.flush() -# yield session -# session.rollback() - - -# def test_create_ssh_tunnel_command(session_with_data: Session) -> None: -# from superset.connectors.sqla.models import SqlaTable -# from superset.databases.dao import DatabaseDAO -# from superset.databases.ssh_tunnel.commands.delete import DeleteSSHTunnelCommand -# from superset.databases.ssh_tunnel.dao import SSHTunnelDAO -# from superset.databases.ssh_tunnel.models import SSHTunnel -# from superset.models.core import Database - -# db = Database(database_name="my_database", sqlalchemy_uri="sqlite://") -# result = SSHTunnelDAO.create() +def test_create_ssh_tunnel_command() -> None: + from superset.databases.ssh_tunnel.commands.create import CreateSSHTunnelCommand + from superset.databases.ssh_tunnel.models import SSHTunnel + from superset.models.core import Database -# assert result -# assert isinstance(result["ssh_tunnel"], SSHTunnel) -# assert 1 == result["ssh_tunnel"].database_id + db = Database(database_name="my_database", sqlalchemy_uri="sqlite://") -# DeleteSSHTunnelCommand(1).run() + properties = { + "database_id": db.id, + "server_address": "123.132.123.1", + "server_port": "3005", + "username": "foo", + "password": "bar", + } -# result = DatabaseDAO.get_ssh_tunnel(1) + result = CreateSSHTunnelCommand(db.id, properties).run() -# assert result -# assert result["ssh_tunnel"] is None + assert result is not None + assert isinstance(result, SSHTunnel)
