77 lines
2.2 KiB
Go
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)
|
|
}
|
|
}
|