Files
felhom-controller/controller/internal/stacks/initialcreds_test.go
T

74 lines
2.1 KiB
Go

package stacks
import "testing"
func TestParseInitialCredsJSON(t *testing.T) {
spec := &InitialCredentials{Format: "json", UsernameKey: "username", PasswordKey: "password"}
c, err := parseInitialCreds(spec, `{"username":"admin","password":"s3cr3t!","info":"ignore me"}`)
if err != nil {
t.Fatal(err)
}
if c.Username != "admin" || c.Password != "s3cr3t!" {
t.Fatalf("json parse wrong: %+v", c)
}
}
func TestParseInitialCredsJSONDefaultPasswordKey(t *testing.T) {
// password_key omitted → defaults to "password"; no username key → empty username.
spec := &InitialCredentials{Format: "json"}
c, err := parseInitialCreds(spec, `{"password":"pw123"}`)
if err != nil {
t.Fatal(err)
}
if c.Username != "" || c.Password != "pw123" {
t.Fatalf("default-key parse wrong: %+v", c)
}
}
func TestParseInitialCredsJSONInvalid(t *testing.T) {
spec := &InitialCredentials{Format: "json", PasswordKey: "password"}
if _, err := parseInitialCreds(spec, `not json`); err == nil {
t.Fatal("expected error on invalid JSON")
}
}
func TestParseInitialCredsRegex(t *testing.T) {
spec := &InitialCredentials{
Format: "regex",
UsernamePattern: `(?m)^user:\s*(\S+)`,
PasswordPattern: `(?m)^pass:\s*(\S+)`,
}
c, err := parseInitialCreds(spec, "user: root\npass: hunter2\n")
if err != nil {
t.Fatal(err)
}
if c.Username != "root" || c.Password != "hunter2" {
t.Fatalf("regex parse wrong: %+v", c)
}
}
func TestParseInitialCredsRegexNoPattern(t *testing.T) {
spec := &InitialCredentials{Format: "regex"}
if _, err := parseInitialCreds(spec, "anything"); err == nil {
t.Fatal("expected error when password_pattern missing")
}
}
func TestParseInitialCredsPlain(t *testing.T) {
spec := &InitialCredentials{Format: "plain"}
c, err := parseInitialCreds(spec, " topsecret\n")
if err != nil {
t.Fatal(err)
}
if c.Password != "topsecret" || c.Username != "" {
t.Fatalf("plain parse wrong: %+v", c)
}
}
func TestParseInitialCredsUnknownFormat(t *testing.T) {
spec := &InitialCredentials{Format: "toml"}
if _, err := parseInitialCreds(spec, "x = 1"); err == nil {
t.Fatal("expected error on unknown format")
}
}