Files
creator-hub/internal/controlplane/api/event_cover_cache_test.go
T
rogee e50bed9ad8
douyin-release-gate / verify (push) Failing after 18m54s
feat: add account events and private message management
Add Douyin notification polling, event details, and manual multi-account private messaging.

Refine environment memory settings, account operations, login collection recovery, and message UI; update tests and documentation.
2026-10-07 10:23:05 +08:00

74 lines
2.3 KiB
Go

package api
import (
"context"
"errors"
"testing"
creator "git.ipao.vip/rogee/creator-hub/internal/creator"
)
type eventCoverFilesStub struct {
files map[string]bool
readErr, saveErr error
}
func (s *eventCoverFilesStub) GetPlatformWorkCover(uid, key string) (string, error) {
if s.readErr != nil {
return "", s.readErr
}
if s.files[uid+"/"+key] {
return "cached", nil
}
return "", creator.ErrNotFound
}
func (s *eventCoverFilesStub) SavePlatformWorkCover(uid, key, mime string, data []byte) error {
if s.saveErr != nil {
return s.saveErr
}
s.files[uid+"/"+key] = true
return nil
}
func coverNotice() creator.ListenerDelivery {
return creator.ListenerDelivery{Kind: "notice", Notice: &creator.ListenerNotice{EventKey: "1", WorkID: "2", WorkAuthorUID: "3", WorkCoverURL: "https://p3.douyinpic.com/a.jpg", MessageText: "原内容", WorkCoverError: "old failure"}}
}
func TestListenerWorkCoversReuseSharedFilesAndExposeFailures(t *testing.T) {
files := &eventCoverFilesStub{files: map[string]bool{}}
calls := 0
fetch := func(context.Context, string) (string, []byte, error) {
calls++
return "image/jpeg", []byte("image"), nil
}
items := []creator.ListenerDelivery{coverNotice(), coverNotice(), {Kind: "checkpoint"}}
cacheListenerWorkCovers(context.Background(), files, fetch, items)
if calls != 1 || items[0].Notice.WorkCoverError != "" || items[1].Notice.WorkCoverError != "" {
t.Fatalf("duplicate fetch/old errors: %d %+v", calls, items)
}
for _, failure := range []string{"read", "download", "save"} {
files := &eventCoverFilesStub{files: map[string]bool{}}
failed := errors.New(failure + " failed")
called := false
fetch := func(context.Context, string) (string, []byte, error) {
called = true
if failure == "download" {
return "", nil, failed
}
return "image/jpeg", []byte("image"), nil
}
if failure == "read" {
files.readErr = failed
}
if failure == "save" {
files.saveErr = failed
}
items := []creator.ListenerDelivery{coverNotice()}
cacheListenerWorkCovers(context.Background(), files, fetch, items)
if items[0].Notice.WorkCoverError != failed.Error() || items[0].Notice.MessageText != "原内容" {
t.Fatalf("failure hidden: %+v", items)
}
if failure == "read" && called {
t.Fatal("filesystem failure concealed by download")
}
}
}