diff --git a/.github/workflows/build-test-containers.yaml b/.github/workflows/build-test-containers.yaml index 50c2c501d..710b6a450 100644 --- a/.github/workflows/build-test-containers.yaml +++ b/.github/workflows/build-test-containers.yaml @@ -19,13 +19,20 @@ jobs: - name: Build mysql-ssh-login image run: | docker build -t dbgate/mysql-ssh-login:latest e2e-tests/containers/mysql-ssh-login + - name: Build mysql-ssh-keyfile image + run: | + docker build -t dbgate/mysql-ssh-keyfile:latest e2e-tests/containers/mysql-ssh-keyfile - name: Log in to GHCR uses: docker/login-action@v2 with: registry: ghcr.io username: '${{ github.actor }}' password: '${{ secrets.GITHUB_TOKEN }}' - - name: Push image to GHCR + - name: Push mysql-ssh-login to GHCR run: | docker tag dbgate/mysql-ssh-login:latest ghcr.io/dbgate/mysql-ssh-login:latest docker push ghcr.io/dbgate/mysql-ssh-login:latest + - name: Push mysql-ssh-keyfile to GHCR + run: | + docker tag dbgate/mysql-ssh-keyfile:latest ghcr.io/dbgate/mysql-ssh-keyfile:latest + docker push ghcr.io/dbgate/mysql-ssh-keyfile:latest diff --git a/e2e-tests/containers/mysql-ssh-keyfile/mykey.pub b/e2e-tests/containers/mysql-ssh-keyfile/mykey.pub new file mode 100644 index 000000000..f5a025dba --- /dev/null +++ b/e2e-tests/containers/mysql-ssh-keyfile/mykey.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQClN/tu+X7PVYpMBEQDwxtyG0oNuKqcJdBud/vBUalyYSpliXO30BsBusjCyAh8ENVllmGTRaTcqAUPg/vwekaAMFZu9EXmQsdhPEWSxrkPkXXKsWrZVPtRV8l3wuSy/VLxbXRLujTpIEE5Au88e2CFN3zzuhg9rvsXE0cGjyYe9Cw3Ub+Yo6rbnESI7F+Jun29/wD8RF+kRL5cr7BrDoOBQf4yGexrTbUPMZ4b8QlGfXUwZhn6LlWVoWq7BMRelnfIAkuC+LwavvnkMqXMITmGa7sG0zOXByW7iGdP6TWVq9Ks+yCZoAA9ncAkgkpwoNrOSXR6dM5UjrsfJ2Na332QfxK8MmC+nBiyXIKUaQY2G8Wfm93GQqDc+349JFwH4ZjgYWJlTd/UfRCn4j30jxe1RKnjt5xGqb3L+j8JfuSPcojWRekg/K8GxBmaMCcEdqjIFD4MxeIUW3bGHd30wnuZkTPWlSmAGrO0fZXj0s1fmOBME05TjE8jsyKPmb2Kd3JdtCuTrjOgrYiHaMfcv/VqVhIv2kCKjnvhAxCqfGfKxxgcerItbrsfFAvYak1kwZelBquHOK6SkMH5WhDyhvGY+ZF0Wbg3CpynlpJVu4E3LSglYNbkIWqS3pAf+hqJtXl9SHCLgKFUcCIz0ZNQkT+PtUlR3klp6qoPXUWrcL3pdQ== test \ No newline at end of file diff --git a/e2e-tests/cypress/e2e/connect.cy.js b/e2e-tests/cypress/e2e/connect.cy.js index f524bb3da..4339369d1 100644 --- a/e2e-tests/cypress/e2e/connect.cy.js +++ b/e2e-tests/cypress/e2e/connect.cy.js @@ -23,7 +23,7 @@ describe('Initialization', () => { cy.contains('performance_schema'); }); - it('SSH connection', () => { + it('SSH connection - user + password', () => { const runOnCI = Cypress.env('runOnCI'); cy.visit('http://localhost:3000'); @@ -54,6 +54,37 @@ describe('Initialization', () => { cy.contains('performance_schema'); }); + it('SSH connection - keyfile', () => { + const runOnCI = Cypress.env('runOnCI'); + + cy.visit('http://localhost:3000'); + cy.contains('Connections'); + + cy.realPress("F1"); + cy.realType("Close all"); + cy.realPress("Enter"); + + 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=ConnectionDriverFields_displayName]').clear().type('test-mysql-ssh-2'); + + cy.get('[data-testid=ConnectionTab_tabSshTunnel]').click(); + cy.get('[data-testid=ConnectionSshTunnelFields_useSshTunnel]').check(); + 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-login'); + } else { + cy.get('[data-testid=ConnectionSshTunnelFields_sshPort]').clear().type('16006'); + } + 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/cypress/e2e/mykey b/e2e-tests/cypress/e2e/mykey new file mode 100644 index 000000000..85823480c --- /dev/null +++ b/e2e-tests/cypress/e2e/mykey @@ -0,0 +1,49 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +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 +jIy5WYf/zrVHAAAABHRlc3QBAgMEBQY= +-----END OPENSSH PRIVATE KEY----- \ No newline at end of file diff --git a/e2e-tests/docker-compose.yaml b/e2e-tests/docker-compose.yaml index 8ab751982..93b18e4c2 100644 --- a/e2e-tests/docker-compose.yaml +++ b/e2e-tests/docker-compose.yaml @@ -18,8 +18,15 @@ services: - MYSQL_ROOT_PASSWORD=Pwd2020Db mysql-ssh-login: - build: mysql-ssh-login + build: containers/mysql-ssh-login restart: always ports: - 16005:3306 - 16006:22 + + mysql-ssh-keyfile: + build: containers/mysql-ssh-keyfile + restart: always + ports: + - 16007:3306 + - 16008:22 diff --git a/workflow-templates/build-test-containers.yaml b/workflow-templates/build-test-containers.yaml index 8f8e31476..741880cc2 100644 --- a/workflow-templates/build-test-containers.yaml +++ b/workflow-templates/build-test-containers.yaml @@ -20,6 +20,10 @@ jobs: run: | docker build -t dbgate/mysql-ssh-login:latest e2e-tests/containers/mysql-ssh-login + - name: Build mysql-ssh-keyfile image + run: | + docker build -t dbgate/mysql-ssh-keyfile:latest e2e-tests/containers/mysql-ssh-keyfile + - name: Log in to GHCR uses: docker/login-action@v2 with: @@ -27,7 +31,12 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Push image to GHCR + - name: Push mysql-ssh-login to GHCR run: | docker tag dbgate/mysql-ssh-login:latest ghcr.io/dbgate/mysql-ssh-login:latest docker push ghcr.io/dbgate/mysql-ssh-login:latest + + - name: Push mysql-ssh-keyfile to GHCR + run: | + docker tag dbgate/mysql-ssh-keyfile:latest ghcr.io/dbgate/mysql-ssh-keyfile:latest + docker push ghcr.io/dbgate/mysql-ssh-keyfile:latest