mirror of
https://github.com/dokku/dokku.git
synced 2025-12-29 00:25:08 +01:00
420 lines
11 KiB
Bash
420 lines
11 KiB
Bash
#!/usr/bin/env bats
|
|
|
|
load test_helper
|
|
|
|
setup() {
|
|
global_setup
|
|
|
|
# create a temporary key and save in a variable
|
|
create_key
|
|
local KEY="$(cat /tmp/testkey.pub)"
|
|
destroy_key
|
|
|
|
# now create key that will be really used
|
|
create_key
|
|
|
|
# Test key without a trailing newline
|
|
echo -n "$KEY" > /tmp/testkey-no-newline.pub
|
|
|
|
# the temporary key is useful for adding in the file with two keys
|
|
# useful for a negative test
|
|
{ cat /tmp/testkey.pub ; echo "$KEY" ; } > /tmp/testkey-double.pub
|
|
|
|
# another negative test input
|
|
echo 'invalid!' > /tmp/testkey-invalid.pub
|
|
|
|
# save current authorized_keys to remove all changes afterwards
|
|
cp "${DOKKU_ROOT:-/home/dokku}/.ssh/authorized_keys" /tmp/testkey-authorized_keys
|
|
}
|
|
|
|
teardown() {
|
|
# restore authorized_keys to its contents before the tests
|
|
cp /tmp/testkey-authorized_keys "${DOKKU_ROOT:-/home/dokku}/.ssh/authorized_keys"
|
|
|
|
# normal cleanup after here
|
|
destroy_key
|
|
global_teardown
|
|
}
|
|
|
|
@test "(ssh-keys) ssh-keys:help" {
|
|
run /bin/bash -c "dokku ssh-keys"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_output_contains "Manage public ssh keys used for deployment"
|
|
help_output="$output"
|
|
|
|
run /bin/bash -c "dokku ssh-keys:help"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_output_contains "Manage public ssh keys used for deployment"
|
|
assert_output "$help_output"
|
|
}
|
|
|
|
@test "(ssh-keys) ssh-keys:add" {
|
|
run /bin/bash -c "dokku ssh-keys:add name1 /tmp/testkey-double.pub"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_failure
|
|
|
|
run /bin/bash -c "dokku ssh-keys:add name2 /tmp/testkey-invalid.pub"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_failure
|
|
|
|
run /bin/bash -c "dokku ssh-keys:add name3 /tmp/testkey.pub"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ssh-keys:list name3"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ssh-keys:add name4 /tmp/testkey-no-newline.pub"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ssh-keys:list name4"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
}
|
|
|
|
@test "(ssh-keys) ssh-keys:add FILE" {
|
|
run /bin/bash -c "dokku ssh-keys:add name /tmp/testkey.pub"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ssh-keys:add name /tmp/testkey.pub"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_failure
|
|
|
|
run /bin/bash -c "cat /tmp/testkey.pub | dokku ssh-keys:add name"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_failure
|
|
|
|
run /bin/bash -c "dokku ssh-keys:add other-name /tmp/testkey.pub"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_failure
|
|
|
|
run /bin/bash -c "cat /tmp/testkey.pub | dokku ssh-keys:add other-name"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_failure
|
|
|
|
run /bin/bash -c "dokku ssh-keys:list name"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ssh-keys:list other-name"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_failure
|
|
}
|
|
|
|
@test "(ssh-keys) ssh-keys:add stdin" {
|
|
run /bin/bash -c "cat /tmp/testkey.pub | dokku ssh-keys:add name"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ssh-keys:add name /tmp/testkey.pub"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_failure
|
|
|
|
run /bin/bash -c "cat /tmp/testkey.pub | dokku ssh-keys:add name"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_failure
|
|
|
|
run /bin/bash -c "dokku ssh-keys:add other-name /tmp/testkey.pub"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_failure
|
|
|
|
run /bin/bash -c "cat /tmp/testkey.pub | dokku ssh-keys:add other-name"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_failure
|
|
|
|
run /bin/bash -c "dokku ssh-keys:list name"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ssh-keys:list other-name"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_failure
|
|
}
|
|
|
|
@test "(ssh-keys) ssh-keys:add invalid" {
|
|
run /bin/bash -c 'echo invalid >> "${DOKKU_ROOT:-/home/dokku}/.ssh/authorized_keys"'
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ssh-keys:add name5 /tmp/testkey.pub"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_failure
|
|
|
|
run /bin/bash -c "dokku ssh-keys:list"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_failure
|
|
}
|
|
|
|
@test "(ssh-keys) ssh-keys:remove" {
|
|
run /bin/bash -c "dokku ssh-keys:add new-user /tmp/testkey.pub"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ssh-keys:list new-user | wc -l"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_equal "$output" "1"
|
|
|
|
run /bin/bash -c "dokku ssh-keys:remove new-user"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ssh-keys:list new-user | wc -l"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_equal "$output" "0"
|
|
|
|
run /bin/bash -c "dokku ssh-keys:remove new-user"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ssh-keys:add new-user /tmp/testkey.pub"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ssh-keys:list new-user | wc -l"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_equal "$output" "1"
|
|
|
|
run /bin/bash -c "dokku ssh-keys:list new-user | cut -d' ' -f1"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_output_exists
|
|
|
|
local fingerprint="$output"
|
|
run /bin/bash -c "dokku ssh-keys:remove --fingerprint ${fingerprint}"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ssh-keys:list new-user | wc -l"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_equal "$output" "0"
|
|
}
|
|
|
|
@test "(ssh-keys) ssh-keys:list" {
|
|
run /bin/bash -c "dokku ssh-keys:list"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c 'echo "" >> "${DOKKU_ROOT:-/home/dokku}/.ssh/authorized_keys"'
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ssh-keys:list"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ssh-keys:list | grep name1"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_failure
|
|
|
|
run /bin/bash -c "dokku ssh-keys:list name1"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_failure
|
|
|
|
run /bin/bash -c 'echo "" > "${DOKKU_ROOT:-/home/dokku}/.ssh/authorized_keys"'
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ssh-keys:add new-user /tmp/testkey.pub"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ssh-keys:list"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ssh-keys:list | wc -l"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_equal "$output" "1"
|
|
|
|
run /bin/bash -c "dokku ssh-keys:add another-user /tmp/testkey-no-newline.pub"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ssh-keys:list | wc -l"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_equal "$output" "2"
|
|
|
|
run /bin/bash -c "dokku ssh-keys:list new-user | wc -l"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_equal "$output" "1"
|
|
}
|
|
|
|
|
|
@test "(ssh-keys) ssh-keys:list --format invalid" {
|
|
run /bin/bash -c "dokku ssh-keys:list --format invalid"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_failure
|
|
}
|
|
|
|
@test "(ssh-keys) ssh-keys:list --format text" {
|
|
run /bin/bash -c "dokku ssh-keys:list --format text"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c 'echo "" >> "${DOKKU_ROOT:-/home/dokku}/.ssh/authorized_keys"'
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ssh-keys:list --format text"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ssh-keys:list --format text | grep name1"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_failure
|
|
|
|
run /bin/bash -c "dokku ssh-keys:list --format text name1"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_failure
|
|
|
|
run /bin/bash -c 'echo "" > "${DOKKU_ROOT:-/home/dokku}/.ssh/authorized_keys"'
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ssh-keys:add new-user /tmp/testkey.pub"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ssh-keys:list --format text | wc -l"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_equal "$output" "1"
|
|
|
|
run /bin/bash -c "dokku ssh-keys:add another-user /tmp/testkey-no-newline.pub"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ssh-keys:list --format text | wc -l"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_equal "$output" "2"
|
|
|
|
run /bin/bash -c "dokku ssh-keys:list --format text new-user | wc -l"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_equal "$output" "1"
|
|
}
|
|
|
|
@test "(ssh-keys) ssh-keys:list --format json" {
|
|
run /bin/bash -c "dokku ssh-keys:list --format json | jq -e ."
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c 'echo "" >> "${DOKKU_ROOT:-/home/dokku}/.ssh/authorized_keys"'
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ssh-keys:list --format json | jq -e ."
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ssh-keys:list --format json name1"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_output "[]"
|
|
|
|
run /bin/bash -c 'echo "" > "${DOKKU_ROOT:-/home/dokku}/.ssh/authorized_keys"'
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ssh-keys:add new-user /tmp/testkey.pub"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ssh-keys:list --format json | jq length"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_equal "$output" "1"
|
|
|
|
run /bin/bash -c "dokku ssh-keys:add another-user /tmp/testkey-no-newline.pub"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ssh-keys:list --format json | jq length"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_equal "$output" "2"
|
|
|
|
run /bin/bash -c "dokku ssh-keys:list --format json new-user | jq length"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_equal "$output" "1"
|
|
}
|