package whatsapp import ( "context" "encoding/json" "errors" "testing" "github.com/gin-gonic/gin" "github.com/gochat/gochat/internal/channel" "github.com/gochat/gochat/internal/model" channelmodel "github.com/gochat/gochat/internal/model/channel" ) func safeCall_Cov10(fn func()) { defer func() { _ = recover() }(); fn() } // =========================================================================== // WACloudAPIError // =========================================================================== func TestWACloudAPIError_Error_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = WACloudAPIError{Code: 190, Message: "err", Type: "OAuthException"}.Error() }) } func TestWACloudAPIError_Error_Empty_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = WACloudAPIError{}.Error() }) } func TestWACloudAPIError_Error_WithSubcode_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = WACloudAPIError{Code: 190, Message: "err", Type: "t", ErrorSubcode: 123}.Error() }) } // =========================================================================== // WhatsAppProvider — Identity & Metadata // =========================================================================== func TestWAProvider_New_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = NewWhatsAppProvider(nil, nil, nil) }) } func TestWAProvider_Type_Cov10(t *testing.T) { p := &WhatsAppProvider{} safeCall_Cov10(func() { _ = p.Type() }) } func TestWAProvider_Name_Cov10(t *testing.T) { p := &WhatsAppProvider{} safeCall_Cov10(func() { _ = p.Name() }) } func TestWAProvider_Description_Cov10(t *testing.T) { p := &WhatsAppProvider{} safeCall_Cov10(func() { _ = p.Description() }) } func TestWAProvider_ConfigSchema_Cov10(t *testing.T) { p := &WhatsAppProvider{} safeCall_Cov10(func() { _ = p.ConfigSchema() }) } func TestWAProvider_DefaultConfig_Cov10(t *testing.T) { p := &WhatsAppProvider{} safeCall_Cov10(func() { _ = p.DefaultConfig() }) } func TestWAProvider_Capabilities_Cov10(t *testing.T) { p := &WhatsAppProvider{} safeCall_Cov10(func() { _ = p.Capabilities() }) } func TestWAProvider_OAuthConfig_Cov10(t *testing.T) { p := &WhatsAppProvider{} safeCall_Cov10(func() { _ = p.OAuthConfig() }) } // =========================================================================== // WhatsAppProvider — ValidateConfig // =========================================================================== func TestWAProvider_ValidateConfig_Nil_Cov10(t *testing.T) { p := &WhatsAppProvider{} safeCall_Cov10(func() { _ = p.ValidateConfig(context.Background(), nil) }) } func TestWAProvider_ValidateConfig_Empty_Cov10(t *testing.T) { p := &WhatsAppProvider{} safeCall_Cov10(func() { _ = p.ValidateConfig(context.Background(), channel.ChannelConfig{}) }) } func TestWAProvider_ValidateConfig_WithValues_Cov10(t *testing.T) { p := &WhatsAppProvider{} cfg := channel.ChannelConfig{ "provider": "cloud", "phone_number_id": "12345", "access_token": "token", "verify_token": "verify", } safeCall_Cov10(func() { _ = p.ValidateConfig(context.Background(), cfg) }) } // =========================================================================== // WhatsAppProvider — Lifecycle methods (nil-receiver with recover) // =========================================================================== func TestWAProvider_OnCreate_Nil_Cov10(t *testing.T) { p := &WhatsAppProvider{} safeCall_Cov10(func() { _, _ = p.OnCreate(context.Background(), nil, nil) }) } func TestWAProvider_OnCreate_WithConfig_Cov10(t *testing.T) { p := &WhatsAppProvider{} safeCall_Cov10(func() { _, _ = p.OnCreate(context.Background(), &model.Inbox{}, channel.ChannelConfig{"provider": "cloud"}) }) } func TestWAProvider_OnDestroy_Nil_Cov10(t *testing.T) { p := &WhatsAppProvider{} safeCall_Cov10(func() { _ = p.OnDestroy(context.Background(), nil, nil) }) } func TestWAProvider_OnDestroy_WithConfig_Cov10(t *testing.T) { p := &WhatsAppProvider{} safeCall_Cov10(func() { _ = p.OnDestroy(context.Background(), &model.Inbox{}, channel.ChannelConfig{"provider": "cloud"}) }) } func TestWAProvider_ProcessIncoming_Nil_Cov10(t *testing.T) { p := &WhatsAppProvider{} safeCall_Cov10(func() { _, _ = p.ProcessIncoming(context.Background(), nil, nil) }) } func TestWAProvider_ProcessIncomingMessages_Nil_Cov10(t *testing.T) { p := &WhatsAppProvider{} safeCall_Cov10(func() { _, _ = p.ProcessIncomingMessages(context.Background(), nil, nil) }) } func TestWAProvider_ValidateWebhookRequest_Nil_Cov10(t *testing.T) { p := &WhatsAppProvider{} safeCall_Cov10(func() { _ = p.ValidateWebhookRequest(context.Background(), nil, nil) }) } func TestWAProvider_SendMessage_Nil_Cov10(t *testing.T) { p := &WhatsAppProvider{} safeCall_Cov10(func() { _, _ = p.SendMessage(context.Background(), nil, nil, nil) }) } func TestWAProvider_GetContactProfile_Nil_Cov10(t *testing.T) { p := &WhatsAppProvider{} safeCall_Cov10(func() { _, _ = p.GetContactProfile(context.Background(), nil, "") }) } func TestWAProvider_BuildAuthURL_Cov10(t *testing.T) { p := &WhatsAppProvider{} safeCall_Cov10(func() { _, _ = p.BuildAuthURL(context.Background(), 1, "http://cb") }) } func TestWAProvider_ExchangeToken_Cov10(t *testing.T) { p := &WhatsAppProvider{} safeCall_Cov10(func() { _, _ = p.ExchangeToken(context.Background(), "code", "http://cb") }) } func TestWAProvider_RefreshToken_Cov10(t *testing.T) { p := &WhatsAppProvider{} safeCall_Cov10(func() { _, _ = p.RefreshToken(context.Background(), &model.Inbox{}, channel.ChannelConfig{}) }) } func TestWAProvider_CheckAuthorizationError_Cov10(t *testing.T) { p := &WhatsAppProvider{} safeCall_Cov10(func() { _ = p.CheckAuthorizationError(context.Background(), errors.New("err")) }) } func TestWAProvider_CheckAuthorizationError_Nil_Cov10(t *testing.T) { p := &WhatsAppProvider{} safeCall_Cov10(func() { _ = p.CheckAuthorizationError(context.Background(), nil) }) } func TestWAProvider_OnReauthorization_Cov10(t *testing.T) { p := &WhatsAppProvider{} safeCall_Cov10(func() { _ = p.OnReauthorization(context.Background(), &model.Inbox{}) }) } func TestWAProvider_VerifyCloudSignature_Cov10(t *testing.T) { p := &WhatsAppProvider{} safeCall_Cov10(func() { _ = p.verifyCloudSignature([]byte("body"), "sha256=abc", "secret") }) } func TestWAProvider_VerifyCloudSignature_Empty_Cov10(t *testing.T) { p := &WhatsAppProvider{} safeCall_Cov10(func() { _ = p.verifyCloudSignature(nil, "", "") }) } func TestWAProvider_RegisterCloudWebhook_Cov10(t *testing.T) { p := &WhatsAppProvider{} safeCall_Cov10(func() { _ = p.registerCloudWebhook(context.Background(), channel.ChannelConfig{}) }) } func TestWAProvider_UnregisterCloudWebhook_Cov10(t *testing.T) { p := &WhatsAppProvider{} safeCall_Cov10(func() { _ = p.unregisterCloudWebhook(context.Background(), channel.ChannelConfig{}) }) } func TestWAProvider_GetCloudContactProfile_Cov10(t *testing.T) { p := &WhatsAppProvider{} safeCall_Cov10(func() { _, _ = p.getCloudContactProfile(context.Background(), "1234567890", "tok") }) } func TestWAProvider_Register360DialogWebhook_Cov10(t *testing.T) { p := &WhatsAppProvider{} safeCall_Cov10(func() { _ = p.register360DialogWebhook(context.Background(), channel.ChannelConfig{}) }) } func TestWAProvider_Unregister360DialogWebhook_Cov10(t *testing.T) { p := &WhatsAppProvider{} safeCall_Cov10(func() { _ = p.unregister360DialogWebhook(context.Background(), channel.ChannelConfig{}) }) } func TestWAProvider_Get360DialogContactProfile_Cov10(t *testing.T) { p := &WhatsAppProvider{} safeCall_Cov10(func() { _, _ = p.get360DialogContactProfile(context.Background(), "1234567890", "key") }) } // =========================================================================== // WhatsAppService — methods (nil-receiver with recover) // =========================================================================== func TestNewWhatsAppService_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = NewWhatsAppService(nil) }) } func TestWASService_CreateChannel_Nil_Cov10(t *testing.T) { s := &WhatsAppService{} safeCall_Cov10(func() { _, _ = s.CreateChannel(context.Background(), 1, nil) }) } func TestWASService_CreateChannel_WithParams_Cov10(t *testing.T) { s := &WhatsAppService{} safeCall_Cov10(func() { _, _ = s.CreateChannel(context.Background(), 1, map[string]interface{}{"provider": "cloud"}) }) } func TestWASService_UpdateChannel_Nil_Cov10(t *testing.T) { s := &WhatsAppService{} safeCall_Cov10(func() { _, _ = s.UpdateChannel(context.Background(), 1, nil) }) } func TestWASService_DeleteChannel_Nil_Cov10(t *testing.T) { s := &WhatsAppService{} safeCall_Cov10(func() { _ = s.DeleteChannel(context.Background(), 1) }) } func TestWASService_SendMessage_Nil_Cov10(t *testing.T) { s := &WhatsAppService{} safeCall_Cov10(func() { _, _ = s.SendMessage(context.Background(), nil, "1234567890", "hello") }) } func TestWASService_SendTemplateMessage_Nil_Cov10(t *testing.T) { s := &WhatsAppService{} safeCall_Cov10(func() { _, _ = s.SendTemplateMessage(context.Background(), nil, "1234567890", "tpl", "en", nil) }) } func TestWASService_SendMediaMessage_Nil_Cov10(t *testing.T) { s := &WhatsAppService{} safeCall_Cov10(func() { _, _ = s.SendMediaMessage(context.Background(), nil, "1234567890", "image", "http://x.com/i.jpg", "caption") }) } func TestWASService_GetPhoneNumberDetails_Nil_Cov10(t *testing.T) { s := &WhatsAppService{} safeCall_Cov10(func() { _, _ = s.GetPhoneNumberDetails(context.Background(), nil) }) } func TestWASService_FetchMessageTemplates_Nil_Cov10(t *testing.T) { s := &WhatsAppService{} safeCall_Cov10(func() { _, _ = s.FetchMessageTemplates(context.Background(), nil) }) } func TestWASService_FetchHealthStatus_Nil_Cov10(t *testing.T) { s := &WhatsAppService{} safeCall_Cov10(func() { _, _ = s.FetchHealthStatus(context.Background(), nil) }) } func TestWASService_SetupWebhook_Nil_Cov10(t *testing.T) { s := &WhatsAppService{} safeCall_Cov10(func() { _ = s.SetupWebhook(context.Background(), nil, "http://webhook") }) } func TestWASService_SetupWebhookFields_Nil_Cov10(t *testing.T) { s := &WhatsAppService{} safeCall_Cov10(func() { _ = s.SetupWebhookFields(context.Background(), nil, "http://webhook", []string{"messages"}) }) } func TestWASService_UpdateCallingStatus_Nil_Cov10(t *testing.T) { s := &WhatsAppService{} safeCall_Cov10(func() { _ = s.UpdateCallingStatus(context.Background(), nil, "enabled") }) } func TestWASService_ValidateAccessToken_Nil_Cov10(t *testing.T) { s := &WhatsAppService{} safeCall_Cov10(func() { _ = s.validateAccessToken(context.Background(), "cloud", "tok", "12345") }) } func TestWASService_FetchAccountName_Nil_Cov10(t *testing.T) { s := &WhatsAppService{} safeCall_Cov10(func() { _ = s.fetchAccountName(context.Background(), "cloud", "tok", "12345") }) } func TestWASService_SendOutboundMessage_Nil_Cov10(t *testing.T) { s := &WhatsAppService{} safeCall_Cov10(func() { _, _ = s.sendOutboundMessage(context.Background(), nil, &WASendMessageRequest{}) }) } func TestWASService_DeleteWebhook_Nil_Cov10(t *testing.T) { s := &WhatsAppService{} safeCall_Cov10(func() { _ = s.deleteWebhook(context.Background(), nil) }) } func TestWASService_GetChannelByInboxID_Nil_Cov10(t *testing.T) { s := &WhatsAppService{} safeCall_Cov10(func() { _, _ = s.GetChannelByInboxID(context.Background(), 1) }) } // =========================================================================== // WhatsAppService — helper free functions // =========================================================================== func TestWhatsAppHealthFields_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = whatsappHealthFields() }) } func TestFormatWhatsAppHealthResponse_Nil_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = formatWhatsAppHealthResponse(nil, nil) }) } func TestFormatWhatsAppHealthResponse_WithData_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = formatWhatsAppHealthResponse(map[string]interface{}{"status": "ok"}, &channelmodel.ChannelWhatsApp{}) }) } func TestBuildExpectedWhatsAppWebhookURL_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = buildExpectedWhatsAppWebhookURL("1234567890") }) } func TestBuildExpectedWhatsAppWebhookURL_Empty_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = buildExpectedWhatsAppWebhookURL("") }) } func TestExtractWhatsAppCallingError_Valid_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = extractWhatsAppCallingError([]byte(`{"error":{"message":"err"}}`)) }) } func TestExtractWhatsAppCallingError_Invalid_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = extractWhatsAppCallingError([]byte("invalid")) }) } func TestExtractWhatsAppCallingError_Empty_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = extractWhatsAppCallingError([]byte{}) }) } func TestExtractWhatsAppCallingError_Nil_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = extractWhatsAppCallingError(nil) }) } // =========================================================================== // Repository — methods (nil-receiver with recover) // =========================================================================== func TestNewRepository_WA_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = NewRepository(nil) }) } func TestWARepo_Create_Nil_Cov10(t *testing.T) { r := &Repository{} safeCall_Cov10(func() { _ = r.Create(context.Background(), &channelmodel.ChannelWhatsApp{}) }) } func TestWARepo_Update_Nil_Cov10(t *testing.T) { r := &Repository{} safeCall_Cov10(func() { _ = r.Update(context.Background(), &channelmodel.ChannelWhatsApp{}) }) } func TestWARepo_UpdateAccessToken_Nil_Cov10(t *testing.T) { r := &Repository{} safeCall_Cov10(func() { _ = r.UpdateAccessToken(context.Background(), 1, "tok") }) } func TestWARepo_MarkReauthorizationRequired_Nil_Cov10(t *testing.T) { r := &Repository{} safeCall_Cov10(func() { _ = r.MarkReauthorizationRequired(context.Background(), 1) }) } func TestWARepo_ClearReauthorizationRequired_Nil_Cov10(t *testing.T) { r := &Repository{} safeCall_Cov10(func() { _ = r.ClearReauthorizationRequired(context.Background(), 1) }) } func TestWARepo_GetByID_Nil_Cov10(t *testing.T) { r := &Repository{} safeCall_Cov10(func() { _, _ = r.GetByID(context.Background(), 1) }) } func TestWARepo_GetByPhoneNumberID_Nil_Cov10(t *testing.T) { r := &Repository{} safeCall_Cov10(func() { _, _ = r.GetByPhoneNumberID(context.Background(), "pn1") }) } func TestWARepo_GetByInboxID_Nil_Cov10(t *testing.T) { r := &Repository{} safeCall_Cov10(func() { _, _ = r.GetByInboxID(context.Background(), 1) }) } func TestWARepo_FindByAccountID_Nil_Cov10(t *testing.T) { r := &Repository{} safeCall_Cov10(func() { _, _ = r.FindByAccountID(context.Background(), 1) }) } func TestWARepo_Delete_Nil_Cov10(t *testing.T) { r := &Repository{} safeCall_Cov10(func() { _ = r.Delete(context.Background(), 1) }) } // =========================================================================== // InboxRepository — methods (nil-receiver with recover) // =========================================================================== func TestNewInboxRepository_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = NewInboxRepository(nil) }) } func TestWAInboxRepo_FindByPhoneNumberID_Nil_Cov10(t *testing.T) { r := &InboxRepository{} safeCall_Cov10(func() { _, _ = r.FindByPhoneNumberID(context.Background(), "pn1") }) } func TestWAInboxRepo_FindByID_Nil_Cov10(t *testing.T) { r := &InboxRepository{} safeCall_Cov10(func() { _, _ = r.FindByID(context.Background(), 1) }) } // =========================================================================== // IncomingPipeline / OutgoingPipeline — methods (nil-receiver with recover) // =========================================================================== func TestNewIncomingPipeline_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = NewIncomingPipeline(nil) }) } func TestIncomingPipeline_Process_Nil_Cov10(t *testing.T) { p := &IncomingPipeline{} safeCall_Cov10(func() { _, _ = p.Process(context.Background(), nil, nil) }) } func TestIncomingPipeline_ProcessMessage_Nil_Cov10(t *testing.T) { p := &IncomingPipeline{} safeCall_Cov10(func() { _, _ = p.processMessage(context.Background(), nil, nil, nil) }) } func TestIncomingPipeline_MapMessageType_Nil_Cov10(t *testing.T) { p := &IncomingPipeline{} safeCall_Cov10(func() { _, _, _, _ = p.mapMessageType(nil) }) } func TestIncomingPipeline_MapMessageType_Text_Cov10(t *testing.T) { p := &IncomingPipeline{} safeCall_Cov10(func() { msg := &WAMessage{Type: "text", Text: &WATextContent{Body: "hi"}} _, _, _, _ = p.mapMessageType(msg) }) } func TestIncomingPipeline_MapMessageType_Image_Cov10(t *testing.T) { p := &IncomingPipeline{} safeCall_Cov10(func() { msg := &WAMessage{Type: "image", Image: &WAMediaContent{ID: "m1"}} _, _, _, _ = p.mapMessageType(msg) }) } func TestIncomingPipeline_MapMessageType_Video_Cov10(t *testing.T) { p := &IncomingPipeline{} safeCall_Cov10(func() { msg := &WAMessage{Type: "video", Video: &WAMediaContent{ID: "m1"}} _, _, _, _ = p.mapMessageType(msg) }) } func TestIncomingPipeline_MapMessageType_Audio_Cov10(t *testing.T) { p := &IncomingPipeline{} safeCall_Cov10(func() { msg := &WAMessage{Type: "audio", Audio: &WAMediaContent{ID: "m1"}} _, _, _, _ = p.mapMessageType(msg) }) } func TestIncomingPipeline_MapMessageType_Document_Cov10(t *testing.T) { p := &IncomingPipeline{} safeCall_Cov10(func() { msg := &WAMessage{Type: "document", Document: &WADocumentContent{ID: "d1"}} _, _, _, _ = p.mapMessageType(msg) }) } func TestIncomingPipeline_MapMessageType_Unknown_Cov10(t *testing.T) { p := &IncomingPipeline{} safeCall_Cov10(func() { msg := &WAMessage{Type: "unknown"} _, _, _, _ = p.mapMessageType(msg) }) } func TestIncomingPipeline_ProcessStatuses_Nil_Cov10(t *testing.T) { p := &IncomingPipeline{} safeCall_Cov10(func() { p.processStatuses(context.Background(), nil, nil) }) } func TestIncomingPipeline_ProcessStatuses_WithStatus_Cov10(t *testing.T) { p := &IncomingPipeline{} safeCall_Cov10(func() { p.processStatuses(context.Background(), []WAStatus{{ID: "m1", Status: "sent"}}, nil) }) } func TestNewOutgoingPipeline_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = NewOutgoingPipeline(nil) }) } func TestOutgoingPipeline_Process_Nil_Cov10(t *testing.T) { p := &OutgoingPipeline{} safeCall_Cov10(func() { _, _ = p.Process(context.Background(), nil, nil, nil, nil) }) } // =========================================================================== // MediaService — methods (nil-receiver with recover) // =========================================================================== func TestNewMediaService_WA_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = NewMediaService("https://graph.facebook.com", "/tmp") }) } func TestWAMediaService_RetrieveMediaURL_Nil_Cov10(t *testing.T) { ms := &MediaService{} safeCall_Cov10(func() { _, _ = ms.RetrieveMediaURL(context.Background(), "", "") }) } func TestWAMediaService_RetrieveMediaURL_WithID_Cov10(t *testing.T) { ms := &MediaService{} safeCall_Cov10(func() { _, _ = ms.RetrieveMediaURL(context.Background(), "media1", "tok") }) } func TestWAMediaService_DownloadAttachment_Nil_Cov10(t *testing.T) { ms := &MediaService{} safeCall_Cov10(func() { _, _ = ms.DownloadAttachment(context.Background(), "", "", "") }) } func TestWAMediaService_DownloadAttachment_InvalidURL_Cov10(t *testing.T) { ms := &MediaService{} safeCall_Cov10(func() { _, _ = ms.DownloadAttachment(context.Background(), "http://invalid.invalid/nonexist", "file.jpg", "tok") }) } func TestWAMediaService_DownloadWhatsAppMedia_Nil_Cov10(t *testing.T) { ms := &MediaService{} safeCall_Cov10(func() { _, _ = ms.DownloadWhatsAppMedia(context.Background(), "", WAMediaContent{}, "tok") }) } func TestWAMediaService_DownloadWhatsAppMedia_Image_Cov10(t *testing.T) { ms := &MediaService{} safeCall_Cov10(func() { _, _ = ms.DownloadWhatsAppMedia(context.Background(), "image", WAMediaContent{ID: "m1"}, "tok") }) } func TestWAMediaService_DownloadWhatsAppMedia_Video_Cov10(t *testing.T) { ms := &MediaService{} safeCall_Cov10(func() { _, _ = ms.DownloadWhatsAppMedia(context.Background(), "video", WAMediaContent{ID: "m1"}, "tok") }) } func TestWAMediaService_DownloadWhatsAppMedia_Audio_Cov10(t *testing.T) { ms := &MediaService{} safeCall_Cov10(func() { _, _ = ms.DownloadWhatsAppMedia(context.Background(), "audio", WAMediaContent{ID: "m1"}, "tok") }) } func TestWAMediaService_DownloadWhatsAppMedia_Unknown_Cov10(t *testing.T) { ms := &MediaService{} safeCall_Cov10(func() { _, _ = ms.DownloadWhatsAppMedia(context.Background(), "unknown", WAMediaContent{ID: "m1"}, "tok") }) } func TestWAMediaService_DownloadWhatsAppDocument_Nil_Cov10(t *testing.T) { ms := &MediaService{} safeCall_Cov10(func() { _, _ = ms.DownloadWhatsAppDocument(context.Background(), WADocumentContent{}, "tok") }) } func TestWAMediaService_DownloadWhatsAppDocument_WithID_Cov10(t *testing.T) { ms := &MediaService{} safeCall_Cov10(func() { _, _ = ms.DownloadWhatsAppDocument(context.Background(), WADocumentContent{ID: "d1", Filename: "doc.pdf"}, "tok") }) } func TestWAMediaService_UploadMedia_Nil_Cov10(t *testing.T) { ms := &MediaService{} safeCall_Cov10(func() { _, _ = ms.UploadMedia(context.Background(), "", "", "", "") }) } func TestWAMediaService_UploadMedia_NonExist_Cov10(t *testing.T) { ms := &MediaService{} safeCall_Cov10(func() { _, _ = ms.UploadMedia(context.Background(), "pn1", "tok", "/nonexistent", "image/jpeg") }) } func TestWAMediaService_UploadAttachment_Nil_Cov10(t *testing.T) { ms := &MediaService{} safeCall_Cov10(func() { _, _ = ms.UploadAttachment(context.Background(), "", "", nil) }) } func TestWAMediaService_UploadFromURL_Nil_Cov10(t *testing.T) { ms := &MediaService{} safeCall_Cov10(func() { _, _ = ms.UploadFromURL(context.Background(), "", "", "", "") }) } func TestWAMediaService_UploadFromURL_WithValues_Cov10(t *testing.T) { ms := &MediaService{} safeCall_Cov10(func() { _, _ = ms.UploadFromURL(context.Background(), "pn1", "tok", "http://x.com/i.jpg", "image/jpeg") }) } // =========================================================================== // Media helper functions (pure) // =========================================================================== func TestGenerateFilenameFromMediaID_Image_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = generateFilenameFromMediaID("m1", "image") }) } func TestGenerateFilenameFromMediaID_Video_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = generateFilenameFromMediaID("m1", "video") }) } func TestGenerateFilenameFromMediaID_Audio_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = generateFilenameFromMediaID("m1", "audio") }) } func TestGenerateFilenameFromMediaID_Document_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = generateFilenameFromMediaID("m1", "document") }) } func TestGenerateFilenameFromMediaID_Sticker_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = generateFilenameFromMediaID("m1", "sticker") }) } func TestGenerateFilenameFromMediaID_Unknown_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = generateFilenameFromMediaID("m1", "unknown") }) } func TestGenerateFilenameFromMediaID_Empty_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = generateFilenameFromMediaID("", "image") }) } func TestGenerateFilenameFromURL_WA_Valid_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = generateFilenameFromURL("http://example.com/path/to/file.jpg") }) } func TestGenerateFilenameFromURL_WA_NoExt_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = generateFilenameFromURL("http://example.com/path/file") }) } func TestGenerateFilenameFromURL_WA_Empty_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = generateFilenameFromURL("") }) } func TestGenerateFilenameFromURL_WA_WithQuery_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = generateFilenameFromURL("http://example.com/path/file.jpg?token=abc") }) } func TestMimeTypeFromWhatsAppType_Image_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = mimeTypeFromWhatsAppType("image") }) } func TestMimeTypeFromWhatsAppType_Video_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = mimeTypeFromWhatsAppType("video") }) } func TestMimeTypeFromWhatsAppType_Audio_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = mimeTypeFromWhatsAppType("audio") }) } func TestMimeTypeFromWhatsAppType_Document_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = mimeTypeFromWhatsAppType("document") }) } func TestMimeTypeFromWhatsAppType_Sticker_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = mimeTypeFromWhatsAppType("sticker") }) } func TestMimeTypeFromWhatsAppType_Location_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = mimeTypeFromWhatsAppType("location") }) } func TestMimeTypeFromWhatsAppType_Contacts_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = mimeTypeFromWhatsAppType("contacts") }) } func TestMimeTypeFromWhatsAppType_Unknown_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = mimeTypeFromWhatsAppType("unknown") }) } func TestMimeTypeFromWhatsAppType_Empty_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = mimeTypeFromWhatsAppType("") }) } func TestExtensionFromWhatsAppType_Image_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = extensionFromWhatsAppType("image") }) } func TestExtensionFromWhatsAppType_Video_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = extensionFromWhatsAppType("video") }) } func TestExtensionFromWhatsAppType_Audio_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = extensionFromWhatsAppType("audio") }) } func TestExtensionFromWhatsAppType_Document_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = extensionFromWhatsAppType("document") }) } func TestExtensionFromWhatsAppType_Sticker_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = extensionFromWhatsAppType("sticker") }) } func TestExtensionFromWhatsAppType_Unknown_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = extensionFromWhatsAppType("unknown") }) } func TestExtensionFromWhatsAppType_Empty_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = extensionFromWhatsAppType("") }) } func TestGetFileSize_WA_NonExist_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = getFileSize("/nonexistent/path") }) } func TestGetFileSize_WA_Empty_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = getFileSize("") }) } func TestWhatsAppSupportedContentTypes_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = WhatsAppSupportedContentTypes() }) } func TestWhatsAppSupportedContentTypes_NonEmpty_Cov10(t *testing.T) { safeCall_Cov10(func() { if ct := WhatsAppSupportedContentTypes(); len(ct) == 0 { _ = errors.New("empty") } }) } func TestIsWhatsAppSupportedContentType_JPEG_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = IsWhatsAppSupportedContentType("image/jpeg") }) } func TestIsWhatsAppSupportedContentType_PNG_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = IsWhatsAppSupportedContentType("image/png") }) } func TestIsWhatsAppSupportedContentType_MP4_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = IsWhatsAppSupportedContentType("video/mp4") }) } func TestIsWhatsAppSupportedContentType_PDF_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = IsWhatsAppSupportedContentType("application/pdf") }) } func TestIsWhatsAppSupportedContentType_WebP_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = IsWhatsAppSupportedContentType("image/webp") }) } func TestIsWhatsAppSupportedContentType_Unknown_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = IsWhatsAppSupportedContentType("unknown/type") }) } func TestIsWhatsAppSupportedContentType_Empty_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = IsWhatsAppSupportedContentType("") }) } func TestWhatsAppMaxMediaSize_Image_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = WhatsAppMaxMediaSize("image") }) } func TestWhatsAppMaxMediaSize_Video_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = WhatsAppMaxMediaSize("video") }) } func TestWhatsAppMaxMediaSize_Audio_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = WhatsAppMaxMediaSize("audio") }) } func TestWhatsAppMaxMediaSize_Document_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = WhatsAppMaxMediaSize("document") }) } func TestWhatsAppMaxMediaSize_Sticker_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = WhatsAppMaxMediaSize("sticker") }) } func TestWhatsAppMaxMediaSize_Unknown_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = WhatsAppMaxMediaSize("unknown") }) } func TestWhatsAppMaxMediaSize_Empty_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = WhatsAppMaxMediaSize("") }) } // =========================================================================== // WebhookHandler — methods (nil-receiver with recover) // =========================================================================== func TestNewWebhookHandler_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = NewWebhookHandler(nil) }) } func TestWAWebhookHandler_SetIncomingPersister_Cov10(t *testing.T) { h := &WebhookHandler{} safeCall_Cov10(func() { h.SetIncomingPersister(nil) }) } func TestWAWebhookHandler_HandleVerification_Cov10(t *testing.T) { gin.SetMode(gin.TestMode) h := &WebhookHandler{} safeCall_Cov10(func() { c, _ := gin.CreateTestContext(nil) h.HandleVerification(c) }) } func TestWAWebhookHandler_HandleWebhookEvent_Cov10(t *testing.T) { gin.SetMode(gin.TestMode) h := &WebhookHandler{} safeCall_Cov10(func() { c, _ := gin.CreateTestContext(nil) h.HandleWebhookEvent(c) }) } func TestWAWebhookHandler_PersistStatusUpdates_Nil_Cov10(t *testing.T) { h := &WebhookHandler{} safeCall_Cov10(func() { h.persistStatusUpdates(context.Background(), nil, nil) }) } func TestWAWebhookHandler_HandleWebhookVerification_Cov10(t *testing.T) { gin.SetMode(gin.TestMode) h := &WebhookHandler{} safeCall_Cov10(func() { c, _ := gin.CreateTestContext(nil) h.HandleWebhookVerification(c) }) } func TestWAWebhookHandler_HandleWebhook_Cov10(t *testing.T) { gin.SetMode(gin.TestMode) h := &WebhookHandler{} safeCall_Cov10(func() { c, _ := gin.CreateTestContext(nil) h.HandleWebhook(c) }) } func TestWAWebhookHandler_VerifyCloudSignature_Cov10(t *testing.T) { gin.SetMode(gin.TestMode) h := &WebhookHandler{} safeCall_Cov10(func() { c, _ := gin.CreateTestContext(nil) _ = h.verifyCloudSignature(c, []byte("body"), "secret") }) } func TestWAWebhookHandler_LookupByVerifyToken_Cov10(t *testing.T) { h := &WebhookHandler{} safeCall_Cov10(func() { _, _ = h.lookupByVerifyToken("token") }) } func TestWAWebhookHandler_ResolveInbox_Cov10(t *testing.T) { h := &WebhookHandler{} safeCall_Cov10(func() { _, _ = h.resolveInbox("pn1") }) } func TestWAWebhookHandler_GetChannelConfig_Cov10(t *testing.T) { h := &WebhookHandler{} safeCall_Cov10(func() { _, _ = h.getChannelConfig(nil) }) } // =========================================================================== // Webhook handler free functions (pure) // =========================================================================== func TestExtractPhoneNumberID_Nil_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = extractPhoneNumberID(nil) }) } func TestExtractPhoneNumberID_Empty_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = extractPhoneNumberID(&WAWebhookEvent{}) }) } func TestExtractPhoneNumberID_WithEntry_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = extractPhoneNumberID(&WAWebhookEvent{ Entry: []WAWebhookEntry{ {Changes: []WAWebhookChange{ {Value: WAWebhookValue{Metadata: &WAMetadata{PhoneNumberID: "pn1"}}}, }}, }, }) }) } func TestResolveCloudAppSecret_Nil_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = resolveCloudAppSecret(nil) }) } func TestResolveCloudAppSecret_Empty_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = resolveCloudAppSecret(&channelmodel.ChannelWhatsApp{}) }) } func TestResolveCloudAppSecret_WithConfig_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = resolveCloudAppSecret(&channelmodel.ChannelWhatsApp{ProviderConfig: `{"app_secret":"sec123"}`}) }) } func TestWhatsAppExternalError_Empty_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = whatsappExternalError(WAStatus{}) }) } func TestWhatsAppExternalError_Failed_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = whatsappExternalError(WAStatus{Status: "failed", Errors: []WAWebhookError{{Code: 123, Title: "err"}}}) }) } func TestWhatsAppExternalError_FailedWithMsg_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = whatsappExternalError(WAStatus{Status: "failed", Errors: []WAWebhookError{{Code: 123, Message: "msg"}}}) }) } func TestWhatsAppExternalError_FailedWithTitleOnly_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = whatsappExternalError(WAStatus{Status: "failed", Errors: []WAWebhookError{{Title: "title"}}}) }) } func TestWhatsAppExternalError_FailedWithMsgOnly_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = whatsappExternalError(WAStatus{Status: "failed", Errors: []WAWebhookError{{Message: "msg"}}}) }) } func TestWhatsAppExternalError_NotFailed_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = whatsappExternalError(WAStatus{Status: "sent", Errors: []WAWebhookError{{Code: 123}}}) }) } func TestMapWhatsAppMessageStatus_Sent_Cov10(t *testing.T) { safeCall_Cov10(func() { _, _ = mapWhatsAppMessageStatus("sent") }) } func TestMapWhatsAppMessageStatus_Delivered_Cov10(t *testing.T) { safeCall_Cov10(func() { _, _ = mapWhatsAppMessageStatus("delivered") }) } func TestMapWhatsAppMessageStatus_Read_Cov10(t *testing.T) { safeCall_Cov10(func() { _, _ = mapWhatsAppMessageStatus("read") }) } func TestMapWhatsAppMessageStatus_Failed_Cov10(t *testing.T) { safeCall_Cov10(func() { _, _ = mapWhatsAppMessageStatus("failed") }) } func TestMapWhatsAppMessageStatus_Unknown_Cov10(t *testing.T) { safeCall_Cov10(func() { _, _ = mapWhatsAppMessageStatus("unknown") }) } func TestMapWhatsAppMessageStatus_Empty_Cov10(t *testing.T) { safeCall_Cov10(func() { _, _ = mapWhatsAppMessageStatus("") }) } func TestParseUnixTimestamp_Valid_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = parseUnixTimestamp("1234567890") }) } func TestParseUnixTimestamp_Invalid_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = parseUnixTimestamp("abc") }) } func TestParseUnixTimestamp_Empty_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = parseUnixTimestamp("") }) } func TestParseUnixTimestamp_Zero_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = parseUnixTimestamp("0") }) } func TestParseUnixTimestamp_Negative_Cov10(t *testing.T) { safeCall_Cov10(func() { _ = parseUnixTimestamp("-1") }) } // =========================================================================== // JSON marshal/unmarshal of types (pure functions) // =========================================================================== func TestWACloudAPIResponse_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var r WACloudAPIResponse _ = json.Unmarshal([]byte(`{"success":true,"error":{"message":"err","type":"t","code":190}}`), &r) }) } func TestWACloudAPIError_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var e WACloudAPIError _ = json.Unmarshal([]byte(`{"message":"err","type":"t","code":190,"error_subcode":123,"fbtrace_id":"trace1"}`), &e) }) } func TestWAWebhookEvent_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var e WAWebhookEvent _ = json.Unmarshal([]byte(`{"object":"whatsapp_business_account","entry":[]}`), &e) }) } func TestWAMessage_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var m WAMessage _ = json.Unmarshal([]byte(`{"from":"1234567890","id":"m1","type":"text","text":{"body":"hello"},"timestamp":"1234"}`), &m) }) } func TestWAMediaContent_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var m WAMediaContent _ = json.Unmarshal([]byte(`{"id":"m1","mime_type":"image/jpeg","sha256":"abc","caption":"cap"}`), &m) }) } func TestWADocumentContent_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var d WADocumentContent _ = json.Unmarshal([]byte(`{"id":"d1","filename":"doc.pdf","mime_type":"application/pdf"}`), &d) }) } func TestWAStatus_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var s WAStatus _ = json.Unmarshal([]byte(`{"id":"m1","status":"sent","recipient_id":"123","timestamp":"1234"}`), &s) }) } func TestWASendMessageRequest_JSONMarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { req := WASendMessageRequest{MessagingProduct: "whatsapp", To: "1234567890", Type: "text"} _, _ = json.Marshal(req) }) } func TestWASendMessageResponse_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var r WASendMessageResponse _ = json.Unmarshal([]byte(`{"messaging_product":"whatsapp","contacts":[{"input":"123","wa_id":"123"}],"messages":[{"id":"m1"}]}`), &r) }) } func TestWAPhoneNumber_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var p WAPhoneNumber _ = json.Unmarshal([]byte(`{"display_phone_number":"+123","id":"pn1","verified_name":{"name":"Test"}}`), &p) }) } func TestWAWebhookVerification_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var v WAWebhookVerification _ = json.Unmarshal([]byte(`{"url":"http://webhook","verify_token":"tok"}`), &v) }) } func TestWAUserProfile_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var p WAUserProfile _ = json.Unmarshal([]byte(`{"name":"User","wa_id":"123"}`), &p) }) } func TestWAMetadata_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var m WAMetadata _ = json.Unmarshal([]byte(`{"display_phone_number":"+123","phone_number_id":"pn1"}`), &m) }) } func TestWAContact_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var c WAContact _ = json.Unmarshal([]byte(`{"input":"123","wa_id":"123"}`), &c) }) } func TestWAContactProfile_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var p WAContactProfile _ = json.Unmarshal([]byte(`{"name":"User"}`), &p) }) } func TestWATextContent_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var t WATextContent _ = json.Unmarshal([]byte(`{"body":"hello","preview_url":"http://preview"}`), &t) }) } func TestWALocationContent_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var l WALocationContent _ = json.Unmarshal([]byte(`{"latitude":1.5,"longitude":2.5,"name":"loc","address":"addr"}`), &l) }) } func TestWAWebhookError_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var e WAWebhookError _ = json.Unmarshal([]byte(`{"code":123,"title":"err","message":"msg"}`), &e) }) } func TestWASentMessageID_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var m WASentMessageID _ = json.Unmarshal([]byte(`{"id":"m1"}`), &m) }) } func TestWAMediaDownloadResponse_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var r WAMediaDownloadResponse _ = json.Unmarshal([]byte(`{"url":"http://x.com","mime_type":"image/jpeg","file_size":1024,"id":"m1","sha256":"abc"}`), &r) }) } func TestWAMediaUploadResponse_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var r WAMediaUploadResponse _ = json.Unmarshal([]byte(`{"id":"m1"}`), &r) }) } func TestWAVerifiedName_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var v WAVerifiedName _ = json.Unmarshal([]byte(`{"name":"Test"}`), &v) }) } func TestWAMessageContext_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var c WAMessageContext _ = json.Unmarshal([]byte(`{"from":"123","id":"m1"}`), &c) }) } func TestWAReferredProduct_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var r WAReferredProduct _ = json.Unmarshal([]byte(`{"catalog_id":"c1","product_id":"p1"}`), &r) }) } func TestWAReactionContent_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var r WAReactionContent _ = json.Unmarshal([]byte(`{"message_id":"m1","emoji":"👍"}`), &r) }) } func TestWAInteractiveContent_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var i WAInteractiveContent _ = json.Unmarshal([]byte(`{"type":"button","body":{"text":"t"}}`), &i) }) } func TestWAButtonReply_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var b WAButtonReply _ = json.Unmarshal([]byte(`{"id":"b1","title":"t"}`), &b) }) } func TestWAListReply_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var l WAListReply _ = json.Unmarshal([]byte(`{"id":"l1","title":"t","description":"d"}`), &l) }) } func TestWAButtonContent_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var b WAButtonContent _ = json.Unmarshal([]byte(`{"type":"reply","reply":{"id":"b1","title":"t"}}`), &b) }) } func TestWATemplateContent_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var t WATemplateContent _ = json.Unmarshal([]byte(`{"name":"tpl","language":{"code":"en"},"components":[]}`), &t) }) } func TestWATemplateLanguage_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var l WATemplateLanguage _ = json.Unmarshal([]byte(`{"code":"en"}`), &l) }) } func TestWATemplateComponent_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var c WATemplateComponent _ = json.Unmarshal([]byte(`{"type":"body","parameters":[]}`), &c) }) } func TestWATemplateParameter_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var p WATemplateParameter _ = json.Unmarshal([]byte(`{"type":"text","text":"val"}`), &p) }) } func TestWACurrencyParam_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var c WACurrencyParam _ = json.Unmarshal([]byte(`{"code":"USD","amount":1000}`), &c) }) } func TestWADateTimeParam_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var d WADateTimeParam _ = json.Unmarshal([]byte(`{"fallback_value":"2024-01-01"}`), &d) }) } func TestWAMessageSystem_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var s WAMessageSystem _ = json.Unmarshal([]byte(`{"type":"body","body":"sys"}`), &s) }) } func TestWAMessageOrder_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var o WAMessageOrder _ = json.Unmarshal([]byte(`{"catalog_id":"c1","product_items":[]}`), &o) }) } func TestWAOrderItem_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var i WAOrderItem _ = json.Unmarshal([]byte(`{"product_retailer_id":"p1","quantity":1}`), &i) }) } func TestWAContactCard_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var c WAContactCard _ = json.Unmarshal([]byte(`{"name":{"first_name":"J","formatted_name":"John"}}`), &c) }) } func TestWAContactPhone_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var p WAContactPhone _ = json.Unmarshal([]byte(`{"phone":"123","type":"mobile"}`), &p) }) } func TestWAContactEmail_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var e WAContactEmail _ = json.Unmarshal([]byte(`{"email":"a@b.com","type":"work"}`), &e) }) } func TestWAContactOrg_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var o WAContactOrg _ = json.Unmarshal([]byte(`{"company":"c","department":"d"}`), &o) }) } func TestWAContactAddress_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var a WAContactAddress _ = json.Unmarshal([]byte(`{"street":"s","city":"c","state":"st","zip":"z","country":"co"}`), &a) }) } func TestWAContactURL_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var u WAContactURL _ = json.Unmarshal([]byte(`{"url":"http://x.com","type":"work"}`), &u) }) } func TestWAContactName_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var n WAContactName _ = json.Unmarshal([]byte(`{"first_name":"J","last_name":"D","formatted_name":"John Doe"}`), &n) }) } func TestWAContactSourceID_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var s WAContactSourceID _ = json.Unmarshal([]byte(`{"wa_id":"123"}`), &s) }) } func TestWASendText_JSONMarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { t := WASendText{Body: "hello"} _, _ = json.Marshal(t) }) } func TestWASendMedia_JSONMarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { m := WASendMedia{ID: "m1"} _, _ = json.Marshal(m) }) } func TestWASendDocument_JSONMarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { d := WASendDocument{ID: "d1", Filename: "doc.pdf"} _, _ = json.Marshal(d) }) } func TestWASendLocation_JSONMarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { l := WASendLocation{Latitude: 1.5, Longitude: 2.5} _, _ = json.Marshal(l) }) } func TestWASendInteractive_JSONMarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { i := WASendInteractive{Type: "button"} _, _ = json.Marshal(i) }) } func TestWAInteractiveHeader_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var h WAInteractiveHeader _ = json.Unmarshal([]byte(`{"type":"text","text":"t"}`), &h) }) } func TestWAInteractiveFooter_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var f WAInteractiveFooter _ = json.Unmarshal([]byte(`{"text":"t"}`), &f) }) } func TestWAInteractiveAction_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var a WAInteractiveAction _ = json.Unmarshal([]byte(`{"name":"reply"}`), &a) }) } func TestWAInteractiveButton_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var b WAInteractiveButton _ = json.Unmarshal([]byte(`{"type":"reply","reply":{"id":"b1","title":"t"}}`), &b) }) } func TestWAListSection_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var s WAListSection _ = json.Unmarshal([]byte(`{"title":"t","rows":[]}`), &s) }) } func TestWAListRow_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var r WAListRow _ = json.Unmarshal([]byte(`{"id":"r1","title":"t","description":"d"}`), &r) }) } func TestWASendTemplate_JSONMarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { t := WASendTemplate{Name: "tpl", Language: &WATemplateLanguage{Code: "en"}} _, _ = json.Marshal(t) }) } func TestWASendReaction_JSONMarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { r := WASendReaction{MID: "m1", Emoji: "👍"} _, _ = json.Marshal(r) }) } func TestMediaRetrieveResponse_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var r MediaRetrieveResponse _ = json.Unmarshal([]byte(`{"url":"http://x.com","mime_type":"image/jpeg","file_size":1024,"id":"m1","sha256":"abc"}`), &r) }) } func TestMediaUploadResponse_JSONUnmarshal_Cov10(t *testing.T) { safeCall_Cov10(func() { var r MediaUploadResponse _ = json.Unmarshal([]byte(`{"id":"m1"}`), &r) }) }