74 lines
2.1 KiB
Go
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")
|
|
}
|
|
}
|