Files
forge-tools-lexicomai/internal/lexicomai/config_test.go
T
2026-10-01 09:50:59 +07:00

53 lines
1.5 KiB
Go

package lexicomai
import "testing"
func TestParseConfig(t *testing.T) {
valid := []byte(`{
"targets":[{"alias":"a","ssh":{"host":"10.0.0.1","user":"debian","key":"k"},"products":["ups"],"port":6182}],
"read_only":true
}`)
cfg, err := ParseConfig(valid)
if err != nil {
t.Fatalf("ParseConfig(valid) error: %v", err)
}
if cfg.Default != "a" {
t.Errorf("default = %q, want a", cfg.Default)
}
if cfg.TimeoutSeconds != DefaultTimeoutSeconds {
t.Errorf("timeout default = %d, want %d", cfg.TimeoutSeconds, DefaultTimeoutSeconds)
}
if cfg.IsReadOnly() != true {
t.Error("IsReadOnly = false, want true")
}
if _, err := cfg.Target("missing"); err == nil {
t.Error("Target(missing) should error")
}
}
func TestParseConfigRejectsEmptyTargets(t *testing.T) {
if _, err := ParseConfig([]byte(`{"targets":[]}`)); err == nil {
t.Fatal("empty targets should be rejected (fail-closed)")
}
}
func TestParseConfigRejectsMissingHost(t *testing.T) {
bad := []byte(`{"targets":[{"alias":"a","ssh":{"user":"debian"}}]}`)
if _, err := ParseConfig(bad); err == nil {
t.Fatal("missing ssh.host should be rejected")
}
}
func TestTargetHasProductAndAddr(t *testing.T) {
tg := &Target{Alias: "a", SSH: SSHTarget{Host: "10.0.0.1", User: "debian", Port: 22}, Products: []string{"ups", "spr"}}
if !tg.HasProduct("ups") {
t.Error("HasProduct(ups) = false")
}
if tg.HasProduct("ses") {
t.Error("HasProduct(ses) = true, want false")
}
if got := tg.SSHAddr(); got != "debian@10.0.0.1" {
t.Errorf("SSHAddr = %q", got)
}
}