Files
huangguo_server/app/service/mediacontentser/drama_access_test.go
T
rootandClaude Opus 5 8679200f41 Initial commit
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 13:57:10 +08:00

53 lines
1.9 KiB
Go

package mediacontentser
import (
"bytes"
"encoding/json"
"testing"
"91porn-server/models/v/mediacontentmod"
"91porn-server/models/v/mediamod"
)
func TestDramaResponsesDoNotExposeServerProgress(t *testing.T) {
tests := map[string]any{
"media": mediamod.AppMediaBase{},
"episode list": AppMediaContent{},
"episode info": MediaContentInfo{},
}
for name, response := range tests {
data, err := json.Marshal(response)
if err != nil {
t.Fatalf("marshal %s response: %v", name, err)
}
if bytes.Contains(data, []byte(`"resume"`)) || bytes.Contains(data, []byte(`"progressSeconds"`)) {
t.Fatalf("%s response still exposes server progress: %s", name, data)
}
}
}
func TestResolveDramaAccess(t *testing.T) {
media := mediamod.Media{FreeEpisode: 1}
tests := []struct {
name string
content mediacontentmod.MediaContent
hasBuy bool
hasCard bool
wantCan bool
wantAccess string
}{
{name: "free episode", content: mediacontentmod.MediaContent{EpisodeNumber: 1, Price: 30, ListenPermission: 1}, wantCan: true, wantAccess: dramaAccessFree},
{name: "bought episode", content: mediacontentmod.MediaContent{EpisodeNumber: 2, Price: 30, ListenPermission: 1}, hasBuy: true, wantCan: true, wantAccess: dramaAccessBought},
{name: "card episode", content: mediacontentmod.MediaContent{EpisodeNumber: 2, Price: 30, ListenPermission: 1}, hasCard: true, wantCan: true, wantAccess: dramaAccessCard},
{name: "locked episode", content: mediacontentmod.MediaContent{EpisodeNumber: 2, Price: 30, ListenPermission: 1}, wantCan: false, wantAccess: dramaAccessCoin},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
_, canPlay, accessType := ResolveDramaAccess(tt.content, media, tt.hasBuy, tt.hasCard)
if canPlay != tt.wantCan || accessType != tt.wantAccess {
t.Fatalf("ResolveDramaAccess() = (%v, %q), want (%v, %q)", canPlay, accessType, tt.wantCan, tt.wantAccess)
}
})
}
}