diff --git a/e2e-tests/cypress/e2e/connect.cy.js b/e2e-tests/cypress/e2e/connect.cy.js index 39bf8a110..3869063f7 100644 --- a/e2e-tests/cypress/e2e/connect.cy.js +++ b/e2e-tests/cypress/e2e/connect.cy.js @@ -23,9 +23,48 @@ describe('Initialization', () => { cy.contains('performance_schema'); }); + // it('SSH connection', () => { + // const runOnCI = Cypress.env('runOnCI'); + + // cy.get('body') + // .trigger('keydown', { + // key: 'F1', + // code: 'F1', + // which: 112, + // keyCode: 112, + // bubbles: true, + // }) + // .trigger('keyup', { + // key: 'F1', + // code: 'F1', + // which: 112, + // keyCode: 112, + // bubbles: true, + // }); + // cy.get('body').type('Close all'); + // cy.get('body').type('{enter}'); + + // cy.visit('http://localhost:3000'); + // cy.get('[data-testid=ConnectionList_buttonNewConnection]').click(); + // cy.get('[data-testid=ConnectionDriverFields_connectionType]').select('MySQL'); + // cy.get('[data-testid=ConnectionDriverFields_user]').clear().type('root'); + // cy.get('[data-testid=ConnectionDriverFields_password]').clear().type('root'); + + // cy.get('[data-testid=ConnectionSshTunnelFields_sshLogin]').clear().type('root'); + // cy.get('[data-testid=ConnectionSshTunnelFields_sshPassword]').clear().type('root'); + // if (runOnCI) { + // cy.get('[data-testid=ConnectionSshTunnelFields_sshHost]').clear().type('mysql-ssh'); + // } else { + // cy.get('[data-testid=ConnectionSshTunnelFields_sshPort]').clear().type('16006'); + // } + // cy.get('[data-testid=ConnectionDriverFields_displayName]').clear().type('test-mysql-ssh-1'); + // cy.get('[data-testid=ConnectionTab_buttonSave]').click(); + // cy.get('[data-testid=ConnectionTab_buttonConnect]').click(); + // cy.contains('performance_schema'); + // }); + // it('import chinook DB', () => { // cy.visit('http://localhost:3000'); // cy.get('[data-testid=ConnectionTab_buttonConnect]').click(); // }); - }); diff --git a/e2e-tests/docker-compose.yaml b/e2e-tests/docker-compose.yaml index 292ffeb0f..e983cdd4a 100644 --- a/e2e-tests/docker-compose.yaml +++ b/e2e-tests/docker-compose.yaml @@ -16,3 +16,10 @@ services: - 16004:3306 environment: - MYSQL_ROOT_PASSWORD=Pwd2020Db + + mysql-ssh: + build: mysql-ssh + restart: always + ports: + - 16005:3306 + - 16006:22 diff --git a/e2e-tests/mysql-ssh/Dockerfile b/e2e-tests/mysql-ssh/Dockerfile new file mode 100644 index 000000000..6744b701d --- /dev/null +++ b/e2e-tests/mysql-ssh/Dockerfile @@ -0,0 +1,22 @@ +FROM ubuntu:22.04 + +RUN apt-get update && \ + apt-get install -y openssh-server mysql-server && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +RUN mkdir /var/run/sshd + +RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config +RUN echo 'root:root' | chpasswd + +RUN service mysql start && \ + mysql -uroot -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root'; FLUSH PRIVILEGES;" && \ + service mysql stop + +EXPOSE 22 3306 + +COPY start.sh /start.sh +RUN chmod +x /start.sh + +CMD ["/start.sh"] \ No newline at end of file diff --git a/e2e-tests/mysql-ssh/start.sh b/e2e-tests/mysql-ssh/start.sh new file mode 100644 index 000000000..ef09d973e --- /dev/null +++ b/e2e-tests/mysql-ssh/start.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +service ssh start + +service mysql start + +tail -f /dev/null diff --git a/packages/web/src/settings/ConnectionSshTunnelFields.svelte b/packages/web/src/settings/ConnectionSshTunnelFields.svelte index 804d83c6c..8b5bfe783 100644 --- a/packages/web/src/settings/ConnectionSshTunnelFields.svelte +++ b/packages/web/src/settings/ConnectionSshTunnelFields.svelte @@ -28,7 +28,12 @@ $: isConnected = $openedConnections.includes($values._id) || $openedSingleDatabaseConnections.includes($values._id); - +
@@ -37,6 +42,7 @@ name="sshHost" disabled={isConnected || !useSshTunnel} templateProps={{ noMargin: true }} + data-testid="ConnectionSshTunnelFields_sshHost" />
@@ -46,6 +52,7 @@ disabled={isConnected || !useSshTunnel} templateProps={{ noMargin: true }} placeholder="22" + data-testid="ConnectionSshTunnelFields_sshPort" />
@@ -62,10 +69,16 @@ { value: 'agent', label: 'SSH agent' }, { value: 'keyFile', label: 'Key file' }, ]} + data-testid="ConnectionSshTunnelFields_sshMode" /> {#if ($values.sshMode || 'userPassword') != 'userPassword'} - + {/if} {#if ($values.sshMode || 'userPassword') == 'userPassword'} @@ -76,6 +89,7 @@ name="sshLogin" disabled={isConnected || !useSshTunnel} templateProps={{ noMargin: true }} + data-testid="ConnectionSshTunnelFields_sshLogin" />
@@ -84,6 +98,7 @@ name="sshPassword" disabled={isConnected || !useSshTunnel} templateProps={{ noMargin: true }} + data-testid="ConnectionSshTunnelFields_sshPassword" />
@@ -99,6 +114,7 @@ disabled={isConnected || !useSshTunnel} templateProps={{ noMargin: true }} defaultFileName={$platformInfo?.defaultKeyfile} + data-testid="ConnectionSshTunnelFields_sshKeyfile" /> {:else} {/if} @@ -116,6 +133,7 @@ name="sshKeyfilePassword" disabled={isConnected || !useSshTunnel} templateProps={{ noMargin: true }} + data-testid="ConnectionSshTunnelFields_sshKeyfilePassword" />