package sub import ( "net/http" "net/http/httptest" "strings" "testing" ) func TestDoFetchSubscriptionLinks_RejectsOversizedBody(t *testing.T) { srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { _, _ = w.Write([]byte(strings.Repeat("a", subscriptionMaxBytes+1))) })) defer srv.Close() links, err := doFetchSubscriptionLinks(srv.URL) if err != errSubscriptionBodyTooLarge { t.Fatalf("err = %v, want errSubscriptionBodyTooLarge", err) } if links != nil { t.Fatalf("links = %v, want nil", links) } } func TestDoFetchSubscriptionLinks_AcceptsBodyAtLimit(t *testing.T) { link := "vless://example" body := link + "\n" + strings.Repeat("#", subscriptionMaxBytes-len(link)-1) if len(body) != subscriptionMaxBytes { t.Fatalf("fixture size = %d, want %d", len(body), subscriptionMaxBytes) } srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { _, _ = w.Write([]byte(body)) })) defer srv.Close() links, err := doFetchSubscriptionLinks(srv.URL) if err != nil { t.Fatalf("unexpected err: %v", err) } if len(links) != 1 || links[0] != link { t.Fatalf("links = %v, want [%q]", links, link) } }