X-Git-Url: https://git.giacomolli.uk/onechat/blobdiff_plain/3cdbd017da9ae7a7045f4272f16d4b262fd01c79..b1be0ee8530df5db8973bfe355f2f6d3149383a0:/whatsapp_fake_helper_test.go diff --git a/whatsapp_fake_helper_test.go b/whatsapp_fake_helper_test.go index 9f80b38..8e0f237 100644 --- a/whatsapp_fake_helper_test.go +++ b/whatsapp_fake_helper_test.go @@ -84,6 +84,9 @@ type WhatsAppFake struct { logoutErr error groups []*types.GroupInfo sendErr error + uploadErr error + uploads [][]byte + imageSends []*waE2E.ImageMessage downloadData []byte downloadErr error downloadWait time.Duration @@ -203,6 +206,46 @@ func (f *WhatsAppFake) Downloads() []whatsmeow.DownloadableMessage { return slices.Clone(f.downloads) } +// Upload records the pixels and returns made-up media metadata. +func (f *WhatsAppFake) Upload(_ context.Context, data []byte, mediaType whatsmeow.MediaType) (whatsmeow.UploadResponse, error) { + f.mutex.Lock() + defer f.mutex.Unlock() + + if mediaType != whatsmeow.MediaImage { + return whatsmeow.UploadResponse{}, fmt.Errorf("unexpected media type %q", mediaType) + } + + f.uploads = append(f.uploads, slices.Clone(data)) + if f.uploadErr != nil { + return whatsmeow.UploadResponse{}, f.uploadErr + } + + return whatsmeow.UploadResponse{ + URL: "https://example.com/image", + DirectPath: "/image", + MediaKey: []byte("made-up key"), + FileSHA256: []byte("made-up hash"), + FileEncSHA256: []byte("made-up encrypted hash"), + FileLength: uint64(len(data)), + }, nil +} + +// Uploads returns the pixels passed to Upload. +func (f *WhatsAppFake) Uploads() [][]byte { + f.mutex.Lock() + defer f.mutex.Unlock() + + return slices.Clone(f.uploads) +} + +// ImageSends returns the outgoing image messages. +func (f *WhatsAppFake) ImageSends() []*waE2E.ImageMessage { + f.mutex.Lock() + defer f.mutex.Unlock() + + return slices.Clone(f.imageSends) +} + // GenerateMessageID returns a new message ID. func (f *WhatsAppFake) GenerateMessageID() types.MessageID { f.mutex.Lock() @@ -216,6 +259,10 @@ func (f *WhatsAppFake) SendMessage(_ context.Context, to types.JID, message *waE f.mutex.Lock() defer f.mutex.Unlock() + if message.GetImageMessage() != nil { + f.imageSends = append(f.imageSends, message.GetImageMessage()) + } + f.sent = append(f.sent, WhatsAppFakeSend{ to: to.String(), text: message.GetConversation(),