sshkeeper/cmd/forward_test.go

60 lines
1.4 KiB
Go

package cmd
import (
"strconv"
"testing"
"github.com/mirivlad/sshkeeper/internal/db"
"github.com/mirivlad/sshkeeper/internal/model"
"github.com/spf13/cobra"
)
func TestForwardEditUpdatesEnabledFlag(t *testing.T) {
testDB, err := db.Open(t.TempDir())
if err != nil {
t.Fatalf("open db: %v", err)
}
defer testDB.Close()
previousDB := appDB
appDB = testDB
t.Cleanup(func() { appDB = previousDB })
server := &model.Server{Alias: "web", Host: "web.example.org", Port: 22, User: "root", AuthMethod: model.AuthKey}
if err := appDB.CreateServer(server); err != nil {
t.Fatalf("create server: %v", err)
}
forwardID, err := appDB.AddForward(&model.Forward{
ServerID: server.ID,
Name: "SOCKS",
Type: model.ForwardDynamic,
LocalAddr: "127.0.0.1",
LocalPort: 1080,
Enabled: true,
})
if err != nil {
t.Fatalf("add forward: %v", err)
}
cmd := &cobra.Command{}
cmd.Flags().Bool("enabled", true, "Enable/disable forward")
if err := cmd.Flags().Set("enabled", "false"); err != nil {
t.Fatalf("set enabled flag: %v", err)
}
if err := forwardEditCmd.RunE(cmd, []string{strconv.FormatInt(forwardID, 10)}); err != nil {
t.Fatalf("edit forward: %v", err)
}
forwards, err := appDB.GetForwards(server.ID)
if err != nil {
t.Fatalf("get forwards: %v", err)
}
if len(forwards) != 1 {
t.Fatalf("expected one forward, got %d", len(forwards))
}
if forwards[0].Enabled {
t.Fatal("expected forward to be disabled")
}
}