85 lines
2.1 KiB
Go
85 lines
2.1 KiB
Go
package starnet
|
|
|
|
import (
|
|
"errors"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
)
|
|
|
|
func TestWithMaxRespBodyBytes(t *testing.T) {
|
|
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
_, _ = w.Write([]byte("123456"))
|
|
}))
|
|
defer server.Close()
|
|
|
|
resp, err := Get(server.URL, WithMaxRespBodyBytes(4))
|
|
if err != nil {
|
|
t.Fatalf("unexpected request error: %v", err)
|
|
}
|
|
defer resp.Close()
|
|
|
|
_, err = resp.Body().Bytes()
|
|
if err == nil {
|
|
t.Fatal("expected body too large error")
|
|
}
|
|
if !errors.Is(err, ErrRespBodyTooLarge) {
|
|
t.Fatalf("expected ErrRespBodyTooLarge, got: %v", err)
|
|
}
|
|
}
|
|
|
|
func TestSetMaxRespBodyBytes(t *testing.T) {
|
|
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
_, _ = w.Write([]byte("1234"))
|
|
}))
|
|
defer server.Close()
|
|
|
|
resp, err := NewSimpleRequest(server.URL, http.MethodGet).
|
|
SetMaxRespBodyBytes(4).
|
|
Do()
|
|
if err != nil {
|
|
t.Fatalf("unexpected error: %v", err)
|
|
}
|
|
defer resp.Close()
|
|
|
|
body, err := resp.Body().String()
|
|
if err != nil {
|
|
t.Fatalf("unexpected read error: %v", err)
|
|
}
|
|
if body != "1234" {
|
|
t.Fatalf("body=%q want=1234", body)
|
|
}
|
|
}
|
|
|
|
func TestSetMaxRespBodyBytesWithAutoFetch(t *testing.T) {
|
|
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
_, _ = w.Write([]byte("123456"))
|
|
}))
|
|
defer server.Close()
|
|
|
|
_, err := NewSimpleRequest(server.URL, http.MethodGet).
|
|
SetAutoFetch(true).
|
|
SetMaxRespBodyBytes(4).
|
|
Do()
|
|
if err == nil {
|
|
t.Fatal("expected body too large error with auto fetch")
|
|
}
|
|
if !errors.Is(err, ErrRespBodyTooLarge) {
|
|
t.Fatalf("expected ErrRespBodyTooLarge, got: %v", err)
|
|
}
|
|
}
|
|
|
|
func TestSetMaxRespBodyBytesInvalid(t *testing.T) {
|
|
req := NewSimpleRequest("http://example.com", http.MethodGet).SetMaxRespBodyBytes(-1)
|
|
if req.Err() == nil {
|
|
t.Fatal("expected error for negative max bytes")
|
|
}
|
|
}
|
|
|
|
func TestWithMaxRespBodyBytesInvalid(t *testing.T) {
|
|
_, err := NewRequest("http://example.com", http.MethodGet, WithMaxRespBodyBytes(-1))
|
|
if err == nil {
|
|
t.Fatal("expected error for negative max bytes")
|
|
}
|
|
}
|