package httpapi import ( "encoding/json" "testing" ) func TestUserIDJSONAcceptsIMUserID(t *testing.T) { var body struct { RecorderUserID userID `json:"recorder_user_id"` AttendeeUserIDs []userID `json:"attendee_user_ids"` } raw := []byte(`{"recorder_user_id":"usrag7w9xJ6hto","attendee_user_ids":["usr1RqTFgHSenM"]}`) if err := json.Unmarshal(raw, &body); err != nil { t.Fatalf("unmarshal: %v", err) } if body.RecorderUserID == 0 || len(body.AttendeeUserIDs) != 1 || body.AttendeeUserIDs[0] == 0 { t.Fatalf("decoded zero ids: %+v", body) } if got := formatUserID(int64(body.RecorderUserID)); got != "usrag7w9xJ6hto" { t.Fatalf("roundtrip recorder=%q", got) } } func TestUserIDCodecMatchesIMServer(t *testing.T) { const ( publicID = "usrOj2NWDNdlMU" dbID = int64(1574592702383656960) ) got, err := parseUserID(publicID) if err != nil { t.Fatalf("parseUserID: %v", err) } if got != dbID { t.Fatalf("parseUserID(%q)=%d, want %d", publicID, got, dbID) } if formatted := formatUserID(dbID); formatted != publicID { t.Fatalf("formatUserID(%d)=%q, want %q", dbID, formatted, publicID) } } func TestUserIDJSONRejectsNumericID(t *testing.T) { var id userID if err := json.Unmarshal([]byte(`1573862062872858624`), &id); err == nil { t.Fatal("expected numeric user id to be rejected") } }