39 lines
1.1 KiB
Go
39 lines
1.1 KiB
Go
package cli
|
|
|
|
import (
|
|
"bytes"
|
|
"context"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestInteractiveSetupPrompterPromptSetupCollectsCredential(t *testing.T) {
|
|
input := strings.NewReader(" imap.example.com \n alice \n secret \n")
|
|
output := &bytes.Buffer{}
|
|
prompter := NewInteractiveSetupPrompter(input, output)
|
|
|
|
cred, err := prompter.PromptSetup(context.Background())
|
|
if err != nil {
|
|
t.Fatalf("PromptSetup returned error: %v", err)
|
|
}
|
|
|
|
if cred.Host != "imap.example.com" || cred.Username != "alice" || cred.Password != "secret" {
|
|
t.Fatalf("unexpected credential: %#v", cred)
|
|
}
|
|
if got := output.String(); got != "IMAP host: Username: Password: " {
|
|
t.Fatalf("unexpected prompts: %q", got)
|
|
}
|
|
}
|
|
|
|
func TestInteractiveSetupPrompterPromptSetupRejectsMissingFields(t *testing.T) {
|
|
input := strings.NewReader("imap.example.com\nalice\n \n")
|
|
prompter := NewInteractiveSetupPrompter(input, &bytes.Buffer{})
|
|
|
|
_, err := prompter.PromptSetup(context.Background())
|
|
if err == nil {
|
|
t.Fatal("expected validation error")
|
|
}
|
|
if !strings.Contains(err.Error(), "password is required") {
|
|
t.Fatalf("expected password validation error, got %v", err)
|
|
}
|
|
}
|