diff --git a/backend/internal/handler/widget/widget_handler.go b/backend/internal/handler/widget/widget_handler.go index cb89f52c..62932106 100644 --- a/backend/internal/handler/widget/widget_handler.go +++ b/backend/internal/handler/widget/widget_handler.go @@ -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) diff --git a/backend/internal/handler/widget/widget_handler_test.go b/backend/internal/handler/widget/widget_handler_test.go index 5eef7814..ca26631e 100644 --- a/backend/internal/handler/widget/widget_handler_test.go +++ b/backend/internal/handler/widget/widget_handler_test.go @@ -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{}{