package mailfetch import ( "context" "errors" "log/slog" "testing" "gitea.lab.audasmedia.com.au/sam/email_agent/internal/config" ) func TestGmailIDPrefersXGMMsgID(t *testing.T) { if got := gmailID(FetchResult{UID: 7, GmailMsgID: "555"}, 42); got != "555" { t.Errorf("gmailID() = %q, want 555", got) } } func TestGmailIDFallbackIsScopedToUIDValidity(t *testing.T) { if got := gmailID(FetchResult{UID: 7}, 42); got != "uid:42:7" { t.Errorf("gmailID() = %q, want uid:42:7", got) } } func TestJoinKeys(t *testing.T) { if got := joinKeys(map[string]struct{}{}); got != "none" { t.Errorf("joinKeys(empty) = %q, want none", got) } got := joinKeys(map[string]struct{}{"To": {}, "X-Pm-Original-To": {}}) if got != "To,X-Pm-Original-To" { t.Errorf("joinKeys() = %q, want sorted keys", got) } } func TestFetchWithoutCredentials(t *testing.T) { cfg := &config.Config{Env: "test", IMAPHost: config.DefaultIMAPHost, IMAPPort: config.DefaultIMAPPort} f := NewFetcher(cfg, nil, slog.New(slog.DiscardHandler)) if _, err := f.Fetch(context.Background()); !errors.Is(err, ErrNoCredentials) { t.Fatalf("Fetch() error = %v, want ErrNoCredentials", err) } }