mirror of
https://github.com/dokku/dokku.git
synced 2026-02-24 04:00:36 +01:00
373 lines
10 KiB
Bash
373 lines
10 KiB
Bash
#!/usr/bin/env bats
|
|
|
|
load test_helper
|
|
|
|
setup() {
|
|
global_setup
|
|
[[ -f "$DOKKU_ROOT/VHOST" ]] && cp -fp "$DOKKU_ROOT/VHOST" "$DOKKU_ROOT/VHOST.bak"
|
|
create_app
|
|
|
|
dokku --force postgres:destroy $TEST_APP 2>/dev/null || true
|
|
dokku --force redis:destroy $TEST_APP 2>/dev/null || true
|
|
dokku --force postgres:destroy $TEST_APP-other 2>/dev/null || true
|
|
dokku --force redis:destroy $TEST_APP-other 2>/dev/null || true
|
|
}
|
|
|
|
teardown() {
|
|
destroy_app
|
|
|
|
dokku --force postgres:destroy $TEST_APP 2>/dev/null || true
|
|
dokku --force redis:destroy $TEST_APP 2>/dev/null || true
|
|
dokku --force postgres:destroy $TEST_APP-other 2>/dev/null || true
|
|
dokku --force redis:destroy $TEST_APP-other 2>/dev/null || true
|
|
|
|
[[ -f "$DOKKU_ROOT/VHOST.bak" ]] && mv "$DOKKU_ROOT/VHOST.bak" "$DOKKU_ROOT/VHOST" && chown dokku:dokku "$DOKKU_ROOT/VHOST"
|
|
global_teardown
|
|
}
|
|
|
|
@test "(ports) ports:help" {
|
|
run /bin/bash -c "dokku ports"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_output_contains "Manage ports for an app"
|
|
help_output="$output"
|
|
|
|
run /bin/bash -c "dokku ports:help"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_output_contains "Manage ports for an app"
|
|
assert_output "$help_output"
|
|
}
|
|
|
|
@test "(ports) ports subcommands (list/add/set/remove/clear)" {
|
|
run /bin/bash -c "dokku ports:set $TEST_APP http:1234:5001"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku --quiet ports:report $TEST_APP --ports-map"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_output "http:1234:5001"
|
|
|
|
run /bin/bash -c "dokku ports:add $TEST_APP http:8080:5002 https:8443:5003"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku --quiet ports:report $TEST_APP --ports-map"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_output "http:1234:5001 http:8080:5002 https:8443:5003"
|
|
|
|
run /bin/bash -c "dokku ports:set $TEST_APP http:8080:5000 https:8443:5000 http:1234:5001"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ports:set $TEST_APP http:8080:5000 https:8443:5000 http:1234:5001 http:1234:5002"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_failure
|
|
|
|
run /bin/bash -c "dokku ports:add $TEST_APP http:12345:5002 http:12345:5004"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_failure
|
|
|
|
run /bin/bash -c "dokku ports:add $TEST_APP http:1234:5003 http:12345:5004"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_failure
|
|
|
|
run /bin/bash -c "dokku ports:add $TEST_APP http:1234:5001"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_failure
|
|
|
|
run /bin/bash -c "dokku --quiet ports:report $TEST_APP --ports-map"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_output "http:1234:5001 http:8080:5000 https:8443:5000"
|
|
|
|
run /bin/bash -c "dokku ports:remove $TEST_APP 8080"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku --quiet ports:report $TEST_APP --ports-map"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_output "http:1234:5001 https:8443:5000"
|
|
|
|
run /bin/bash -c "dokku ports:remove $TEST_APP http:1234:5001"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku --quiet ports:report $TEST_APP --ports-map"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_output "https:8443:5000"
|
|
|
|
run /bin/bash -c "dokku ports:clear $TEST_APP"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku --quiet ports:report $TEST_APP --ports-map"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_output_not_exists
|
|
|
|
run /bin/bash -c "dokku --quiet ports:report $TEST_APP --ports-map-detected"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_output "http:80:5000"
|
|
}
|
|
|
|
@test "(ports:add) post-deploy add" {
|
|
run deploy_app
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ports:add $TEST_APP http:8080:5000 http:8081:5000"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
URLS="$(dokku --quiet urls "$TEST_APP")"
|
|
for URL in $URLS; do
|
|
assert_http_success $URL
|
|
done
|
|
assert_http_success "http://$TEST_APP.${DOKKU_DOMAIN}:8080"
|
|
assert_http_success "http://$TEST_APP.${DOKKU_DOMAIN}:8081"
|
|
}
|
|
|
|
@test "(ports:report) herokuish tls" {
|
|
run /bin/bash -c "dokku builder-herokuish:set $TEST_APP allowed true"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ports:report $TEST_APP --ports-map"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_output_not_exists
|
|
|
|
run /bin/bash -c "dokku ports:report $TEST_APP --ports-map-detected"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_output "http:80:5000"
|
|
|
|
run setup_test_tls
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run deploy_app
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ports:report $TEST_APP --ports-map"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_output_not_exists
|
|
|
|
run /bin/bash -c "dokku ports:report $TEST_APP --ports-map-detected"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_output "http:80:5000 https:443:5000"
|
|
}
|
|
|
|
@test "(ports:report) dockerfile tls" {
|
|
run deploy_app python dokku@$DOKKU_DOMAIN:$TEST_APP move_expose_dockerfile_into_place
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ports:report $TEST_APP --ports-map"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_output_not_exists
|
|
|
|
run /bin/bash -c "dokku ports:report $TEST_APP --ports-map-detected"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_output "http:3000:3000 http:3003:3003 udp:3001:3001"
|
|
|
|
run setup_test_tls
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ports:report $TEST_APP --ports-map"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_output_not_exists
|
|
|
|
run /bin/bash -c "dokku ports:report $TEST_APP --ports-map-detected"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_output "https:3000:3000 https:3003:3003 udp:3001:3001"
|
|
}
|
|
|
|
@test "(ports:rename) renamed app persists ports" {
|
|
if ! dokku plugin:installed postgres; then
|
|
run /bin/bash -c "dokku plugin:install https://github.com/dokku/dokku-postgres.git"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
fi
|
|
|
|
if ! dokku plugin:installed redis; then
|
|
run /bin/bash -c "dokku plugin:install https://github.com/dokku/dokku-redis.git"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
fi
|
|
|
|
run /bin/bash -c "dokku ports:set $TEST_APP http:80:3000"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku config:set $TEST_APP APP_SECRET=REPLACE_WITH_LONG_SECRET_REPLACE_WITH_LONG_SECRET"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku postgres:create $TEST_APP $TEST_APP"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku postgres:link $TEST_APP $TEST_APP"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku redis:create $TEST_APP $TEST_APP"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku redis:link $TEST_APP $TEST_APP"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
dokku git:from-image $TEST_APP docmost/docmost:latest
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ports:report $TEST_APP --ports-map"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_output "http:80:3000"
|
|
|
|
run /bin/bash -c "dokku ports:report $TEST_APP --ports-map-detected"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_output "http:3000:3000"
|
|
|
|
run /bin/bash -c "dokku apps:rename $TEST_APP $TEST_APP-other"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_output_contains "Application deployed"
|
|
|
|
run /bin/bash -c "dokku ports:report $TEST_APP-other --ports-map"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_output "http:80:3000"
|
|
|
|
run /bin/bash -c "dokku ports:report $TEST_APP-other --ports-map-detected"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_output "http:3000:3000"
|
|
}
|
|
|
|
@test "(ports) ports not reinitialized on upgrade" {
|
|
run /bin/bash -c "dokku domains:clear-global"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku domains:disable $TEST_APP"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ports:add $TEST_APP http:3001:3001"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku checks:disable $TEST_APP"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku domains:report $TEST_APP --domains-global-enabled"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_output_contains "false"
|
|
|
|
run /bin/bash -c "dokku git:from-image $TEST_APP louislam/uptime-kuma:2"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ports:report $TEST_APP"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ports:report $TEST_APP --ports-map"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_output "http:3001:3001"
|
|
|
|
run /bin/bash -c "dokku ports:report $TEST_APP --ports-map-detected"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_output "http:3001:3001"
|
|
|
|
run /bin/bash -c "dokku domains:report $TEST_APP --domains-global-enabled"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_output_contains "false"
|
|
|
|
run /bin/bash -c "dokku domains:setup $TEST_APP"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_output_contains "Global server virtual host not set, disabling app vhost"
|
|
assert_output_not_contains "No port set, setting to random open high port"
|
|
assert_output_not_contains "Random port"
|
|
|
|
run /bin/bash -c "dokku ports:report $TEST_APP --ports-map"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_output "http:3001:3001"
|
|
|
|
run /bin/bash -c "dokku ports:report $TEST_APP --ports-map-detected"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_output "http:3001:3001"
|
|
}
|