53 lines
1.5 KiB
Go
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)
|
|
}
|
|
}
|