warp_response_test.go 868 B

123456789101112131415161718192021222324252627282930313233343536
  1. package integration
  2. import (
  3. "bytes"
  4. "net/http"
  5. "net/http/httptest"
  6. "path/filepath"
  7. "testing"
  8. "github.com/mhsanaei/3x-ui/v3/internal/database/dbtest"
  9. )
  10. func TestDoWarpRequestCapsResponseBody(t *testing.T) {
  11. dbtest.InitDB(t, filepath.Join(t.TempDir(), "x-ui.db"))
  12. oversize := maxResponseSize + 4096
  13. srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
  14. w.WriteHeader(http.StatusOK)
  15. _, _ = w.Write(bytes.Repeat([]byte("a"), oversize))
  16. }))
  17. defer srv.Close()
  18. s := &WarpService{}
  19. req, err := http.NewRequest(http.MethodGet, srv.URL, nil)
  20. if err != nil {
  21. t.Fatalf("NewRequest: %v", err)
  22. }
  23. body, err := s.doWarpRequest(req)
  24. if err != nil {
  25. t.Fatalf("doWarpRequest: %v", err)
  26. }
  27. if len(body) != maxResponseSize {
  28. t.Fatalf("response body not capped: got %d bytes, want %d", len(body), maxResponseSize)
  29. }
  30. }