diff --git a/contrib/dokku_client.sh b/contrib/dokku_client.sh index c77ec1130..0446bc628 100755 --- a/contrib/dokku_client.sh +++ b/contrib/dokku_client.sh @@ -130,6 +130,16 @@ main() { fi case "$CMD" in + remote:show) + echo "dokku-app: $APP" + echo "dokku-git-remote: $DOKKU_GIT_REMOTE" + echo "dokku-host: $DOKKU_HOST" + echo "dokku-port: $DOKKU_PORT" + echo "dokku-remote-host: $DOKKU_REMOTE_HOST" + echo "dokku-ssh-user: dokku" + echo "dokku-constructed-remote: ssh://dokku@$DOKKU_REMOTE_HOST:$DOKKU_PORT/$APP" + exit 0 + ;; apps:create) if [[ -z "$APP" ]] && [[ -z "$APP_ARG" ]]; then APP=$(fn-random-name) diff --git a/tests/unit/client.bats b/tests/unit/client.bats index 0c0610ea9..7cb3fe177 100644 --- a/tests/unit/client.bats +++ b/tests/unit/client.bats @@ -24,6 +24,74 @@ teardown() { assert_exit_status 20 } +@test "(client) remote:show" { + unset DOKKU_HOST + local DOKKU_APP_PATH=$(mktemp -d "/tmp/${DOKKU_DOMAIN}.XXXXX") + trap 'popd &>/dev/null || true; rm -rf "$DOKKU_APP_PATH"' INT TERM + + setup_client_repo "$DOKKU_APP_PATH" + export DOKKU_APP_PATH="$DOKKU_APP_PATH" + + # handle simple remote: dokku@example.com:app-name + run /bin/bash -c "git -C "$DOKKU_APP_PATH" remote add dokku 'dokku@example.com:$TEST_APP'" + echo "output: $output" + echo "status: $status" + assert_success + + run /bin/bash -c "DOKKU_APP_PATH=$DOKKU_APP_PATH ${BATS_TEST_DIRNAME}/../../contrib/dokku_client.sh remote:show" + echo "output: $output" + echo "status: $status" + assert_success + assert_output_contains "dokku-app: $TEST_APP" + assert_output_contains "dokku-git-remote: dokku" + assert_output_not_contains "dokku-host: example.com" + assert_output_not_contains "dokku-host: example.net" + assert_output_contains "dokku-host: " + assert_output_contains "dokku-port: 22" + assert_output_contains "dokku-remote-host: example.com" + assert_output_contains "dokku-ssh-user: dokku" + assert_output_contains "dokku-constructed-remote: ssh://dokku@example.com:22/$TEST_APP" + + # handle custom DOKKU_HOST (no app name detected without --app flag) + export DOKKU_HOST="example.com" + run /bin/bash -c "DOKKU_HOST="example.net" DOKKU_APP_PATH=$DOKKU_APP_PATH ${BATS_TEST_DIRNAME}/../../contrib/dokku_client.sh remote:show" + echo "output: $output" + echo "status: $status" + assert_success + assert_output_not_contains "dokku-app: $TEST_APP" + assert_output_contains "dokku-git-remote: dokku" + assert_output_contains "dokku-host: example.net" + assert_output_contains "dokku-port: 22" + assert_output_contains "dokku-remote-host: example.net" + assert_output_contains "dokku-ssh-user: dokku" + assert_output_contains "dokku-constructed-remote: ssh://dokku@example.net:22/" + assert_output_not_contains "dokku-constructed-remote: ssh://dokku@example.net:22/$TEST_APP" + + # handle custom DOKKU_HOST (app name detected with --app flag) + run /bin/bash -c "DOKKU_HOST="example.net" DOKKU_APP_PATH=$DOKKU_APP_PATH ${BATS_TEST_DIRNAME}/../../contrib/dokku_client.sh remote:show --app $TEST_APP" + echo "output: $output" + echo "status: $status" + assert_success + assert_output_contains "dokku-app: $TEST_APP" + assert_output_contains "dokku-git-remote: dokku" + assert_output_contains "dokku-host: example.net" + assert_output_contains "dokku-port: 22" + assert_output_contains "dokku-remote-host: example.net" + assert_output_contains "dokku-ssh-user: dokku" + assert_output_contains "dokku-constructed-remote: ssh://dokku@example.net:22/$TEST_APP" + + # handle custom DOKKU_PORT + run /bin/bash -c "DOKKU_PORT=2222 DOKKU_APP_PATH=$DOKKU_APP_PATH ${BATS_TEST_DIRNAME}/../../contrib/dokku_client.sh remote:show" + echo "output: $output" + echo "status: $status" + assert_success + assert_output_contains "dokku-app: $TEST_APP" + assert_output_contains "dokku-git-remote: dokku" + assert_output_contains "dokku-host: example.com" + assert_output_contains "dokku-port: 2222" + assert_output_contains "dokku-remote-host: example.com" + assert_output_contains "dokku-ssh-user: dokku" + assert_output_contains "dokku-constructed-remote: ssh://dokku@example.com:2222/$TEST_APP" @test "(client) no args should print help" { # dokku container is not run with a TTY on GitHub Actions so we don't get normal output # https://github.com/actions/runner/issues/241