Merge pull request #5 from dokku/lg-add-more-tests

Add more tests
This commit is contained in:
Jose Diaz-Gonzalez
2015-09-09 11:36:34 -04:00
21 changed files with 423 additions and 32 deletions

2
.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
tests/dokku
tests/fixtures

View File

@@ -36,7 +36,7 @@ case "$1" in
echo "$ID" > "$SERVICE_ROOT/ID" echo "$ID" > "$SERVICE_ROOT/ID"
dokku_log_verbose_quiet "Waiting for container to be ready" dokku_log_verbose_quiet "Waiting for container to be ready"
sleep 10 docker run --rm --link "$SERVICE_NAME:$PLUGIN_COMMAND_PREFIX" aanand/wait > /dev/null
dokku_log_info2 "$PLUGIN_SERVICE container created: $SERVICE" dokku_log_info2 "$PLUGIN_SERVICE container created: $SERVICE"
dokku "$PLUGIN_COMMAND_PREFIX:info" "$SERVICE" dokku "$PLUGIN_COMMAND_PREFIX:info" "$SERVICE"

View File

@@ -7,6 +7,7 @@ if ! docker images | grep -e "^$PLUGIN_IMAGE " | grep -q "$PLUGIN_IMAGE_VERSION"
fi fi
docker pull svendowideit/ambassador:latest docker pull svendowideit/ambassador:latest
docker pull aanand/wait:latest
mkdir -p "$PLUGIN_DATA_ROOT" || echo "Failed to create $PLUGIN_SERVICE directory" mkdir -p "$PLUGIN_DATA_ROOT" || echo "Failed to create $PLUGIN_SERVICE directory"
chown dokku:dokku "$PLUGIN_DATA_ROOT" chown dokku:dokku "$PLUGIN_DATA_ROOT"

View File

@@ -1,4 +1,9 @@
#!/usr/bin/env bash #!/usr/bin/env bash
if [[ $ECHO_DOCKER_COMMAND == "true" ]]; then
echo "$(basename "$0") $*"
exit 0
fi
case "$1" in case "$1" in
stop) stop)
echo "testid" echo "testid"
@@ -42,6 +47,15 @@ case "$1" in
exit 0 exit 0
fi fi
if [[ $@ =~ \{\{\.State\..*\}\} ]]; then
if [[ $@ =~ \{\{\.State\.Running\}\} ]]; then
echo "true"
else
echo "false"
fi
exit 0
fi
# running # running
echo "true" echo "true"
;; ;;
@@ -61,6 +75,9 @@ case "$1" in
pull) pull)
exit 0 exit 0
;; ;;
logs)
echo "1:M 08 Sep 07:36:43.544 # Server started, Redis version 3.0.3"
;;
*) *)
exit "$DOKKU_NOT_IMPLEMENTED_EXIT" exit "$DOKKU_NOT_IMPLEMENTED_EXIT"
;; ;;

View File

@@ -1,2 +0,0 @@
#!/usr/bin/env bash
exit 0

32
tests/redis_alias.bats Executable file
View File

@@ -0,0 +1,32 @@
#!/usr/bin/env bats
load test_helper
setup() {
dokku "$PLUGIN_COMMAND_PREFIX:create" l >&2
}
teardown() {
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l >&2
}
@test "($PLUGIN_COMMAND_PREFIX:alias) error when there are no arguments" {
run dokku "$PLUGIN_COMMAND_PREFIX:alias"
assert_contains "${lines[*]}" "Please specify a name for the service"
}
@test "($PLUGIN_COMMAND_PREFIX:alias) error when alias is missing" {
run dokku "$PLUGIN_COMMAND_PREFIX:alias" l
assert_contains "${lines[*]}" "Please specify an alias for the service"
}
@test "($PLUGIN_COMMAND_PREFIX:alias) error when service does not exist" {
run dokku "$PLUGIN_COMMAND_PREFIX:alias" not_existing_service MY_ALIAS
assert_contains "${lines[*]}" "Redis service not_existing_service does not exist"
}
@test "($PLUGIN_COMMAND_PREFIX:alias) success" {
run dokku "$PLUGIN_COMMAND_PREFIX:alias" l MY_ALIAS
new_alias=$(cat "$PLUGIN_DATA_ROOT/l/ALIAS")
[[ $new_alias == "MY_ALIAS" ]]
}

29
tests/redis_connect.bats Executable file
View File

@@ -0,0 +1,29 @@
#!/usr/bin/env bats
load test_helper
setup() {
export ECHO_DOCKER_COMMAND="false"
dokku "$PLUGIN_COMMAND_PREFIX:create" l >&2
}
teardown() {
export ECHO_DOCKER_COMMAND="false"
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l >&2
}
@test "($PLUGIN_COMMAND_PREFIX:connect) error when there are no arguments" {
run dokku "$PLUGIN_COMMAND_PREFIX:connect"
assert_contains "${lines[*]}" "Please specify a name for the service"
}
@test "($PLUGIN_COMMAND_PREFIX:connect) error when service does not exist" {
run dokku "$PLUGIN_COMMAND_PREFIX:connect" not_existing_service
assert_contains "${lines[*]}" "Redis service not_existing_service does not exist"
}
@test "($PLUGIN_COMMAND_PREFIX:connect) success" {
export ECHO_DOCKER_COMMAND="true"
run dokku "$PLUGIN_COMMAND_PREFIX:connect" l
assert_output 'docker run -it --link dokku.redis.l:redis --rm redis sh -c exec redis-cli -h "$REDIS_PORT_6379_TCP_ADDR" -p "$REDIS_PORT_6379_TCP_PORT"'
}

12
tests/redis_create.bats Executable file
View File

@@ -0,0 +1,12 @@
#!/usr/bin/env bats
load test_helper
@test "($PLUGIN_COMMAND_PREFIX:create) success" {
run dokku "$PLUGIN_COMMAND_PREFIX:create" l
assert_contains "${lines[*]}" "container created: l"
}
@test "($PLUGIN_COMMAND_PREFIX:create) error when there are no arguments" {
run dokku "$PLUGIN_COMMAND_PREFIX:create"
assert_contains "${lines[*]}" "Please specify a name for the service"
}

27
tests/redis_destroy.bats Executable file
View File

@@ -0,0 +1,27 @@
#!/usr/bin/env bats
load test_helper
@test "($PLUGIN_COMMAND_PREFIX:destroy) success with --force" {
dokku "$PLUGIN_COMMAND_PREFIX:create" l
run dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l
assert_contains "${lines[*]}" "container deleted: l"
}
@test "($PLUGIN_COMMAND_PREFIX:destroy) error when there are no arguments" {
run dokku "$PLUGIN_COMMAND_PREFIX:destroy"
assert_contains "${lines[*]}" "Please specify a name for the service"
}
@test "($PLUGIN_COMMAND_PREFIX:destroy) error when container does not exist" {
run dokku "$PLUGIN_COMMAND_PREFIX:destroy" non_existing_container
assert_contains "${lines[*]}" "Redis service non_existing_container does not exist"
}
@test "($PLUGIN_COMMAND_PREFIX:destroy) error when container is linked to an app" {
dokku "$PLUGIN_COMMAND_PREFIX:create" l
dokku apps:create app
dokku "$PLUGIN_COMMAND_PREFIX:link" l app
run dokku "$PLUGIN_COMMAND_PREFIX:destroy" l
assert_contains "${lines[*]}" "Cannot delete linked service"
rm "$DOKKU_ROOT/app" -rf
}

30
tests/redis_expose.bats Executable file
View File

@@ -0,0 +1,30 @@
#!/usr/bin/env bats
load test_helper
setup() {
dokku "$PLUGIN_COMMAND_PREFIX:create" l >&2
}
teardown() {
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l >&2
}
@test "($PLUGIN_COMMAND_PREFIX:expose) error when there are no arguments" {
run dokku "$PLUGIN_COMMAND_PREFIX:expose"
assert_contains "${lines[*]}" "Please specify a name for the service"
}
@test "($PLUGIN_COMMAND_PREFIX:expose) error when service does not exist" {
run dokku "$PLUGIN_COMMAND_PREFIX:expose" not_existing_service
assert_contains "${lines[*]}" "Redis service not_existing_service does not exist"
}
@test "($PLUGIN_COMMAND_PREFIX:expose) success when not providing a custom port" {
run dokku "$PLUGIN_COMMAND_PREFIX:expose" l
[[ "${lines[*]}" =~ exposed\ on\ port\(s\)\ [[:digit:]]+ ]]
}
@test "($PLUGIN_COMMAND_PREFIX:expose) success when providing a custom port" {
run dokku "$PLUGIN_COMMAND_PREFIX:expose" l 4242
assert_contains "${lines[*]}" "exposed on port(s) 4242"
}

25
tests/redis_info.bats Executable file
View File

@@ -0,0 +1,25 @@
#!/usr/bin/env bats
load test_helper
setup() {
dokku "$PLUGIN_COMMAND_PREFIX:create" l >&2
}
teardown() {
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l >&2
}
@test "($PLUGIN_COMMAND_PREFIX:info) error when there are no arguments" {
run dokku "$PLUGIN_COMMAND_PREFIX:info"
assert_contains "${lines[*]}" "Please specify a name for the service"
}
@test "($PLUGIN_COMMAND_PREFIX:info) error when service does not exist" {
run dokku "$PLUGIN_COMMAND_PREFIX:info" not_existing_service
assert_contains "${lines[*]}" "Redis service not_existing_service does not exist"
}
@test "($PLUGIN_COMMAND_PREFIX:info) success" {
run dokku "$PLUGIN_COMMAND_PREFIX:info" l
assert_contains "${lines[*]}" "DSN: redis://172.17.0.34:6379/0"
}

38
tests/redis_link.bats Executable file
View File

@@ -0,0 +1,38 @@
#!/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 "$DOKKU_ROOT/my_app" -rf
}
@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[*]}" "Redis service not_existing_service does not exist"
}
@test "($PLUGIN_COMMAND_PREFIX:link) success" {
run dokku "$PLUGIN_COMMAND_PREFIX:link" l my_app
links=$(cat "$PLUGIN_DATA_ROOT/l/LINKS")
assert_equal "$links" "my_app"
}

28
tests/redis_list.bats Executable file
View File

@@ -0,0 +1,28 @@
#!/usr/bin/env bats
load test_helper
setup() {
dokku "$PLUGIN_COMMAND_PREFIX:create" l >&2
}
teardown() {
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l >&2
}
@test "($PLUGIN_COMMAND_PREFIX:list) with no exposed ports" {
run dokku "$PLUGIN_COMMAND_PREFIX:list"
assert_contains "${lines[*]}" "l (running)"
}
@test "($PLUGIN_COMMAND_PREFIX:list) with exposed ports" {
dokku "$PLUGIN_COMMAND_PREFIX:expose" l 4242
run dokku "$PLUGIN_COMMAND_PREFIX:list"
assert_contains "${lines[*]}" "l (running), exposed port(s): 6379->4242"
}
@test "($PLUGIN_COMMAND_PREFIX:list) when there are no services" {
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l >&2
run dokku "$PLUGIN_COMMAND_PREFIX:list"
assert_contains "${lines[*]}" "There are no Redis services"
dokku "$PLUGIN_COMMAND_PREFIX:create" l >&2
}

34
tests/redis_logs.bats Executable file
View File

@@ -0,0 +1,34 @@
#!/usr/bin/env bats
load test_helper
setup() {
export ECHO_DOCKER_COMMAND="false"
dokku "$PLUGIN_COMMAND_PREFIX:create" l >&2
}
teardown() {
export ECHO_DOCKER_COMMAND="false"
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l >&2
}
@test "($PLUGIN_COMMAND_PREFIX:logs) error when there are no arguments" {
run dokku "$PLUGIN_COMMAND_PREFIX:logs"
assert_contains "${lines[*]}" "Please specify a name for the service"
}
@test "($PLUGIN_COMMAND_PREFIX:logs) error when service does not exist" {
run dokku "$PLUGIN_COMMAND_PREFIX:logs" not_existing_service
assert_contains "${lines[*]}" "Redis service not_existing_service does not exist"
}
@test "($PLUGIN_COMMAND_PREFIX:logs) success when not tailing" {
export ECHO_DOCKER_COMMAND="true"
run dokku "$PLUGIN_COMMAND_PREFIX:logs" l
assert_output "docker logs --tail 100 testid"
}
@test "($PLUGIN_COMMAND_PREFIX:logs) success when tailing" {
export ECHO_DOCKER_COMMAND="true"
run dokku "$PLUGIN_COMMAND_PREFIX:logs" l -t
assert_output "docker logs --follow testid"
}

26
tests/redis_restart.bats Executable file
View File

@@ -0,0 +1,26 @@
#!/usr/bin/env bats
load test_helper
setup() {
dokku "$PLUGIN_COMMAND_PREFIX:create" l >&2
}
teardown() {
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l >&2
}
@test "($PLUGIN_COMMAND_PREFIX:restart) error when there are no arguments" {
run dokku "$PLUGIN_COMMAND_PREFIX:restart"
assert_contains "${lines[*]}" "Please specify a name for the service"
}
@test "($PLUGIN_COMMAND_PREFIX:restart) error when service does not exist" {
run dokku "$PLUGIN_COMMAND_PREFIX:restart" not_existing_service
assert_contains "${lines[*]}" "Redis service not_existing_service does not exist"
}
@test "($PLUGIN_COMMAND_PREFIX:restart) success" {
run dokku "$PLUGIN_COMMAND_PREFIX:restart" l
assert_success
}

26
tests/redis_start.bats Executable file
View File

@@ -0,0 +1,26 @@
#!/usr/bin/env bats
load test_helper
setup() {
dokku "$PLUGIN_COMMAND_PREFIX:create" l >&2
}
teardown() {
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l >&2
}
@test "($PLUGIN_COMMAND_PREFIX:start) error when there are no arguments" {
run dokku "$PLUGIN_COMMAND_PREFIX:start"
assert_contains "${lines[*]}" "Please specify a name for the service"
}
@test "($PLUGIN_COMMAND_PREFIX:start) error when service does not exist" {
run dokku "$PLUGIN_COMMAND_PREFIX:start" not_existing_service
assert_contains "${lines[*]}" "Redis service not_existing_service does not exist"
}
@test "($PLUGIN_COMMAND_PREFIX:start) success" {
run dokku "$PLUGIN_COMMAND_PREFIX:start" l
assert_success
}

26
tests/redis_stop.bats Executable file
View File

@@ -0,0 +1,26 @@
#!/usr/bin/env bats
load test_helper
setup() {
dokku "$PLUGIN_COMMAND_PREFIX:create" l >&2
}
teardown() {
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l >&2
}
@test "($PLUGIN_COMMAND_PREFIX:stop) error when there are no arguments" {
run dokku "$PLUGIN_COMMAND_PREFIX:stop"
assert_contains "${lines[*]}" "Please specify a name for the service"
}
@test "($PLUGIN_COMMAND_PREFIX:stop) error when service does not exist" {
run dokku "$PLUGIN_COMMAND_PREFIX:stop" not_existing_service
assert_contains "${lines[*]}" "Redis service not_existing_service does not exist"
}
@test "($PLUGIN_COMMAND_PREFIX:stop) success" {
run dokku "$PLUGIN_COMMAND_PREFIX:stop" l
assert_success
}

28
tests/redis_unexpose.bats Executable file
View File

@@ -0,0 +1,28 @@
#!/usr/bin/env bats
load test_helper
setup() {
dokku "$PLUGIN_COMMAND_PREFIX:create" l >&2
}
teardown() {
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l >&2
}
@test "($PLUGIN_COMMAND_PREFIX:unexpose) error when there are no arguments" {
run dokku "$PLUGIN_COMMAND_PREFIX:unexpose"
assert_contains "${lines[*]}" "Please specify a name for the service"
}
@test "($PLUGIN_COMMAND_PREFIX:unexpose) error when service does not exist" {
run dokku "$PLUGIN_COMMAND_PREFIX:unexpose" not_existing_service
assert_contains "${lines[*]}" "Redis service not_existing_service does not exist"
}
@test "($PLUGIN_COMMAND_PREFIX:unexpose) success" {
dokku "$PLUGIN_COMMAND_PREFIX:expose" l
run dokku "$PLUGIN_COMMAND_PREFIX:unexpose" l
[[ ! -f $PLUGIN_DATA_ROOT/PORT ]]
assert_contains "${lines[*]}" "Service l unexposed"
}

39
tests/redis_unlink.bats Executable file
View File

@@ -0,0 +1,39 @@
#!/usr/bin/env bats
load test_helper
setup() {
dokku apps:create my_app >&2
dokku "$PLUGIN_COMMAND_PREFIX:create" l >&2
}
teardown() {
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l >&2
rm "$DOKKU_ROOT/my_app" -rf
}
@test "($PLUGIN_COMMAND_PREFIX:unlink) error when there are no arguments" {
run dokku "$PLUGIN_COMMAND_PREFIX:unlink"
assert_contains "${lines[*]}" "Please specify a name for the service"
}
@test "($PLUGIN_COMMAND_PREFIX:unlink) error when the app argument is missing" {
run dokku "$PLUGIN_COMMAND_PREFIX:unlink" l
assert_contains "${lines[*]}" "Please specify an app to run the command on"
}
@test "($PLUGIN_COMMAND_PREFIX:unlink) error when the app does not exist" {
run dokku "$PLUGIN_COMMAND_PREFIX:unlink" l not_existing_app
assert_contains "${lines[*]}" "App not_existing_app does not exist"
}
@test "($PLUGIN_COMMAND_PREFIX:unlink) error when the service does not exist" {
run dokku "$PLUGIN_COMMAND_PREFIX:unlink" not_existing_service my_app
assert_contains "${lines[*]}" "Redis service not_existing_service does not exist"
}
@test "($PLUGIN_COMMAND_PREFIX:unlink) success" {
dokku "$PLUGIN_COMMAND_PREFIX:link" l my_app >&2
run dokku "$PLUGIN_COMMAND_PREFIX:unlink" l my_app
links=$(cat "$PLUGIN_DATA_ROOT/l/LINKS")
assert_equal "$links" ""
}

View File

@@ -1,28 +0,0 @@
#!/usr/bin/env bats
load test_helper
@test "(service) dokku" {
dokku $PLUGIN_COMMAND_PREFIX:create l
assert_success
dokku $PLUGIN_COMMAND_PREFIX:info l
assert_success
dokku $PLUGIN_COMMAND_PREFIX:stop l
assert_success
dokku $PLUGIN_COMMAND_PREFIX:stop l
assert_success
dokku $PLUGIN_COMMAND_PREFIX:expose l
assert_success
dokku $PLUGIN_COMMAND_PREFIX:restart l
assert_success
dokku $PLUGIN_COMMAND_PREFIX:info l
assert_success
dokku --force $PLUGIN_COMMAND_PREFIX:destroy l
assert_success
}

View File

@@ -7,7 +7,8 @@ export PLUGIN_COMMAND_PREFIX="redis"
export PLUGIN_PATH="$DOKKU_ROOT/plugins" export PLUGIN_PATH="$DOKKU_ROOT/plugins"
export PLUGIN_DATA_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/fixtures" export PLUGIN_DATA_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/fixtures"
mkdir -p $PLUGIN_DATA_ROOT mkdir -p "$PLUGIN_DATA_ROOT"
rm -rf "${PLUGIN_DATA_ROOT:?}"/*
flunk() { flunk() {
{ if [ "$#" -eq 0 ]; then cat - { if [ "$#" -eq 0 ]; then cat -