package service import ( "context" "net/http" "net/http/httptest" "testing" "go.uber.org/zap" "github.com/ShukeBta/MediaStationGo/internal/model" "github.com/ShukeBta/MediaStationGo/internal/repository" ) func TestNormalizeAdultCode(t *testing.T) { cases := map[string]string{ "SSIS001.mp4": "SSIS-001", "fc2-ppv-1234567.mkv": "FC2-PPV-1234567", "heyzo_1234.mp4": "HEYZO-1234", "120118_001-carib.mp4": "120118-001", "movie.1080p.x264.mkv": "", } for in, want := range cases { if got := normalizeAdultCode(in); got != want { t.Fatalf("normalizeAdultCode(%q) = %q, want %q", in, got, want) } } } func TestParseAdultDetailHTML(t *testing.T) { html := `
4.7
`))
default:
http.NotFound(w, r)
}
}))
defer good.Close()
db := newServiceTestDB(t, &model.APIConfig{})
apiConfig := NewAPIConfigService(zap.NewNop(), repository.New(db), NewCryptoService("", zap.NewNop()))
baseURL := bad.URL + "\n" + good.URL
if _, err := apiConfig.Update(context.Background(), "adult", APIConfigPatch{BaseURL: &baseURL}); err != nil {
t.Fatal(err)
}
provider := NewAdultProvider(zap.NewNop(), apiConfig)
match, err := provider.Search(context.Background(), "SSIS-001")
if err != nil {
t.Fatal(err)
}
if match == nil || match.Title != "多源命中标题" || match.OriginalName != "SSIS-001" || !match.NSFW {
t.Fatalf("multi-source adult match = %+v", match)
}
}
func TestAdultSourceKindRecognizesJavBusMirrors(t *testing.T) {
cases := map[string]string{
"https://javdb.com": "javdb",
"https://javbus.sbs": "javbus",
"https://www.javbus.com": "javbus",
"https://www.cdnbus.cyou": "javbus",
"https://www.javsee.cyou": "javbus",
"https://www.busjav.cyou": "javbus",
"www.cdnbus.cyou": "javbus",
"https://example.invalid": "javdb",
}
for in, want := range cases {
if got := adultSourceKind(in); got != want {
t.Fatalf("adultSourceKind(%q) = %q, want %q", in, got, want)
}
}
}
func TestAdultProviderDefaultBases(t *testing.T) {
provider := &AdultProvider{}
got := provider.resolveBases(context.Background())
want := []string{
"https://javdb.com",
"https://javbus.sbs",
"https://www.javbus.com",
"https://www.cdnbus.cyou",
"https://www.javsee.cyou",
"https://www.busjav.cyou",
}
if len(got) != len(want) {
t.Fatalf("resolveBases len = %d, want %d: %v", len(got), len(want), got)
}
for i := range want {
if got[i] != want[i] {
t.Fatalf("resolveBases[%d] = %q, want %q", i, got[i], want[i])
}
}
}