package jmap_test import ( "encoding/json" "testing" "mailgoserver/internal/jmap" ) func TestJMAPIdentityGetReflectsSendAsAliases(t *testing.T) { srv, database, _, email, password, mailboxID := newTestJMAPServer(t) mbox, err := database.GetMailboxByID(mailboxID) if err != nil || mbox == nil { t.Fatal(err) } if _, err := database.CreateAlias(mailboxID, "sales@example.com", mbox.DomainID, true); err != nil { t.Fatal(err) } resp := doJMAP(t, srv, email, password, jmap.Request{ MethodCalls: []jmap.Invocation{{Name: "Identity/get", Args: json.RawMessage(`{}`), ID: "c1"}}, }) var result struct { List []struct { ID string `json:"id"` Email string `json:"email"` } `json:"list"` } if err := json.Unmarshal(resp.MethodResponses[0].Args, &result); err != nil { t.Fatal(err) } emails := map[string]bool{} for _, id := range result.List { emails[id.Email] = true } if !emails[email] { t.Errorf("expected the mailbox's own address %q among identities, got %+v", email, result.List) } if !emails["sales@example.com"] { t.Errorf("expected the send-as alias among identities, got %+v", result.List) } } func TestJMAPIdentitySetUpdatesSignature(t *testing.T) { srv, _, _, email, password, _ := newTestJMAPServer(t) getResp := doJMAP(t, srv, email, password, jmap.Request{ MethodCalls: []jmap.Invocation{{Name: "Identity/get", Args: json.RawMessage(`{}`), ID: "c1"}}, }) var getResult struct { List []struct{ ID string } `json:"list"` } if err := json.Unmarshal(getResp.MethodResponses[0].Args, &getResult); err != nil { t.Fatal(err) } if len(getResult.List) == 0 { t.Fatal("expected at least the primary identity") } primaryID := getResult.List[0].ID setResp := doJMAP(t, srv, email, password, jmap.Request{ MethodCalls: []jmap.Invocation{{ Name: "Identity/set", Args: json.RawMessage(`{"update":{"` + primaryID + `":{"htmlSignature":"
Best,
Alice
Best,
Alice