#!/usr/bin/env bats load test_helper setup() { dokku "$PLUGIN_COMMAND_PREFIX:create" l >&2 dokku apps:create my_app >&2 } teardown() { dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l >&2 rm -rf "$DOKKU_ROOT/my_app" } @test "($PLUGIN_COMMAND_PREFIX:link) error when there are no arguments" { run dokku "$PLUGIN_COMMAND_PREFIX:link" assert_contains "${lines[*]}" "Please specify a name for the service" } @test "($PLUGIN_COMMAND_PREFIX:link) error when the app argument is missing" { run dokku "$PLUGIN_COMMAND_PREFIX:link" l assert_contains "${lines[*]}" "Please specify an app to run the command on" } @test "($PLUGIN_COMMAND_PREFIX:link) error when the app does not exist" { run dokku "$PLUGIN_COMMAND_PREFIX:link" l not_existing_app assert_contains "${lines[*]}" "App not_existing_app does not exist" } @test "($PLUGIN_COMMAND_PREFIX:link) error when the service does not exist" { run dokku "$PLUGIN_COMMAND_PREFIX:link" not_existing_service my_app assert_contains "${lines[*]}" "service not_existing_service does not exist" } @test "($PLUGIN_COMMAND_PREFIX:link) error when the service is already linked to app" { dokku "$PLUGIN_COMMAND_PREFIX:link" l my_app run dokku "$PLUGIN_COMMAND_PREFIX:link" l my_app assert_contains "${lines[*]}" "Already linked as DATABASE_URL" } @test "($PLUGIN_COMMAND_PREFIX:link) exports DATABASE_URL to app" { dokku "$PLUGIN_COMMAND_PREFIX:link" l my_app url=$(dokku config:get my_app DATABASE_URL) password="$(cat "$PLUGIN_DATA_ROOT/l/PASSWORD")" assert_contains "$url" "postgres://postgres:$password@dokku-postgres-l:5432/l" dokku "$PLUGIN_COMMAND_PREFIX:unlink" l my_app } @test "($PLUGIN_COMMAND_PREFIX:link) generates an alternate config url when DATABASE_URL already in use" { dokku config:set my_app DATABASE_URL=postgres://user:pass@host:5432/db dokku "$PLUGIN_COMMAND_PREFIX:link" l my_app run dokku config my_app assert_contains "${lines[*]}" "DOKKU_POSTGRES_" dokku "$PLUGIN_COMMAND_PREFIX:unlink" l my_app } @test "($PLUGIN_COMMAND_PREFIX:link) links to app with docker-options" { dokku "$PLUGIN_COMMAND_PREFIX:link" l my_app run dokku docker-options my_app assert_contains "${lines[*]}" "--link dokku.postgres.l:dokku-postgres-l" dokku "$PLUGIN_COMMAND_PREFIX:unlink" l my_app } @test "($PLUGIN_COMMAND_PREFIX:link) uses apps POSTGRES_DATABASE_SCHEME variable" { dokku config:set my_app POSTGRES_DATABASE_SCHEME=postgres2 dokku "$PLUGIN_COMMAND_PREFIX:link" l my_app url=$(dokku config:get my_app DATABASE_URL) password="$(cat "$PLUGIN_DATA_ROOT/l/PASSWORD")" assert_contains "$url" "postgres2://postgres:$password@dokku-postgres-l:5432/l" dokku "$PLUGIN_COMMAND_PREFIX:unlink" l my_app }