This pull request switches testing to use an actual docker daemon, vs mocking everything out. It may also catch actual breaking issues in our tests, which is great!
111 lines
3.8 KiB
Bash
Executable File
111 lines
3.8 KiB
Bash
Executable File
#!/usr/bin/env bats
|
|
load test_helper
|
|
|
|
setup() {
|
|
dokku "$PLUGIN_COMMAND_PREFIX:create" l
|
|
dokku apps:create my_app
|
|
}
|
|
|
|
teardown() {
|
|
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l
|
|
dokku --force apps:destroy my_app
|
|
}
|
|
|
|
@test "($PLUGIN_COMMAND_PREFIX:link) error when there are no arguments" {
|
|
run dokku "$PLUGIN_COMMAND_PREFIX:link"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_contains "${lines[*]}" "Please specify a valid name for the service"
|
|
assert_failure
|
|
}
|
|
|
|
@test "($PLUGIN_COMMAND_PREFIX:link) error when the app argument is missing" {
|
|
run dokku "$PLUGIN_COMMAND_PREFIX:link" l
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_contains "${lines[*]}" "Please specify an app to run the command on"
|
|
assert_failure
|
|
}
|
|
|
|
@test "($PLUGIN_COMMAND_PREFIX:link) error when the app does not exist" {
|
|
run dokku "$PLUGIN_COMMAND_PREFIX:link" l not_existing_app
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_contains "${lines[*]}" "App not_existing_app does not exist"
|
|
assert_failure
|
|
}
|
|
|
|
@test "($PLUGIN_COMMAND_PREFIX:link) error when the service does not exist" {
|
|
run dokku "$PLUGIN_COMMAND_PREFIX:link" not_existing_service my_app
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_contains "${lines[*]}" "service not_existing_service does not exist"
|
|
assert_failure
|
|
}
|
|
|
|
@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
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_contains "${lines[*]}" "Already linked as MONGO_URL"
|
|
assert_failure
|
|
|
|
dokku "$PLUGIN_COMMAND_PREFIX:unlink" l my_app
|
|
}
|
|
|
|
@test "($PLUGIN_COMMAND_PREFIX:link) exports MONGO_URL to app" {
|
|
run dokku "$PLUGIN_COMMAND_PREFIX:link" l my_app
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
url=$(dokku config:get my_app MONGO_URL)
|
|
password="$(sudo cat "$PLUGIN_DATA_ROOT/l/PASSWORD")"
|
|
assert_contains "$url" "mongodb://l:$password@dokku-mongo-l:27017/l"
|
|
assert_success
|
|
dokku "$PLUGIN_COMMAND_PREFIX:unlink" l my_app
|
|
}
|
|
|
|
@test "($PLUGIN_COMMAND_PREFIX:link) generates an alternate config url when MONGO_URL already in use" {
|
|
dokku config:set my_app MONGO_URL=mongodb://user:pass@host:27017/db
|
|
dokku "$PLUGIN_COMMAND_PREFIX:link" l my_app
|
|
run dokku config my_app
|
|
assert_contains "${lines[*]}" "DOKKU_MONGO_"
|
|
assert_success
|
|
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.mongo.l:dokku-mongo-l"
|
|
assert_success
|
|
dokku "$PLUGIN_COMMAND_PREFIX:unlink" l my_app
|
|
}
|
|
|
|
@test "($PLUGIN_COMMAND_PREFIX:link) uses apps MONGO_DATABASE_SCHEME variable" {
|
|
dokku config:set my_app MONGO_DATABASE_SCHEME=mongodb2
|
|
dokku "$PLUGIN_COMMAND_PREFIX:link" l my_app
|
|
url=$(dokku config:get my_app MONGO_URL)
|
|
password="$(sudo cat "$PLUGIN_DATA_ROOT/l/PASSWORD")"
|
|
assert_contains "$url" "mongodb2://l:$password@dokku-mongo-l:27017/l"
|
|
assert_success
|
|
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 MONGO_URL)
|
|
assert_contains "$url" "?pool=5"
|
|
assert_success
|
|
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="$(sudo cat "$PLUGIN_DATA_ROOT/l/PASSWORD")"
|
|
assert_contains "$url" "mongodb://l:$password@dokku-mongo-l:27017/l"
|
|
assert_success
|
|
dokku "$PLUGIN_COMMAND_PREFIX:unlink" l my_app
|
|
}
|