49 lines
914 B
Go
49 lines
914 B
Go
|
package server
|
||
|
|
||
|
import (
|
||
|
"net/http"
|
||
|
"net/http/httptest"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func TestWriteResponseWithBody(t *testing.T) {
|
||
|
type Foo struct {
|
||
|
Bar string `json:"bar"`
|
||
|
}
|
||
|
|
||
|
tests := []struct {
|
||
|
code int
|
||
|
obj interface{}
|
||
|
wantCode int
|
||
|
wantBody string
|
||
|
}{
|
||
|
// unserializable
|
||
|
{
|
||
|
code: http.StatusTeapot,
|
||
|
obj: make(chan bool),
|
||
|
wantCode: http.StatusInternalServerError,
|
||
|
},
|
||
|
// serializable
|
||
|
{
|
||
|
code: http.StatusTeapot,
|
||
|
obj: Foo{"asdf"},
|
||
|
wantCode: http.StatusTeapot,
|
||
|
wantBody: `{"bar":"asdf"}`,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for i, tt := range tests {
|
||
|
w := httptest.NewRecorder()
|
||
|
writeResponseWithBody(w, tt.code, tt.obj)
|
||
|
|
||
|
if tt.wantCode != w.Code {
|
||
|
t.Fatalf("case %d: incorrect status code: want=%d got=%d", i, tt.wantCode, w.Code)
|
||
|
}
|
||
|
|
||
|
body := w.Body.String()
|
||
|
if tt.wantBody != body {
|
||
|
t.Fatalf("case %d: incorrect body: want=%s got=%s", i, tt.wantBody, body)
|
||
|
}
|
||
|
}
|
||
|
}
|