Files
dokku-postgres/tests/service_link.bats
2019-03-09 16:39:35 -05:00

86 lines
3.3 KiB
Bash
Executable File

#!/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 valid 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
}
@test "($PLUGIN_COMMAND_PREFIX:link) adds a querystring" {
dokku "$PLUGIN_COMMAND_PREFIX:link" l my_app --querystring "pool=5"
url=$(dokku config:get my_app DATABASE_URL)
assert_contains "$url" "?pool=5"
dokku "$PLUGIN_COMMAND_PREFIX:unlink" l my_app
}
@test "($PLUGIN_COMMAND_PREFIX:link) uses a specified config url when alias is specified" {
dokku "$PLUGIN_COMMAND_PREFIX:link" l my_app --alias "ALIAS"
url=$(dokku config:get my_app ALIAS_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
}