H-412: cover legacy widget attachment parity (#73)
Co-authored-by: Rogee <rogee@ipao.vip>
This commit is contained in:
@@ -1933,7 +1933,7 @@ func TestWidgetHandler_ChatwootLabelsReturnNotFoundWithoutConversationContext(t
|
||||
|
||||
func TestWidgetHandler_LegacySendMessageUsesWidgetPayload(t *testing.T) {
|
||||
db, router, _ := setupWidgetHandlerTest(t)
|
||||
_, _ = seedWidgetHandlerData(t, db)
|
||||
account, _ := seedWidgetHandlerData(t, db)
|
||||
|
||||
// First init to get a widget_token
|
||||
initBody := map[string]interface{}{
|
||||
@@ -1971,19 +1971,46 @@ func TestWidgetHandler_LegacySendMessageUsesWidgetPayload(t *testing.T) {
|
||||
require.NoError(t, db.First(&conversation).Error)
|
||||
displayID := uint(42)
|
||||
require.NoError(t, db.Model(&conversation).Update("display_id", displayID).Error)
|
||||
upload := &model.DirectUpload{
|
||||
UploadUUID: "signed-legacy-widget-upload",
|
||||
AccountID: account.ID,
|
||||
Status: model.DirectUploadStatusPending,
|
||||
Source: model.DirectUploadSourceWidget,
|
||||
OriginalName: "legacy.png",
|
||||
FileType: "image",
|
||||
MimeType: "image/png",
|
||||
FileSize: 12,
|
||||
FileURL: "/uploads/widget_direct/signed-legacy-widget-upload.png",
|
||||
ThumbURL: "/uploads/widget_direct/signed-legacy-widget-upload.png",
|
||||
ExpiresAt: time.Now().Add(time.Hour),
|
||||
}
|
||||
require.NoError(t, db.Create(upload).Error)
|
||||
body := &bytes.Buffer{}
|
||||
writer := multipart.NewWriter(body)
|
||||
require.NoError(t, writer.WriteField("content", "Hello from handler test!"))
|
||||
require.NoError(t, writer.WriteField("message[attachments][]", upload.UploadUUID))
|
||||
require.NoError(t, writer.Close())
|
||||
|
||||
w = httptest.NewRecorder()
|
||||
req, _ = http.NewRequest("POST", "/widget/messages", bytes.NewReader(msgJSON))
|
||||
req.Header.Set("Content-Type", "application/json")
|
||||
req, _ = http.NewRequest("POST", "/widget/messages", body)
|
||||
req.Header.Set("Content-Type", writer.FormDataContentType())
|
||||
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))
|
||||
assertWidgetMessageFixtureShape(t, msgResp)
|
||||
assert.Nil(t, msgResp["message"])
|
||||
assert.Equal(t, float64(0), msgResp["message_type"])
|
||||
assert.Equal(t, float64(displayID), msgResp["conversation_id"])
|
||||
attachments := msgResp["attachments"].([]interface{})
|
||||
require.Len(t, attachments, 1)
|
||||
attachment := attachments[0].(map[string]interface{})
|
||||
assertWidgetAttachmentFixtureShape(t, attachment)
|
||||
assert.Equal(t, upload.FileURL, attachment["data_url"])
|
||||
assert.Equal(t, "image", attachment["file_type"])
|
||||
assert.Equal(t, float64(account.ID), attachment["account_id"])
|
||||
}
|
||||
|
||||
func TestWidgetHandler_SendMessage_NoWidgetToken(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user