Files
ssh-netbox-wrapper/cmd/netssh/notes_test.go
2026-10-27 19:19:42 +01:00

77 lines
2.2 KiB
Go

package main
import (
"bytes"
"git.zb-server.de/Sebi/ssh-netbox-wrapper/internal/hook"
"os"
"path/filepath"
"strings"
"testing"
)
func TestLocalNotesCLI(t *testing.T) {
t.Setenv("XDG_CONFIG_HOME", t.TempDir())
t.Setenv("NETSSH_CACHE_PATH", filepath.Join(t.TempDir(), "hosts.json"))
run := func(args []string, input string) (string, error) {
root := rootCmd()
var out bytes.Buffer
root.SetOut(&out)
root.SetErr(&out)
root.SetIn(strings.NewReader(input))
root.SetArgs(args)
err := root.Execute()
return out.String(), err
}
if _, err := run([]string{"notes", "set", "web01", "--kind", "vm"}, "First\nSecond"); err != nil {
t.Fatal(err)
}
if _, err := run([]string{"notes", "append", "web01", "Third", "--kind", "vm"}, ""); err != nil {
t.Fatal(err)
}
out, err := run([]string{"notes", "show", "web01", "--kind", "vm"}, "")
if err != nil || out != "First\nSecond\nThird" {
t.Fatalf("show: %q, %v", out, err)
}
if _, err := run([]string{"notes", "set", "web01", "", "--kind", "vm"}, ""); err != nil {
t.Fatal(err)
}
out, err = run([]string{"notes", "show", "web01", "--kind", "vm"}, "")
if err != nil || out != "" {
t.Fatalf("clear: %q, %v", out, err)
}
}
func TestShellInitUpdatesAndRemovesCommandAliasWithoutHosts(t *testing.T) {
t.Setenv("HOME", t.TempDir())
t.Setenv("XDG_CONFIG_HOME", t.TempDir())
t.Setenv("XDG_CACHE_HOME", t.TempDir())
t.Setenv("NETSSH_CACHE_PATH", filepath.Join(t.TempDir(), "hosts.json"))
t.Setenv("NETSSH_NETBOX_URL", "")
t.Setenv("NETSSH_SHELL_ALIAS", "j")
run := func() {
t.Helper()
root := rootCmd()
root.SetArgs([]string{"shell-init"})
if err := root.Execute(); err != nil {
t.Fatal(err)
}
}
run()
data, err := os.ReadFile(hook.AliasesPath())
if err != nil || !strings.Contains(string(data), "alias j='netssh'") {
t.Fatalf("alias missing: %s, %v", data, err)
}
t.Setenv("NETSSH_SHELL_ALIAS", "k")
run()
data, _ = os.ReadFile(hook.AliasesPath())
if strings.Contains(string(data), "alias j=") || !strings.Contains(string(data), "alias k='netssh'") {
t.Fatalf("alias change: %s", data)
}
t.Setenv("NETSSH_SHELL_ALIAS", "")
run()
data, _ = os.ReadFile(hook.AliasesPath())
if strings.Contains(string(data), "alias k=") {
t.Fatalf("stale alias: %s", data)
}
}