From ff8ccd280126b360bb3787b985e22f8f436b42bc Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sun, 16 Nov 2025 18:01:20 -0500 Subject: [PATCH] tests: add tests for functionality --- tests/unit/caddy.bats | 69 +++++++++++++++++++++++++++++++++++++ tests/unit/haproxy.bats | 69 +++++++++++++++++++++++++++++++++++++ tests/unit/openresty.bats | 69 +++++++++++++++++++++++++++++++++++++ tests/unit/test_helper.bash | 4 +++ tests/unit/traefik.bats | 69 +++++++++++++++++++++++++++++++++++++ 5 files changed, 280 insertions(+) diff --git a/tests/unit/caddy.bats b/tests/unit/caddy.bats index d48d41196..fae317341 100644 --- a/tests/unit/caddy.bats +++ b/tests/unit/caddy.bats @@ -147,3 +147,72 @@ teardown() { echo "status: $status" assert_output "http:80:5000 https:443:5000" } + +@test "(caddy) label management" { + run /bin/bash -c "dokku proxy:set $TEST_APP caddy" + echo "output: $output" + echo "status: $status" + assert_success + + run /bin/bash -c "dokku caddy:label:add $TEST_APP caddy.directive value" + echo "output: $output" + echo "status: $status" + assert_success + + run /bin/bash -c "dokku caddy:label:show $TEST_APP" + echo "output: $output" + echo "status: $status" + assert_success + assert_output_contains "caddy.directive=value" + + run /bin/bash -c "dokku caddy:label:show $TEST_APP caddy.directive" + echo "output: $output" + echo "status: $status" + assert_success + assert_output "value" + + run /bin/bash -c "dokku caddy:label:show $TEST_APP caddy.directive2" + echo "output: $output" + echo "status: $status" + assert_success + assert_output_not_exists + + run deploy_app + echo "output: $output" + echo "status: $status" + assert_success + + run /bin/bash -c "docker inspect $TEST_APP.web.1 --format '{{ index .Config.Labels \"caddy.directive\" }}'" + echo "output: $output" + echo "status: $status" + assert_success + assert_output "value" + + run /bin/bash -c "dokku caddy:label:remove $TEST_APP caddy.directive" + echo "output: $output" + echo "status: $status" + assert_success + + run /bin/bash -c "dokku caddy:label:show $TEST_APP" + echo "output: $output" + echo "status: $status" + assert_success + assert_output_not_contains "caddy.directive=value" + + run /bin/bash -c "dokku caddy:label:show $TEST_APP caddy.directive" + echo "output: $output" + echo "status: $status" + assert_success + assert_output_not_exists + + run /bin/bash -c "dokku ps:rebuild $TEST_APP" + echo "output: $output" + echo "status: $status" + assert_success + + run /bin/bash -c "docker inspect $TEST_APP.web.1 --format '{{ index .Config.Labels \"caddy.directive\" }}'" + echo "output: $output" + echo "status: $status" + assert_success + assert_output_not_exists +} diff --git a/tests/unit/haproxy.bats b/tests/unit/haproxy.bats index afd3ffe02..a63d2530c 100644 --- a/tests/unit/haproxy.bats +++ b/tests/unit/haproxy.bats @@ -172,3 +172,72 @@ teardown() { echo "status: $status" assert_output "http:80:5000 https:443:5000" } + +@test "(haproxy) label management" { + run /bin/bash -c "dokku proxy:set $TEST_APP haproxy" + echo "output: $output" + echo "status: $status" + assert_success + + run /bin/bash -c "dokku haproxy:label:add $TEST_APP haproxy.directive value" + echo "output: $output" + echo "status: $status" + assert_success + + run /bin/bash -c "dokku haproxy:label:show $TEST_APP" + echo "output: $output" + echo "status: $status" + assert_success + assert_output_contains "haproxy.directive=value" + + run /bin/bash -c "dokku haproxy:label:show $TEST_APP haproxy.directive" + echo "output: $output" + echo "status: $status" + assert_success + assert_output "value" + + run /bin/bash -c "dokku haproxy:label:show $TEST_APP haproxy.directive2" + echo "output: $output" + echo "status: $status" + assert_success + assert_output_not_exists + + run deploy_app + echo "output: $output" + echo "status: $status" + assert_success + + run /bin/bash -c "docker inspect $TEST_APP.web.1 --format '{{ index .Config.Labels \"haproxy.directive\" }}'" + echo "output: $output" + echo "status: $status" + assert_success + assert_output "value" + + run /bin/bash -c "dokku haproxy:label:remove $TEST_APP haproxy.directive" + echo "output: $output" + echo "status: $status" + assert_success + + run /bin/bash -c "dokku haproxy:label:show $TEST_APP" + echo "output: $output" + echo "status: $status" + assert_success + assert_output_not_contains "haproxy.directive=value" + + run /bin/bash -c "dokku haproxy:label:show $TEST_APP haproxy.directive" + echo "output: $output" + echo "status: $status" + assert_success + assert_output_not_exists + + run /bin/bash -c "dokku ps:rebuild $TEST_APP" + echo "output: $output" + echo "status: $status" + assert_success + + run /bin/bash -c "docker inspect $TEST_APP.web.1 --format '{{ index .Config.Labels \"haproxy.directive\" }}'" + echo "output: $output" + echo "status: $status" + assert_success + assert_output_not_exists +} diff --git a/tests/unit/openresty.bats b/tests/unit/openresty.bats index f7e5d6c5c..1e100c311 100644 --- a/tests/unit/openresty.bats +++ b/tests/unit/openresty.bats @@ -245,6 +245,75 @@ teardown() { assert_output_contains "charset UTF-8;" } +@test "(openresty) label management" { + run /bin/bash -c "dokku proxy:set $TEST_APP openresty" + echo "output: $output" + echo "status: $status" + assert_success + + run /bin/bash -c "dokku openresty:label:add $TEST_APP openresty.directive value" + echo "output: $output" + echo "status: $status" + assert_success + + run /bin/bash -c "dokku openresty:label:show $TEST_APP" + echo "output: $output" + echo "status: $status" + assert_success + assert_output_contains "openresty.directive=value" + + run /bin/bash -c "dokku openresty:label:show $TEST_APP openresty.directive" + echo "output: $output" + echo "status: $status" + assert_success + assert_output "value" + + run /bin/bash -c "dokku openresty:label:show $TEST_APP openresty.directive2" + echo "output: $output" + echo "status: $status" + assert_success + assert_output_not_exists + + run deploy_app + echo "output: $output" + echo "status: $status" + assert_success + + run /bin/bash -c "docker inspect $TEST_APP.web.1 --format '{{ index .Config.Labels \"openresty.directive\" }}'" + echo "output: $output" + echo "status: $status" + assert_success + assert_output "value" + + run /bin/bash -c "dokku openresty:label:remove $TEST_APP openresty.directive" + echo "output: $output" + echo "status: $status" + assert_success + + run /bin/bash -c "dokku openresty:label:show $TEST_APP" + echo "output: $output" + echo "status: $status" + assert_success + assert_output_not_contains "openresty.directive=value" + + run /bin/bash -c "dokku openresty:label:show $TEST_APP openresty.directive" + echo "output: $output" + echo "status: $status" + assert_success + assert_output_not_exists + + run /bin/bash -c "dokku ps:rebuild $TEST_APP" + echo "output: $output" + echo "status: $status" + assert_success + + run /bin/bash -c "docker inspect $TEST_APP.web.1 --format '{{ index .Config.Labels \"openresty.directive\" }}'" + echo "output: $output" + echo "status: $status" + assert_success + assert_output_not_exists +} + add_openresty_include() { local APP="$1" local APP_REPO_DIR="$2" diff --git a/tests/unit/test_helper.bash b/tests/unit/test_helper.bash index 3614c5ffc..06546ce70 100644 --- a/tests/unit/test_helper.bash +++ b/tests/unit/test_helper.bash @@ -151,6 +151,10 @@ assert_output_contains() { assert_equal "$count" "$found" } +assert_output_not_contains() { + assert_output_contains "$1" 0 +} + # ShellCheck doesn't know about $lines from Bats assert_line() { if [[ "$1" -ge 0 ]] 2>/dev/null; then diff --git a/tests/unit/traefik.bats b/tests/unit/traefik.bats index a50ea2160..35a364c69 100644 --- a/tests/unit/traefik.bats +++ b/tests/unit/traefik.bats @@ -299,3 +299,72 @@ teardown() { assert_success assert_output "websecure" } + +@test "(traefik) label management" { + run /bin/bash -c "dokku proxy:set $TEST_APP traefik" + echo "output: $output" + echo "status: $status" + assert_success + + run /bin/bash -c "dokku traefik:label:add $TEST_APP traefik.directive value" + echo "output: $output" + echo "status: $status" + assert_success + + run /bin/bash -c "dokku traefik:label:show $TEST_APP" + echo "output: $output" + echo "status: $status" + assert_success + assert_output_contains "traefik.directive=value" + + run /bin/bash -c "dokku traefik:label:show $TEST_APP traefik.directive" + echo "output: $output" + echo "status: $status" + assert_success + assert_output "value" + + run /bin/bash -c "dokku traefik:label:show $TEST_APP traefik.directive2" + echo "output: $output" + echo "status: $status" + assert_success + assert_output_not_exists + + run deploy_app + echo "output: $output" + echo "status: $status" + assert_success + + run /bin/bash -c "docker inspect $TEST_APP.web.1 --format '{{ index .Config.Labels \"traefik.directive\" }}'" + echo "output: $output" + echo "status: $status" + assert_success + assert_output "value" + + run /bin/bash -c "dokku traefik:label:remove $TEST_APP traefik.directive" + echo "output: $output" + echo "status: $status" + assert_success + + run /bin/bash -c "dokku traefik:label:show $TEST_APP" + echo "output: $output" + echo "status: $status" + assert_success + assert_output_not_contains "traefik.directive=value" + + run /bin/bash -c "dokku traefik:label:show $TEST_APP traefik.directive" + echo "output: $output" + echo "status: $status" + assert_success + assert_output_not_exists + + run /bin/bash -c "dokku ps:rebuild $TEST_APP" + echo "output: $output" + echo "status: $status" + assert_success + + run /bin/bash -c "docker inspect $TEST_APP.web.1 --format '{{ index .Config.Labels \"traefik.directive\" }}'" + echo "output: $output" + echo "status: $status" + assert_success + assert_output_not_exists +}