Align GoChat with Chatwoot frontend contracts

This commit is contained in:
2026-06-13 22:13:32 +08:00
parent 71abf58636
commit d884fdda0a
162 changed files with 9825 additions and 528 deletions
+28 -1
View File
@@ -40,10 +40,12 @@ func setupChatwootAuthTest(t *testing.T) (*gin.Engine, *gorm.DB, *model.User) {
AccountID: account.ID,
Name: "Auth User",
Email: "auth@example.com",
UID: "auth@example.com",
PasswordDigest: passwordDigest,
Provider: "email",
DisplayName: "Auth Display",
MessageSignature: "Cheers",
PubsubToken: "pubsub-auth-user",
ConfirmedAt: &confirmedAt,
Active: true,
}
@@ -82,14 +84,39 @@ func TestChatwootAuthSignInReturnsDeviseHeadersAndUserPayload(t *testing.T) {
var payload map[string]any
require.NoError(t, json.Unmarshal(w.Body.Bytes(), &payload))
data := payload["data"].(map[string]any)
assertChatwootAuthUserFixture(t, data)
}
func assertChatwootAuthUserFixture(t *testing.T, data map[string]any) {
t.Helper()
require.Equal(t, "Auth User", data["name"])
require.Equal(t, "auth@example.com", data["email"])
require.Equal(t, "auth@example.com", data["uid"])
require.Equal(t, "Auth Display", data["available_name"])
require.Equal(t, "Auth Display", data["display_name"])
require.Equal(t, "", data["avatar_url"])
require.Equal(t, "User", data["type"])
require.Equal(t, "email", data["provider"])
require.Equal(t, "pubsub-auth-user", data["pubsub_token"])
require.Equal(t, "Cheers", data["message_signature"])
require.Equal(t, "auth-profile-token", data["access_token"])
require.Equal(t, "administrator", data["role"])
require.Equal(t, map[string]any{}, data["custom_attributes"])
require.Equal(t, map[string]any{}, data["ui_settings"])
require.Equal(t, true, data["confirmed"])
require.NotNil(t, data["account_id"])
accounts := data["accounts"].([]any)
require.Len(t, accounts, 1)
account := accounts[0].(map[string]any)
require.Equal(t, "Auth Account", account["name"])
require.Equal(t, "active", account["status"])
require.Equal(t, "invite_team", account["onboarding_step"])
require.Equal(t, "administrator", account["role"])
require.Equal(t, "online", account["availability"])
require.Equal(t, "online", account["availability_status"])
require.Equal(t, true, account["auto_offline"])
require.Equal(t, []any{"administrator"}, account["permissions"])
}
func TestChatwootAuthValidateTokenReturnsPayloadData(t *testing.T) {
@@ -107,7 +134,7 @@ func TestChatwootAuthValidateTokenReturnsPayloadData(t *testing.T) {
payload := body["payload"].(map[string]any)
require.Equal(t, true, payload["success"])
data := payload["data"].(map[string]any)
require.Equal(t, "auth@example.com", data["email"])
assertChatwootAuthUserFixture(t, data)
}
func TestChatwootAuthSignOutRevokesRefreshSession(t *testing.T) {