From 52441bfdeb783f91c0b5740e315bd044159ea8fd Mon Sep 17 00:00:00 2001 From: Enrico Candino Date: Mon, 12 Feb 2024 15:50:32 +0100 Subject: [PATCH] added serverDelete tests, fix for delete current --- cmd/server.go | 4 ++++ cmd/server_test.go | 56 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) diff --git a/cmd/server.go b/cmd/server.go index b17458f..8b916a8 100644 --- a/cmd/server.go +++ b/cmd/server.go @@ -105,6 +105,10 @@ func serverDelete(cfg *config.Config, serverName string) error { } delete(cfg.Servers, serverName) + if cfg.CurrentServer == serverName { + cfg.CurrentServer = "" + } + err := cfg.Write() if err != nil { return err diff --git a/cmd/server_test.go b/cmd/server_test.go index a1ef917..92b6a66 100644 --- a/cmd/server_test.go +++ b/cmd/server_test.go @@ -59,6 +59,62 @@ func TestServerCurrentCommand(t *testing.T) { } } +func TestServerDelete(t *testing.T) { + tt := []struct { + name string + actualCurrentServer string + serverToDelete string + expectedCurrentServer string + expectedErr string + }{ + { + name: "delete a different server will delete it", + actualCurrentServer: "server1", + serverToDelete: "server3", + expectedCurrentServer: "server1", + }, + { + name: "delete the same server will blank the current", + actualCurrentServer: "server1", + serverToDelete: "server1", + expectedCurrentServer: "", + }, + { + name: "delete a non existing server", + actualCurrentServer: "server1", + serverToDelete: "server-nope", + expectedCurrentServer: "server1", + expectedErr: "Server not found", + }, + } + for _, tc := range tt { + tc := tc + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + + tmpConfig, err := os.CreateTemp("", "*-rancher-config.json") + assert.NoError(t, err) + defer os.Remove(tmpConfig.Name()) + + // setup test config + cfg := newTestConfig() + cfg.Path = tmpConfig.Name() + cfg.CurrentServer = tc.actualCurrentServer + + // do test and check resulting config + err = serverDelete(cfg, tc.serverToDelete) + if err != nil { + assert.EqualError(t, err, tc.expectedErr) + } else { + assert.NoError(t, err) + } + + assert.Equal(t, tc.expectedCurrentServer, cfg.CurrentServer) + assert.Empty(t, cfg.Servers[tc.serverToDelete]) + }) + } +} + func TestServerSwitch(t *testing.T) { tt := []struct { name string