#!/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 } teardown() { destroy_app [[ -f "$DOKKU_ROOT/VHOST.bak" ]] && mv "$DOKKU_ROOT/VHOST.bak" "$DOKKU_ROOT/VHOST" && chown dokku:dokku "$DOKKU_ROOT/VHOST" global_teardown } @test "(nginx-vhosts) logging" { run deploy_app echo "output: $output" echo "status: $status" assert_success run [ -a "/var/log/nginx/$TEST_APP-access.log" ] echo "output: $output" echo "status: $status" assert_success run [ -a "/var/log/nginx/$TEST_APP-error.log" ] echo "output: $output" echo "status: $status" assert_success run /bin/bash -c "dokku nginx:access-logs $TEST_APP" echo "output: $output" echo "status: $status" assert_success run /bin/bash -c "dokku nginx:error-logs $TEST_APP" echo "output: $output" echo "status: $status" assert_success } @test "(nginx-vhosts) log-path" { run deploy_app echo "output: $output" echo "status: $status" assert_success run /bin/bash -c "dokku nginx:set $TEST_APP access-log-path off" echo "output: $output" echo "status: $status" assert_success run /bin/bash -c "dokku proxy:build-config $TEST_APP" echo "output: $output" echo "status: $status" assert_success run /bin/bash -c "dokku nginx:show-config $TEST_APP" echo "output: $output" echo "status: $status" assert_output_contains "access_log off;" run /bin/bash -c "dokku nginx:set $TEST_APP access-log-path" echo "output: $output" echo "status: $status" assert_success run /bin/bash -c "dokku proxy:build-config $TEST_APP" echo "output: $output" echo "status: $status" assert_success run /bin/bash -c "dokku nginx:show-config $TEST_APP" echo "output: $output" echo "status: $status" assert_output_contains "access_log off;" 0 run /bin/bash -c "dokku nginx:set $TEST_APP error-log-path off" echo "output: $output" echo "status: $status" assert_success run /bin/bash -c "dokku proxy:build-config $TEST_APP" echo "output: $output" echo "status: $status" assert_success run /bin/bash -c "dokku nginx:show-config $TEST_APP" echo "output: $output" echo "status: $status" assert_output_contains "error_log off;" run /bin/bash -c "dokku nginx:set $TEST_APP error-log-path" echo "output: $output" echo "status: $status" assert_success run /bin/bash -c "dokku proxy:build-config $TEST_APP" echo "output: $output" echo "status: $status" assert_success run /bin/bash -c "dokku nginx:show-config $TEST_APP" echo "output: $output" echo "status: $status" assert_output_contains "error_log off;" 0 } @test "(nginx-vhosts) access-log-format" { run deploy_app echo "output: $output" echo "status: $status" assert_success run /bin/bash -c "dokku nginx:set $TEST_APP access-log-format combined" echo "output: $output" echo "status: $status" assert_success run /bin/bash -c "dokku proxy:build-config $TEST_APP" echo "output: $output" echo "status: $status" assert_success run /bin/bash -c "dokku nginx:show-config $TEST_APP" echo "output: $output" echo "status: $status" assert_output_contains "-access.log combined;" run /bin/bash -c "dokku nginx:set $TEST_APP access-log-path off" echo "output: $output" echo "status: $status" assert_success run /bin/bash -c "dokku proxy:build-config $TEST_APP" echo "output: $output" echo "status: $status" assert_success run /bin/bash -c "dokku nginx:show-config $TEST_APP" echo "output: $output" echo "status: $status" assert_output_contains "access_log off;" run /bin/bash -c "dokku nginx:set $TEST_APP access-log-format" run /bin/bash -c "dokku nginx:set $TEST_APP access-log-path" echo "output: $output" echo "status: $status" assert_success run /bin/bash -c "dokku proxy:build-config $TEST_APP" echo "output: $output" echo "status: $status" assert_success run /bin/bash -c "dokku nginx:show-config $TEST_APP" echo "output: $output" echo "status: $status" assert_output_contains "-access.log;" } @test "(nginx-vhosts) proxy:build-config (with SSL and unrelated domain)" { setup_test_tls run /bin/bash -c "dokku domains:add $TEST_APP node-js-app.${DOKKU_DOMAIN}" echo "output: $output" echo "status: $status" assert_success run /bin/bash -c "dokku domains:add $TEST_APP test.${DOKKU_DOMAIN}" echo "output: $output" echo "status: $status" assert_success run deploy_app echo "output: $output" echo "status: $status" assert_success run /bin/bash -c "dokku nginx:show-config $TEST_APP" echo "output: $output" echo "status: $status" assert_success assert_ssl_domain "node-js-app.${DOKKU_DOMAIN}" assert_http_redirect "http://test.${DOKKU_DOMAIN}" "https://test.${DOKKU_DOMAIN}:443/" } @test "(nginx-vhosts) proxy:build-config (wildcard SSL)" { setup_test_tls wildcard run /bin/bash -c "dokku domains:add $TEST_APP wildcard1.${DOKKU_DOMAIN}" echo "output: $output" echo "status: $status" assert_success run /bin/bash -c "dokku domains:add $TEST_APP wildcard2.${DOKKU_DOMAIN}" echo "output: $output" echo "status: $status" assert_success run deploy_app echo "output: $output" echo "status: $status" assert_success run /bin/bash -c "dokku nginx:show-config $TEST_APP" echo "output: $output" echo "status: $status" assert_success assert_ssl_domain "wildcard1.${DOKKU_DOMAIN}" assert_ssl_domain "wildcard2.${DOKKU_DOMAIN}" }