| package web |
|
|
| import ( |
| "fmt" |
| "net/http" |
| "net/http/httptest" |
| "testing" |
| ) |
|
|
| func TestStatusWriter(t *testing.T) { |
| w := httptest.NewRecorder() |
| sw := &StatusWriter{ResponseWriter: w, Code: 200} |
|
|
| sw.WriteHeader(http.StatusNotFound) |
| if sw.Code != http.StatusNotFound { |
| t.Errorf("expected Code 404, got %d", sw.Code) |
| } |
| if w.Code != http.StatusNotFound { |
| t.Errorf("expected recorded code 404, got %d", w.Code) |
| } |
|
|
| |
| w2 := httptest.NewRecorder() |
| sw2 := &StatusWriter{ResponseWriter: w2, Code: 200} |
| _, _ = sw2.Write([]byte("ok")) |
| if sw2.Code != 200 { |
| t.Errorf("expected default code 200, got %d", sw2.Code) |
| } |
| } |
|
|
| func TestJSON(t *testing.T) { |
| w := httptest.NewRecorder() |
| data := map[string]string{"foo": "bar"} |
| JSON(w, http.StatusCreated, data) |
|
|
| if w.Code != http.StatusCreated { |
| t.Errorf("expected status 201, got %d", w.Code) |
| } |
| if ct := w.Header().Get("Content-Type"); ct != "application/json" { |
| t.Errorf("expected content-type application/json, got %q", ct) |
| } |
| expectedBody := `{"foo":"bar"}` + "\n" |
| if w.Body.String() != expectedBody { |
| t.Errorf("expected body %q, got %q", expectedBody, w.Body.String()) |
| } |
| } |
|
|
| func TestError(t *testing.T) { |
| w := httptest.NewRecorder() |
| err := fmt.Errorf("bad request") |
| Error(w, http.StatusBadRequest, err) |
|
|
| if w.Code != http.StatusBadRequest { |
| t.Errorf("expected status 400, got %d", w.Code) |
| } |
| expectedBody := `{"code":"error","error":"bad request"}` + "\n" |
| if w.Body.String() != expectedBody { |
| t.Errorf("expected body %q, got %q", expectedBody, w.Body.String()) |
| } |
| } |
|
|