package httpbin import ( "fmt" "net/http" "net/http/httptest" "testing" "time" ) func TestNew(t *testing.T) { t.Parallel() h := New() if h.MaxBodySize != DefaultMaxBodySize { t.Fatalf("expected default MaxBodySize == %d, got %#v", DefaultMaxBodySize, h.MaxBodySize) } if h.MaxDuration != DefaultMaxDuration { t.Fatalf("expected default MaxDuration == %s, got %#v", DefaultMaxDuration, h.MaxDuration) } if h.Observer != nil { t.Fatalf("expected default Observer == nil, got %#v", h.Observer) } } func TestNewOptions(t *testing.T) { t.Parallel() maxDuration := 1 * time.Second maxBodySize := int64(1024) observer := func(_ Result) {} h := New( WithMaxBodySize(maxBodySize), WithMaxDuration(maxDuration), WithObserver(observer), ) if h.MaxBodySize != maxBodySize { t.Fatalf("expected MaxBodySize == %d, got %#v", maxBodySize, h.MaxBodySize) } if h.MaxDuration != maxDuration { t.Fatalf("expected MaxDuration == %s, got %#v", maxDuration, h.MaxDuration) } if h.Observer == nil { t.Fatalf("expected non-nil Observer") } } func TestNewObserver(t *testing.T) { t.Parallel() expectedStatus := http.StatusTeapot observed := false observer := func(r Result) { observed = true if r.Status != expectedStatus { t.Fatalf("expected result status = %d, got %d", expectedStatus, r.Status) } } h := New(WithObserver(observer)) r, _ := http.NewRequest("GET", fmt.Sprintf("/status/%d", expectedStatus), nil) w := httptest.NewRecorder() h.Handler().ServeHTTP(w, r) if observed == false { t.Fatalf("observer never called") } }