feat: add support for network related flags on create, clone, and upgrade

Also add some tests to cover all the network-related functionality.
This commit is contained in:
Jose Diaz-Gonzalez
2023-02-08 00:03:25 -05:00
parent 059ece5173
commit 43d0987322
7 changed files with 193 additions and 1 deletions

143
tests/link_networks.bats Executable file
View File

@@ -0,0 +1,143 @@
#!/usr/bin/env bats
load test_helper
setup() {
dokku "$PLUGIN_COMMAND_PREFIX:create" ls
dokku network:create custom-network
}
teardown() {
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" ls || true
dokku network:destroy --force custom-network
}
@test "($PLUGIN_COMMAND_PREFIX:set) set initial-network" {
run dokku "$PLUGIN_COMMAND_PREFIX:set" ls initial-network custom-network
assert_success
run dokku "$PLUGIN_COMMAND_PREFIX:info" ls --initial-network
assert_output "custom-network"
assert_success
run dokku "$PLUGIN_COMMAND_PREFIX:set" ls initial-network
assert_success
run dokku "$PLUGIN_COMMAND_PREFIX:info" ls --initial-network
assert_output ""
assert_success
run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.ls -f '{{range $net,$v := .NetworkSettings.Networks}}{{printf "%s\n" $net}}{{end}}'
assert_success
assert_output_contains bridge
assert_output_contains custom-network 0
run dokku "$PLUGIN_COMMAND_PREFIX:stop" ls
assert_success
run dokku "$PLUGIN_COMMAND_PREFIX:start" ls
assert_success
run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.ls -f '{{range $net,$v := .NetworkSettings.Networks}}{{printf "%s\n" $net}}{{end}}'
assert_success
assert_output_contains bridge 0
assert_output_contains custom-network
}
@test "($PLUGIN_COMMAND_PREFIX:set) set post-create-network" {
run dokku "$PLUGIN_COMMAND_PREFIX:set" ls post-create-network custom-network
assert_success
run dokku "$PLUGIN_COMMAND_PREFIX:info" ls --post-create-network
assert_output "custom-network"
assert_success
run dokku "$PLUGIN_COMMAND_PREFIX:set" ls post-create-network
assert_success
run dokku "$PLUGIN_COMMAND_PREFIX:info" ls --post-create-network
assert_output ""
assert_success
run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.ls -f '{{range $net,$v := .NetworkSettings.Networks}}{{printf "%s\n" $net}}{{end}}'
assert_success
assert_output_contains bridge
assert_output_contains custom-network 0
run dokku "$PLUGIN_COMMAND_PREFIX:stop" ls
assert_success
run dokku "$PLUGIN_COMMAND_PREFIX:start" ls
assert_success
run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.ls -f '{{range $net,$v := .NetworkSettings.Networks}}{{printf "%s\n" $net}}{{end}}'
assert_success
assert_output_contains custom-network
assert_output_contains bridge
}
@test "($PLUGIN_COMMAND_PREFIX:set) set an post-start-network" {
run dokku "$PLUGIN_COMMAND_PREFIX:set" ls post-start-network custom-network
assert_success
run dokku "$PLUGIN_COMMAND_PREFIX:info" ls --post-start-network
assert_output "custom-network"
assert_success
run dokku "$PLUGIN_COMMAND_PREFIX:set" ls post-start-network
assert_success
run dokku "$PLUGIN_COMMAND_PREFIX:info" ls --post-start-network
assert_output ""
assert_success
run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.ls -f '{{range $net,$v := .NetworkSettings.Networks}}{{printf "%s\n" $net}}{{end}}'
assert_success
assert_output_contains bridge
assert_output_contains custom-network 0
run dokku "$PLUGIN_COMMAND_PREFIX:stop" ls
assert_success
run dokku "$PLUGIN_COMMAND_PREFIX:start" ls
assert_success
run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.ls -f '{{range $net,$v := .NetworkSettings.Networks}}{{printf "%s\n" $net}}{{end}}'
assert_success
assert_output_contains bridge
assert_output_contains custom-network
}
@test "($PLUGIN_COMMAND_PREFIX:create) flags" {
run dokku "$PLUGIN_COMMAND_PREFIX:create" lsa --initial-network custom-network
assert_success
run docker inspect "dokku.$PLUGIN_COMMAND_PREFIX.lsa" -f '{{range $net,$v := .NetworkSettings.Networks}}{{printf "%s\n" $net}}{{end}}'
assert_success
assert_output_contains bridge 0
assert_output_contains custom-network
run dokku "$PLUGIN_COMMAND_PREFIX:destroy" lsa --force
assert_success
run dokku "$PLUGIN_COMMAND_PREFIX:create" lsa --post-create-network custom-network
assert_success
run docker inspect "dokku.$PLUGIN_COMMAND_PREFIX.lsa" -f '{{range $net,$v := .NetworkSettings.Networks}}{{printf "%s\n" $net}}{{end}}'
assert_success
assert_output_contains bridge
assert_output_contains custom-network
run dokku "$PLUGIN_COMMAND_PREFIX:destroy" lsa --force
assert_success
run dokku "$PLUGIN_COMMAND_PREFIX:create" lsa --post-start-network custom-network
assert_success
run docker inspect "dokku.$PLUGIN_COMMAND_PREFIX.lsa" -f '{{range $net,$v := .NetworkSettings.Networks}}{{printf "%s\n" $net}}{{end}}'
assert_success
assert_output_contains bridge
assert_output_contains custom-network
run dokku "$PLUGIN_COMMAND_PREFIX:destroy" lsa --force
assert_success
}

View File

@@ -70,3 +70,17 @@ assert_output() {
fi
assert_equal "$expected" "$output"
}
# ShellCheck doesn't know about $output from Bats
# shellcheck disable=SC2154
assert_output_contains() {
local input="$output"
local expected="$1"
local count="${2:-1}"
local found=0
until [ "${input/$expected/}" = "$input" ]; do
input="${input/$expected/}"
found=$((found + 1))
done
assert_equal "$count" "$found"
}