Skip to content

Commit 3070b7d

Browse files
committed
Fix conflicts
1 parent 3619e29 commit 3070b7d

File tree

2 files changed

+80
-42
lines changed

2 files changed

+80
-42
lines changed

handlers/facebookapp/facebookapp.go

+34-21
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,15 @@ var waIgnoreStatuses = map[string]bool{
7070
"deleted": true,
7171
}
7272

73+
// see https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types
74+
var wacMediaSupport = map[handlers.MediaType]handlers.MediaTypeSupport{
75+
handlers.MediaType("image/webp"): {Types: []string{"image/webp"}, MaxBytes: 100 * 1024, MaxWidth: 512, MaxHeight: 512},
76+
handlers.MediaTypeImage: {Types: []string{"image/jpeg", "image/png"}, MaxBytes: 5 * 1024 * 1024},
77+
handlers.MediaTypeAudio: {Types: []string{"audio/aac", "audio/mp4", "audio/mpeg", "audio/amr", "audio/ogg"}, MaxBytes: 16 * 1024 * 1024},
78+
handlers.MediaTypeVideo: {Types: []string{"video/mp4", "video/3gp"}, MaxBytes: 16 * 1024 * 1024},
79+
handlers.MediaTypeApplication: {MaxBytes: 100 * 1024 * 1024},
80+
}
81+
7382
func newHandler(channelType courier.ChannelType, name string, useUUIDRoutes bool) courier.ChannelHandler {
7483
return &handler{handlers.NewBaseHandlerWithParams(channelType, name, useUUIDRoutes, []string{courier.ConfigAuthToken})}
7584
}
@@ -1129,12 +1138,17 @@ func (h *handler) sendCloudAPIWhatsappMsg(ctx context.Context, msg courier.Msg,
11291138
qrs := msg.QuickReplies()
11301139
lang := getSupportedLanguage(msg.Locale())
11311140

1141+
attachments, err := handlers.ResolveAttachments(ctx, h.Backend(), msg.Attachments(), wacMediaSupport, false)
1142+
if err != nil {
1143+
return nil, errors.Wrap(err, "error resolving attachments")
1144+
}
1145+
11321146
var payloadAudio wacMTPayload
11331147

1134-
for i := 0; i < len(msgParts)+len(msg.Attachments()); i++ {
1148+
for i := 0; i < len(msgParts)+len(attachments); i++ {
11351149
payload := wacMTPayload{MessagingProduct: "whatsapp", RecipientType: "individual", To: msg.URN().Path()}
11361150

1137-
if len(msg.Attachments()) == 0 {
1151+
if len(attachments) == 0 {
11381152
// do we have a template?
11391153
templating, err := h.getTemplating(msg)
11401154
if err != nil {
@@ -1155,14 +1169,14 @@ func (h *handler) sendCloudAPIWhatsappMsg(ctx context.Context, msg courier.Msg,
11551169
template.Components = append(payload.Template.Components, component)
11561170

11571171
} else {
1158-
if i < (len(msgParts) + len(msg.Attachments()) - 1) {
1172+
if i < (len(msgParts) + len(attachments) - 1) {
11591173
// this is still a msg part
11601174
text := &wacText{PreviewURL: false}
11611175
payload.Type = "text"
1162-
if strings.Contains(msgParts[i-len(msg.Attachments())], "https://") || strings.Contains(msgParts[i-len(msg.Attachments())], "http://") {
1176+
if strings.Contains(msgParts[i-len(attachments)], "https://") || strings.Contains(msgParts[i-len(attachments)], "http://") {
11631177
text.PreviewURL = true
11641178
}
1165-
text.Body = msgParts[i-len(msg.Attachments())]
1179+
text.Body = msgParts[i-len(attachments)]
11661180
payload.Text = text
11671181
} else {
11681182
if len(qrs) > 0 {
@@ -1171,7 +1185,7 @@ func (h *handler) sendCloudAPIWhatsappMsg(ctx context.Context, msg courier.Msg,
11711185
if len(qrs) <= 3 {
11721186
interactive := wacInteractive{Type: "button", Body: struct {
11731187
Text string "json:\"text\""
1174-
}{Text: msgParts[i-len(msg.Attachments())]}}
1188+
}{Text: msgParts[i-len(attachments)]}}
11751189

11761190
btns := make([]wacMTButton, len(qrs))
11771191
for i, qr := range qrs {
@@ -1190,7 +1204,7 @@ func (h *handler) sendCloudAPIWhatsappMsg(ctx context.Context, msg courier.Msg,
11901204
} else if len(qrs) <= 10 {
11911205
interactive := wacInteractive{Type: "list", Body: struct {
11921206
Text string "json:\"text\""
1193-
}{Text: msgParts[i-len(msg.Attachments())]}}
1207+
}{Text: msgParts[i-len(attachments)]}}
11941208

11951209
section := wacMTSection{
11961210
Rows: make([]wacMTSectionRow, len(qrs)),
@@ -1218,34 +1232,33 @@ func (h *handler) sendCloudAPIWhatsappMsg(ctx context.Context, msg courier.Msg,
12181232
// this is still a msg part
12191233
text := &wacText{PreviewURL: false}
12201234
payload.Type = "text"
1221-
if strings.Contains(msgParts[i-len(msg.Attachments())], "https://") || strings.Contains(msgParts[i-len(msg.Attachments())], "http://") {
1235+
if strings.Contains(msgParts[i-len(attachments)], "https://") || strings.Contains(msgParts[i-len(attachments)], "http://") {
12221236
text.PreviewURL = true
12231237
}
1224-
text.Body = msgParts[i-len(msg.Attachments())]
1238+
text.Body = msgParts[i-len(attachments)]
12251239
payload.Text = text
12261240
}
12271241
}
12281242
}
12291243

1230-
} else if i < len(msg.Attachments()) && (len(qrs) == 0 || len(qrs) > 3) {
1231-
attType, attURL := handlers.SplitAttachment(msg.Attachments()[i])
1232-
splitedAttType := strings.Split(attType, "/")
1233-
attType = splitedAttType[0]
1234-
attFormat := splitedAttType[1]
1244+
} else if i < len(attachments) && (len(qrs) == 0 || len(qrs) > 3) {
1245+
attURL := attachments[i].Media.URL()
1246+
attType := string(attachments[i].Type)
1247+
attContentType := attachments[i].Media.ContentType()
12351248

12361249
if attType == "application" {
12371250
attType = "document"
12381251
}
12391252
payload.Type = attType
12401253
media := wacMTMedia{Link: attURL}
12411254

1242-
if len(msgParts) == 1 && attType != "audio" && len(msg.Attachments()) == 1 && len(msg.QuickReplies()) == 0 {
1255+
if len(msgParts) == 1 && attType != "audio" && len(attachments) == 1 && len(msg.QuickReplies()) == 0 {
12431256
media.Caption = msgParts[i]
12441257
hasCaption = true
12451258
}
12461259

12471260
if attType == "image" {
1248-
if attFormat == "webp" {
1261+
if attContentType == "image/webp" {
12491262
payload.Type = "sticker"
12501263
payload.Sticker = &media
12511264
} else {
@@ -1276,8 +1289,8 @@ func (h *handler) sendCloudAPIWhatsappMsg(ctx context.Context, msg courier.Msg,
12761289

12771290
if len(msg.Attachments()) > 0 {
12781291
hasCaption = true
1279-
attType, attURL := handlers.SplitAttachment(msg.Attachments()[i])
1280-
attType = strings.Split(attType, "/")[0]
1292+
attURL := attachments[i].Media.URL()
1293+
attType := string(attachments[i].Type)
12811294
if attType == "application" {
12821295
attType = "document"
12831296
}
@@ -1353,7 +1366,7 @@ func (h *handler) sendCloudAPIWhatsappMsg(ctx context.Context, msg courier.Msg,
13531366
} else if len(qrs) <= 10 {
13541367
interactive := wacInteractive{Type: "list", Body: struct {
13551368
Text string "json:\"text\""
1356-
}{Text: msgParts[i-len(msg.Attachments())]}}
1369+
}{Text: msgParts[i-len(attachments)]}}
13571370

13581371
section := wacMTSection{
13591372
Rows: make([]wacMTSectionRow, len(qrs)),
@@ -1381,10 +1394,10 @@ func (h *handler) sendCloudAPIWhatsappMsg(ctx context.Context, msg courier.Msg,
13811394
// this is still a msg part
13821395
text := &wacText{PreviewURL: false}
13831396
payload.Type = "text"
1384-
if strings.Contains(msgParts[i-len(msg.Attachments())], "https://") || strings.Contains(msgParts[i-len(msg.Attachments())], "http://") {
1397+
if strings.Contains(msgParts[i-len(attachments)], "https://") || strings.Contains(msgParts[i-len(attachments)], "http://") {
13851398
text.PreviewURL = true
13861399
}
1387-
text.Body = msgParts[i-len(msg.Attachments())]
1400+
text.Body = msgParts[i-len(attachments)]
13881401
payload.Text = text
13891402
}
13901403
}

handlers/facebookapp/facebookapp_test.go

+46-21
Original file line numberDiff line numberDiff line change
@@ -1305,12 +1305,12 @@ var SendTestCasesWAC = []OutgoingTestCase{
13051305
Label: "Audio Send",
13061306
MsgText: "audio caption",
13071307
MsgURN: "whatsapp:250788123123",
1308-
MsgAttachments: []string{"audio/mpeg:https://foo.bar/audio.mp3"},
1308+
MsgAttachments: []string{"audio/mpeg:http://mock.com/3456/test.mp3"},
13091309
MockResponses: map[MockedRequest]*httpx.MockResponse{
13101310
{
13111311
Method: "POST",
13121312
Path: "/12345_ID/messages",
1313-
Body: `{"messaging_product":"whatsapp","recipient_type":"individual","to":"250788123123","type":"audio","audio":{"link":"https://foo.bar/audio.mp3"}}`,
1313+
Body: `{"messaging_product":"whatsapp","recipient_type":"individual","to":"250788123123","type":"audio","audio":{"link":"http://mock.com/3456/test.mp3"}}`,
13141314
}: httpx.NewMockResponse(201, nil, []byte(`{ "messages": [{"id": "157b5e14568e8"}] }`)),
13151315
{
13161316
Method: "POST",
@@ -1326,10 +1326,10 @@ var SendTestCasesWAC = []OutgoingTestCase{
13261326
Label: "Document Send",
13271327
MsgText: "document caption",
13281328
MsgURN: "whatsapp:250788123123",
1329-
MsgAttachments: []string{"application/pdf:https://foo.bar/document.pdf"},
1329+
MsgAttachments: []string{"application/pdf:http://mock.com/7890/test.pdf"},
13301330
MockResponseBody: `{ "messages": [{"id": "157b5e14568e8"}] }`,
13311331
MockResponseStatus: 201,
1332-
ExpectedRequestBody: `{"messaging_product":"whatsapp","recipient_type":"individual","to":"250788123123","type":"document","document":{"link":"https://foo.bar/document.pdf","caption":"document caption","filename":"document.pdf"}}`,
1332+
ExpectedRequestBody: `{"messaging_product":"whatsapp","recipient_type":"individual","to":"250788123123","type":"document","document":{"link":"http://mock.com/7890/test.pdf","caption":"document caption","filename":"test.pdf"}}`,
13331333
ExpectedRequestPath: "/12345_ID/messages",
13341334
ExpectedMsgStatus: "W",
13351335
ExpectedExternalID: "157b5e14568e8",
@@ -1339,10 +1339,10 @@ var SendTestCasesWAC = []OutgoingTestCase{
13391339
Label: "Image Send",
13401340
MsgText: "image caption",
13411341
MsgURN: "whatsapp:250788123123",
1342-
MsgAttachments: []string{"image/jpeg:https://foo.bar/image.jpg"},
1342+
MsgAttachments: []string{"image/jpeg:http://mock.com/1234/test.jpg"},
13431343
MockResponseBody: `{ "messages": [{"id": "157b5e14568e8"}] }`,
13441344
MockResponseStatus: 201,
1345-
ExpectedRequestBody: `{"messaging_product":"whatsapp","recipient_type":"individual","to":"250788123123","type":"image","image":{"link":"https://foo.bar/image.jpg","caption":"image caption"}}`,
1345+
ExpectedRequestBody: `{"messaging_product":"whatsapp","recipient_type":"individual","to":"250788123123","type":"image","image":{"link":"http://mock.com/1234/test.jpg","caption":"image caption"}}`,
13461346
ExpectedRequestPath: "/12345_ID/messages",
13471347
ExpectedMsgStatus: "W",
13481348
ExpectedExternalID: "157b5e14568e8",
@@ -1352,10 +1352,10 @@ var SendTestCasesWAC = []OutgoingTestCase{
13521352
Label: "Sticker Send",
13531353
MsgText: "sticker caption",
13541354
MsgURN: "whatsapp:250788123123",
1355-
MsgAttachments: []string{"image/webp:https://foo.bar/sticker.webp"},
1355+
MsgAttachments: []string{"image/webp:http://mock.com/8901/test.webp"},
13561356
MockResponseBody: `{ "messages": [{"id": "157b5e14568e8"}] }`,
13571357
MockResponseStatus: 201,
1358-
ExpectedRequestBody: `{"messaging_product":"whatsapp","recipient_type":"individual","to":"250788123123","type":"sticker","sticker":{"link":"https://foo.bar/sticker.webp","caption":"sticker caption"}}`,
1358+
ExpectedRequestBody: `{"messaging_product":"whatsapp","recipient_type":"individual","to":"250788123123","type":"sticker","sticker":{"link":"http://mock.com/8901/test.webp","caption":"sticker caption"}}`,
13591359
ExpectedRequestPath: "/12345_ID/messages",
13601360
ExpectedMsgStatus: "W",
13611361
ExpectedExternalID: "157b5e14568e8",
@@ -1365,10 +1365,10 @@ var SendTestCasesWAC = []OutgoingTestCase{
13651365
Label: "Video Send",
13661366
MsgText: "video caption",
13671367
MsgURN: "whatsapp:250788123123",
1368-
MsgAttachments: []string{"video/mp4:https://foo.bar/video.mp4"},
1368+
MsgAttachments: []string{"video/mp4:http://mock.com/5678/test.mp4"},
13691369
MockResponseBody: `{ "messages": [{"id": "157b5e14568e8"}] }`,
13701370
MockResponseStatus: 201,
1371-
ExpectedRequestBody: `{"messaging_product":"whatsapp","recipient_type":"individual","to":"250788123123","type":"video","video":{"link":"https://foo.bar/video.mp4","caption":"video caption"}}`,
1371+
ExpectedRequestBody: `{"messaging_product":"whatsapp","recipient_type":"individual","to":"250788123123","type":"video","video":{"link":"http://mock.com/5678/test.mp4","caption":"video caption"}}`,
13721372
ExpectedRequestPath: "/12345_ID/messages",
13731373
ExpectedMsgStatus: "W",
13741374
ExpectedExternalID: "157b5e14568e8",
@@ -1455,10 +1455,10 @@ var SendTestCasesWAC = []OutgoingTestCase{
14551455
MsgText: "Interactive Button Msg",
14561456
MsgURN: "whatsapp:250788123123",
14571457
MsgQuickReplies: []string{"BUTTON1"},
1458-
MsgAttachments: []string{"image/jpeg:https://foo.bar/image.jpg"},
1458+
MsgAttachments: []string{"image/jpeg:http://mock.com/1234/test.jpg"},
14591459
MockResponseBody: `{ "messages": [{"id": "157b5e14568e8"}] }`,
14601460
MockResponseStatus: 201,
1461-
ExpectedRequestBody: `{"messaging_product":"whatsapp","recipient_type":"individual","to":"250788123123","type":"interactive","interactive":{"type":"button","header":{"type":"image","image":{"link":"https://foo.bar/image.jpg"}},"body":{"text":"Interactive Button Msg"},"action":{"buttons":[{"type":"reply","reply":{"id":"0","title":"BUTTON1"}}]}}}`,
1461+
ExpectedRequestBody: `{"messaging_product":"whatsapp","recipient_type":"individual","to":"250788123123","type":"interactive","interactive":{"type":"button","header":{"type":"image","image":{"link":"http://mock.com/1234/test.jpg"}},"body":{"text":"Interactive Button Msg"},"action":{"buttons":[{"type":"reply","reply":{"id":"0","title":"BUTTON1"}}]}}}`,
14621462
ExpectedRequestPath: "/12345_ID/messages",
14631463
ExpectedMsgStatus: "W",
14641464
ExpectedExternalID: "157b5e14568e8",
@@ -1469,10 +1469,10 @@ var SendTestCasesWAC = []OutgoingTestCase{
14691469
MsgText: "Interactive Button Msg",
14701470
MsgURN: "whatsapp:250788123123",
14711471
MsgQuickReplies: []string{"BUTTON1"},
1472-
MsgAttachments: []string{"video/mp4:https://foo.bar/video.mp4"},
1472+
MsgAttachments: []string{"video/mp4:http://mock.com/5678/test.mp4"},
14731473
MockResponseBody: `{ "messages": [{"id": "157b5e14568e8"}] }`,
14741474
MockResponseStatus: 201,
1475-
ExpectedRequestBody: `{"messaging_product":"whatsapp","recipient_type":"individual","to":"250788123123","type":"interactive","interactive":{"type":"button","header":{"type":"video","video":{"link":"https://foo.bar/video.mp4"}},"body":{"text":"Interactive Button Msg"},"action":{"buttons":[{"type":"reply","reply":{"id":"0","title":"BUTTON1"}}]}}}`,
1475+
ExpectedRequestBody: `{"messaging_product":"whatsapp","recipient_type":"individual","to":"250788123123","type":"interactive","interactive":{"type":"button","header":{"type":"video","video":{"link":"http://mock.com/5678/test.mp4"}},"body":{"text":"Interactive Button Msg"},"action":{"buttons":[{"type":"reply","reply":{"id":"0","title":"BUTTON1"}}]}}}`,
14761476
ExpectedRequestPath: "/12345_ID/messages",
14771477
ExpectedMsgStatus: "W",
14781478
ExpectedExternalID: "157b5e14568e8",
@@ -1483,10 +1483,10 @@ var SendTestCasesWAC = []OutgoingTestCase{
14831483
MsgText: "Interactive Button Msg",
14841484
MsgURN: "whatsapp:250788123123",
14851485
MsgQuickReplies: []string{"BUTTON1"},
1486-
MsgAttachments: []string{"document/pdf:https://foo.bar/document.pdf"},
1486+
MsgAttachments: []string{"document/pdf:http://mock.com/7890/test.pdf"},
14871487
MockResponseBody: `{ "messages": [{"id": "157b5e14568e8"}] }`,
14881488
MockResponseStatus: 201,
1489-
ExpectedRequestBody: `{"messaging_product":"whatsapp","recipient_type":"individual","to":"250788123123","type":"interactive","interactive":{"type":"button","header":{"type":"document","document":{"link":"https://foo.bar/document.pdf","filename":"document.pdf"}},"body":{"text":"Interactive Button Msg"},"action":{"buttons":[{"type":"reply","reply":{"id":"0","title":"BUTTON1"}}]}}}`,
1489+
ExpectedRequestBody: `{"messaging_product":"whatsapp","recipient_type":"individual","to":"250788123123","type":"interactive","interactive":{"type":"button","header":{"type":"document","document":{"link":"http://mock.com/7890/test.pdf","filename":"test.pdf"}},"body":{"text":"Interactive Button Msg"},"action":{"buttons":[{"type":"reply","reply":{"id":"0","title":"BUTTON1"}}]}}}`,
14901490
ExpectedRequestPath: "/12345_ID/messages",
14911491
ExpectedMsgStatus: "W",
14921492
ExpectedExternalID: "157b5e14568e8",
@@ -1497,12 +1497,12 @@ var SendTestCasesWAC = []OutgoingTestCase{
14971497
MsgText: "Interactive Button Msg",
14981498
MsgURN: "whatsapp:250788123123",
14991499
MsgQuickReplies: []string{"ROW1", "ROW2", "ROW3"},
1500-
MsgAttachments: []string{"audio/mp3:https://foo.bar/audio.mp3"},
1500+
MsgAttachments: []string{"audio/mp3:http://mock.com/3456/test.mp3"},
15011501
MockResponses: map[MockedRequest]*httpx.MockResponse{
15021502
{
15031503
Method: "POST",
15041504
Path: "/12345_ID/messages",
1505-
Body: `{"messaging_product":"whatsapp","recipient_type":"individual","to":"250788123123","type":"audio","audio":{"link":"https://foo.bar/audio.mp3"}}`,
1505+
Body: `{"messaging_product":"whatsapp","recipient_type":"individual","to":"250788123123","type":"audio","audio":{"link":"http://mock.com/3456/test.mp3"}}`,
15061506
}: httpx.NewMockResponse(201, nil, []byte(`{ "messages": [{"id": "157b5e14568e8"}] }`)),
15071507
{
15081508
Method: "POST",
@@ -1519,12 +1519,12 @@ var SendTestCasesWAC = []OutgoingTestCase{
15191519
MsgText: "Interactive List Msg",
15201520
MsgURN: "whatsapp:250788123123",
15211521
MsgQuickReplies: []string{"ROW1", "ROW2", "ROW3", "ROW4"},
1522-
MsgAttachments: []string{"image/jpeg:https://foo.bar/image.jpg"},
1522+
MsgAttachments: []string{"image/jpeg:http://mock.com/1234/test.jpg"},
15231523
MockResponses: map[MockedRequest]*httpx.MockResponse{
15241524
{
15251525
Method: "POST",
15261526
Path: "/12345_ID/messages",
1527-
Body: `{"messaging_product":"whatsapp","recipient_type":"individual","to":"250788123123","type":"image","image":{"link":"https://foo.bar/image.jpg"}}`,
1527+
Body: `{"messaging_product":"whatsapp","recipient_type":"individual","to":"250788123123","type":"image","image":{"link":"http://mock.com/1234/test.jpg"}}`,
15281528
}: httpx.NewMockResponse(201, nil, []byte(`{ "messages": [{"id": "157b5e14568e8"}] }`)),
15291529
{
15301530
Method: "POST",
@@ -1570,7 +1570,32 @@ var SendTestCasesWAC = []OutgoingTestCase{
15701570
},
15711571
}
15721572

1573+
// setupMedia takes care of having the media files needed to our test server host
1574+
func setupMedia(mb *test.MockBackend) {
1575+
imageJPG := test.NewMockMedia("test.jpg", "image/jpeg", "http://mock.com/1234/test.jpg", 1024*1024, 640, 480, 0, nil)
1576+
1577+
audioM4A := test.NewMockMedia("test.m4a", "audio/mp4", "http://mock.com/2345/test.m4a", 1024*1024, 0, 0, 200, nil)
1578+
audioMP3 := test.NewMockMedia("test.mp3", "audio/mpeg", "http://mock.com/3456/test.mp3", 1024*1024, 0, 0, 200, []courier.Media{audioM4A})
1579+
1580+
thumbJPG := test.NewMockMedia("test.jpg", "image/jpeg", "http://mock.com/4567/test.jpg", 1024*1024, 640, 480, 0, nil)
1581+
videoMP4 := test.NewMockMedia("test.mp4", "video/mp4", "http://mock.com/5678/test.mp4", 1024*1024, 0, 0, 1000, []courier.Media{thumbJPG})
1582+
1583+
videoMOV := test.NewMockMedia("test.mov", "video/quicktime", "http://mock.com/6789/test.mov", 100*1024*1024, 0, 0, 2000, nil)
1584+
1585+
filePDF := test.NewMockMedia("test.pdf", "application/pdf", "http://mock.com/7890/test.pdf", 100*1024*1024, 0, 0, 0, nil)
1586+
1587+
stickerWEBP := test.NewMockMedia("test.webp", "image/webp", "http://mock.com/8901/test.webp", 50*1024, 480, 480, 0, nil)
1588+
1589+
mb.MockMedia(imageJPG)
1590+
mb.MockMedia(audioMP3)
1591+
mb.MockMedia(videoMP4)
1592+
mb.MockMedia(videoMOV)
1593+
mb.MockMedia(filePDF)
1594+
mb.MockMedia(stickerWEBP)
1595+
}
1596+
15731597
func TestOutgoing(t *testing.T) {
1598+
15741599
// shorter max msg length for testing
15751600
maxMsgLength = 100
15761601

@@ -1582,7 +1607,7 @@ func TestOutgoing(t *testing.T) {
15821607

15831608
RunOutgoingTestCases(t, ChannelFBA, newHandler("FBA", "Facebook", false), SendTestCasesFBA, checkRedacted, nil)
15841609
RunOutgoingTestCases(t, ChannelIG, newHandler("IG", "Instagram", false), SendTestCasesIG, checkRedacted, nil)
1585-
RunOutgoingTestCases(t, ChannelWAC, newHandler("WAC", "Cloud API WhatsApp", false), SendTestCasesWAC, checkRedacted, nil)
1610+
RunOutgoingTestCases(t, ChannelWAC, newHandler("WAC", "Cloud API WhatsApp", false), SendTestCasesWAC, checkRedacted, setupMedia)
15861611
}
15871612

15881613
func TestSigning(t *testing.T) {

0 commit comments

Comments
 (0)