H-386: unify legacy widget message serialization (#69)
Co-authored-by: Rogee <rogee@ipao.vip>
This commit is contained in:
@@ -196,14 +196,6 @@ func (h *WidgetHandler) SendMessage(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
if c.FullPath() == "/widget/messages" {
|
||||
payload := widgetMessagePayload(resp.Message, resp.ConversationID)
|
||||
if len(resp.Attachments) > 0 {
|
||||
payload["attachments"] = widgetAttachmentPayloads(resp.Attachments)
|
||||
}
|
||||
c.JSON(http.StatusOK, resp)
|
||||
return
|
||||
}
|
||||
conversationID := resp.ConversationID
|
||||
if conversation, lookupErr := h.widgetService.GetConversation(c.Request.Context(), widgetToken, resp.ConversationID); lookupErr == nil {
|
||||
conversationID = widgetConversationID(*conversation)
|
||||
|
||||
@@ -1931,7 +1931,7 @@ func TestWidgetHandler_ChatwootLabelsReturnNotFoundWithoutConversationContext(t
|
||||
|
||||
// ========== SendMessage Handler Tests ==========
|
||||
|
||||
func TestWidgetHandler_SendMessage_Success(t *testing.T) {
|
||||
func TestWidgetHandler_LegacySendMessageUsesWidgetPayload(t *testing.T) {
|
||||
db, router, _ := setupWidgetHandlerTest(t)
|
||||
_, _ = seedWidgetHandlerData(t, db)
|
||||
|
||||
@@ -1967,9 +1967,23 @@ func TestWidgetHandler_SendMessage_Success(t *testing.T) {
|
||||
|
||||
assert.Equal(t, http.StatusOK, w.Code)
|
||||
|
||||
var conversation model.Conversation
|
||||
require.NoError(t, db.First(&conversation).Error)
|
||||
displayID := uint(42)
|
||||
require.NoError(t, db.Model(&conversation).Update("display_id", displayID).Error)
|
||||
|
||||
w = httptest.NewRecorder()
|
||||
req, _ = http.NewRequest("POST", "/widget/messages", bytes.NewReader(msgJSON))
|
||||
req.Header.Set("Content-Type", "application/json")
|
||||
req.Header.Set("X-Widget-Token", widgetToken)
|
||||
router.ServeHTTP(w, req)
|
||||
require.Equal(t, http.StatusOK, w.Code)
|
||||
|
||||
var msgResp map[string]interface{}
|
||||
require.NoError(t, json.Unmarshal(w.Body.Bytes(), &msgResp))
|
||||
assert.NotEmpty(t, msgResp["message"])
|
||||
assert.Nil(t, msgResp["message"])
|
||||
assert.Equal(t, float64(0), msgResp["message_type"])
|
||||
assert.Equal(t, float64(displayID), msgResp["conversation_id"])
|
||||
}
|
||||
|
||||
func TestWidgetHandler_SendMessage_NoWidgetToken(t *testing.T) {
|
||||
@@ -2098,8 +2112,7 @@ func TestWidgetHandler_GetMessages_Success(t *testing.T) {
|
||||
|
||||
var msgResp map[string]interface{}
|
||||
require.NoError(t, json.Unmarshal(wMsg.Body.Bytes(), &msgResp))
|
||||
msgData := msgResp["message"].(map[string]interface{})
|
||||
conversationID := uint(msgData["conversation_id"].(float64))
|
||||
conversationID := uint(msgResp["conversation_id"].(float64))
|
||||
|
||||
// Get messages for that conversation
|
||||
url := "/widget/conversations/" + strconv.FormatUint(uint64(conversationID), 10) + "/messages"
|
||||
@@ -2256,8 +2269,7 @@ func TestWidgetHandler_ToggleTyping_Success(t *testing.T) {
|
||||
|
||||
var msgResp map[string]interface{}
|
||||
require.NoError(t, json.Unmarshal(wMsg.Body.Bytes(), &msgResp))
|
||||
msgData := msgResp["message"].(map[string]interface{})
|
||||
conversationID := uint(msgData["conversation_id"].(float64))
|
||||
conversationID := uint(msgResp["conversation_id"].(float64))
|
||||
|
||||
// Toggle typing
|
||||
typingBody := map[string]interface{}{
|
||||
|
||||
Reference in New Issue
Block a user