MCPcopy Index your code
hub / github.com/NdoleStudio/httpsms / TestBulkSMS_CSV

Function TestBulkSMS_CSV

tests/integration_test.go:407–470  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

405}
406
407func TestBulkSMS_CSV(t *testing.T) {
408 ctx := context.Background()
409 phone := setupPhone(ctx, t, 60)
410
411 // Build CSV content with 1 message
412 contact := randomPhoneNumber()
413 csvContent := fmt.Sprintf("FromPhoneNumber,ToPhoneNumber,Content,SendTime(optional)\n%s,%s,CSV bulk test message,\n",
414 phone.PhoneNumber, contact)
415
416 // Upload CSV
417 statusCode, respBody := uploadBulkFile(ctx, t, "test.csv", []byte(csvContent))
418 require.Equal(t, http.StatusAccepted, statusCode, "upload failed: %s", string(respBody))
419 t.Logf("upload response: %s", string(respBody))
420
421 // Parse the response to verify message count
422 var uploadResp struct {
423 Message string `json:"message"`
424 }
425 require.NoError(t, json.Unmarshal(respBody, &uploadResp))
426 assert.Contains(t, uploadResp.Message, "1 out of 1")
427
428 // Wait a moment for messages to be persisted
429 time.Sleep(2 * time.Second)
430
431 // Search for the bulk message by owner to get message IDs
432 messages := searchMessages(ctx, t, contact, phone.PhoneNumber)
433 require.GreaterOrEqual(t, len(messages), 1, "expected at least 1 message for phone %s", phone.PhoneNumber)
434
435 // Find the message with bulk- request_id prefix
436 var bulkMsg *httpsms.Message
437 for i := range messages {
438 if messages[i].RequestID != nil && strings.HasPrefix(*messages[i].RequestID, "bulk-") {
439 bulkMsg = &messages[i]
440 break
441 }
442 }
443 require.NotNil(t, bulkMsg, "no message with bulk- request_id found")
444 messageID := bulkMsg.ID.String()
445 requestID := *bulkMsg.RequestID
446 t.Logf("found bulk message: id=%s, request_id=%s", messageID, requestID)
447
448 // Wait for FCM push
449 waitForFCMPush(t, messageID, 30*time.Second)
450
451 // Fire SENT event
452 fireEvent(ctx, t, phone.PhoneAPIKey, messageID, "SENT")
453
454 // Poll until message reaches "sent" status
455 msg := pollMessageStatus(ctx, t, messageID, "sent", 15*time.Second)
456 assert.Equal(t, "sent", msg.Status)
457
458 // Verify bulk-messages history endpoint
459 entries := fetchBulkMessages(ctx, t)
460 entry := findBulkEntry(entries, requestID)
461 require.NotNil(t, entry, "bulk entry with request_id %s not found in history", requestID)
462
463 assert.Equal(t, 1, entry.Total)
464 assert.Equal(t, 1, entry.SentCount)

Callers

nothing calls this directly

Calls 10

setupPhoneFunction · 0.85
randomPhoneNumberFunction · 0.85
uploadBulkFileFunction · 0.85
waitForFCMPushFunction · 0.85
fireEventFunction · 0.85
pollMessageStatusFunction · 0.85
fetchBulkMessagesFunction · 0.85
findBulkEntryFunction · 0.85
searchMessagesFunction · 0.70
StringMethod · 0.45

Tested by

no test coverage detected