From 9c37b9b748c0d7a2bac0815a8f6af8e1f8a33d22 Mon Sep 17 00:00:00 2001 From: decentral1se Date: Mon, 1 Sep 2025 11:17:11 +0200 Subject: [PATCH] test: app move (basics) --- pkg/client/client.go | 27 ++++++++++------- tests/integration/app_move.bats | 42 +++++++++++++++++++++++++++ tests/integration/helpers/common.bash | 1 + tests/integration/helpers/server.bash | 18 ++++++++++++ 4 files changed, 78 insertions(+), 10 deletions(-) create mode 100644 tests/integration/app_move.bats diff --git a/pkg/client/client.go b/pkg/client/client.go index b73a2a2c..69cc53a6 100644 --- a/pkg/client/client.go +++ b/pkg/client/client.go @@ -6,6 +6,7 @@ import ( "errors" "net/http" "os" + "strings" "time" contextPkg "coopcloud.tech/abra/pkg/context" @@ -38,18 +39,24 @@ func WithTimeout(timeout int) Opt { func New(serverName string, opts ...Opt) (*client.Client, error) { var clientOpts []client.Opt - if serverName != "default" { - context, err := GetContext(serverName) - if err != nil { - return nil, errors.New(i18n.G("unknown server, run \"abra server add %s\"?", serverName)) - } + ctx, err := GetContext(serverName) + if err != nil { + return nil, errors.New(i18n.G("unknown server, run \"abra server add %s\"?", serverName)) + } - ctxEndpoint, err := contextPkg.GetContextEndpoint(context) - if err != nil { - return nil, err - } + ctxEndpoint, err := contextPkg.GetContextEndpoint(ctx) + if err != nil { + return nil, err + } + var isUnix bool + if strings.Contains(ctxEndpoint, "unix://") { + isUnix = true + } + + if serverName != "default" && !isUnix { conf := &Conf{} + for _, opt := range opts { opt(conf) } @@ -93,7 +100,7 @@ func New(serverName string, opts ...Opt) (*client.Client, error) { } if info.Swarm.LocalNodeState == "inactive" { - if serverName != "default" { + if serverName != "default" && !isUnix { return cl, errors.New(i18n.G("swarm mode not enabled on %s?", serverName)) } diff --git a/tests/integration/app_move.bats b/tests/integration/app_move.bats new file mode 100644 index 00000000..28673242 --- /dev/null +++ b/tests/integration/app_move.bats @@ -0,0 +1,42 @@ +#!/usr/bin/env bash + +setup_file(){ + load "$PWD/tests/integration/helpers/common" + _common_setup + _add_server + _add_move_server + _new_app +} + +teardown_file(){ + _rm_app + _rm_server + _rm_move_server +} + +setup(){ + load "$PWD/tests/integration/helpers/common" + _common_setup + _ensure_catalogue +} + +teardown(){ + _undeploy_app +} + +@test "validate app argument" { + run $ABRA app move + assert_failure + + run $ABRA app move DOESNTEXIST + assert_failure + + run $ABRA app move "$TEST_APP_DOMAIN" DOESNTEXIST + assert_failure +} + +@test "move app fails if not deployed" { + run $ABRA app move "$TEST_APP_DOMAIN" "$TEST_MOVE_SERVER" + assert_failure + assert_output --partial 'must first be deployed' +} diff --git a/tests/integration/helpers/common.bash b/tests/integration/helpers/common.bash index 892be7b2..0ad6ebaf 100644 --- a/tests/integration/helpers/common.bash +++ b/tests/integration/helpers/common.bash @@ -17,6 +17,7 @@ _common_setup() { export TEST_APP_NAME="$(basename "${BATS_TEST_FILENAME//./_}")" export TEST_APP_DOMAIN="$TEST_APP_NAME.$TEST_SERVER" + export TEST_MOVE_SERVER="default2" export TEST_RECIPE="abra-test-recipe" _ensure_swarm diff --git a/tests/integration/helpers/server.bash b/tests/integration/helpers/server.bash index e3bcb320..76d6164d 100644 --- a/tests/integration/helpers/server.bash +++ b/tests/integration/helpers/server.bash @@ -10,6 +10,15 @@ _add_server() { assert_exists "$ABRA_DIR/servers/$TEST_SERVER" } +_add_move_server() { + run docker context create default2 --docker "host=unix:///var/run/docker.sock" + assert_success + + run mkdir -p "$ABRA_DIR/servers/default2" + assert_success + assert_exists "$ABRA_DIR/servers/default2" +} + _rm_server() { if [[ "$TEST_SERVER" == "default" ]]; then run rm -rf "$ABRA_DIR/servers/default" @@ -20,6 +29,15 @@ _rm_server() { assert_not_exists "$ABRA_DIR/servers/$TEST_SERVER" } +_rm_move_server() { + run docker context rm default2 + assert_success + + run rm -rf "$ABRA_DIR/servers/default2" + assert_success + assert_not_exists "$ABRA_DIR/servers/default2" +} + _rm_default_server(){ run rm -rf "$ABRA_DIR/servers/default" assert_success