|
|
|
|
@ -71,7 +71,7 @@ func TestNewJSONHandler(t *testing.T) { |
|
|
|
|
return d |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
h21 := JSONHandlerFunc(func(r *http.Request) (int, interface{}, error) { |
|
|
|
|
h21 := JSONHandlerFunc(func(r *http.Request) (int, any, error) { |
|
|
|
|
return http.StatusOK, nil, nil |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
@ -83,7 +83,7 @@ func TestNewJSONHandler(t *testing.T) { |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
t.Run("403 HTTPError", func(t *testing.T) { |
|
|
|
|
h := JSONHandlerFunc(func(r *http.Request) (int, interface{}, error) { |
|
|
|
|
h := JSONHandlerFunc(func(r *http.Request) (int, any, error) { |
|
|
|
|
return 0, nil, Error(http.StatusForbidden, "forbidden", nil) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
@ -93,7 +93,7 @@ func TestNewJSONHandler(t *testing.T) { |
|
|
|
|
checkStatus(t, w, "error", http.StatusForbidden) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
h22 := JSONHandlerFunc(func(r *http.Request) (int, interface{}, error) { |
|
|
|
|
h22 := JSONHandlerFunc(func(r *http.Request) (int, any, error) { |
|
|
|
|
return http.StatusOK, &Data{Name: "tailscale"}, nil |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
@ -104,7 +104,7 @@ func TestNewJSONHandler(t *testing.T) { |
|
|
|
|
checkStatus(t, w, "success", http.StatusOK) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
h31 := JSONHandlerFunc(func(r *http.Request) (int, interface{}, error) { |
|
|
|
|
h31 := JSONHandlerFunc(func(r *http.Request) (int, any, error) { |
|
|
|
|
body := new(Data) |
|
|
|
|
if err := json.NewDecoder(r.Body).Decode(body); err != nil { |
|
|
|
|
return 0, nil, Error(http.StatusBadRequest, err.Error(), err) |
|
|
|
|
@ -140,7 +140,7 @@ func TestNewJSONHandler(t *testing.T) { |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
h32 := JSONHandlerFunc(func(r *http.Request) (int, interface{}, error) { |
|
|
|
|
h32 := JSONHandlerFunc(func(r *http.Request) (int, any, error) { |
|
|
|
|
body := new(Data) |
|
|
|
|
if err := json.NewDecoder(r.Body).Decode(body); err != nil { |
|
|
|
|
return 0, nil, Error(http.StatusBadRequest, err.Error(), err) |
|
|
|
|
@ -187,7 +187,7 @@ func TestNewJSONHandler(t *testing.T) { |
|
|
|
|
r := httptest.NewRequest("POST", "/", strings.NewReader(`{"Price": 10}`)) |
|
|
|
|
r.Header.Set("Accept-Encoding", "gzip") |
|
|
|
|
value := []string{"foo", "foo", "foo"} |
|
|
|
|
JSONHandlerFunc(func(r *http.Request) (int, interface{}, error) { |
|
|
|
|
JSONHandlerFunc(func(r *http.Request) (int, any, error) { |
|
|
|
|
return 400, value, nil |
|
|
|
|
}).ServeHTTPReturn(w, r) |
|
|
|
|
res := w.Result() |
|
|
|
|
@ -222,7 +222,7 @@ func TestNewJSONHandler(t *testing.T) { |
|
|
|
|
t.Run("500 misuse", func(t *testing.T) { |
|
|
|
|
w := httptest.NewRecorder() |
|
|
|
|
r := httptest.NewRequest("POST", "/", nil) |
|
|
|
|
JSONHandlerFunc(func(r *http.Request) (int, interface{}, error) { |
|
|
|
|
JSONHandlerFunc(func(r *http.Request) (int, any, error) { |
|
|
|
|
return http.StatusOK, make(chan int), nil |
|
|
|
|
}).ServeHTTPReturn(w, r) |
|
|
|
|
resp := checkStatus(t, w, "error", http.StatusInternalServerError) |
|
|
|
|
@ -234,7 +234,7 @@ func TestNewJSONHandler(t *testing.T) { |
|
|
|
|
t.Run("500 empty status code", func(t *testing.T) { |
|
|
|
|
w := httptest.NewRecorder() |
|
|
|
|
r := httptest.NewRequest("POST", "/", nil) |
|
|
|
|
JSONHandlerFunc(func(r *http.Request) (status int, data interface{}, err error) { |
|
|
|
|
JSONHandlerFunc(func(r *http.Request) (status int, data any, err error) { |
|
|
|
|
return |
|
|
|
|
}).ServeHTTPReturn(w, r) |
|
|
|
|
checkStatus(t, w, "error", http.StatusInternalServerError) |
|
|
|
|
@ -243,7 +243,7 @@ func TestNewJSONHandler(t *testing.T) { |
|
|
|
|
t.Run("403 forbidden, status returned by JSONHandlerFunc and HTTPError agree", func(t *testing.T) { |
|
|
|
|
w := httptest.NewRecorder() |
|
|
|
|
r := httptest.NewRequest("POST", "/", nil) |
|
|
|
|
JSONHandlerFunc(func(r *http.Request) (int, interface{}, error) { |
|
|
|
|
JSONHandlerFunc(func(r *http.Request) (int, any, error) { |
|
|
|
|
return http.StatusForbidden, nil, Error(http.StatusForbidden, "403 forbidden", nil) |
|
|
|
|
}).ServeHTTPReturn(w, r) |
|
|
|
|
want := &Response{ |
|
|
|
|
@ -260,7 +260,7 @@ func TestNewJSONHandler(t *testing.T) { |
|
|
|
|
t.Run("403 forbidden, status returned by JSONHandlerFunc and HTTPError do not agree", func(t *testing.T) { |
|
|
|
|
w := httptest.NewRecorder() |
|
|
|
|
r := httptest.NewRequest("POST", "/", nil) |
|
|
|
|
err := JSONHandlerFunc(func(r *http.Request) (int, interface{}, error) { |
|
|
|
|
err := JSONHandlerFunc(func(r *http.Request) (int, any, error) { |
|
|
|
|
return http.StatusInternalServerError, nil, Error(http.StatusForbidden, "403 forbidden", nil) |
|
|
|
|
}).ServeHTTPReturn(w, r) |
|
|
|
|
if !strings.HasPrefix(err.Error(), "[unexpected]") { |
|
|
|
|
|