dex/server/serialization_test.go
2015-08-18 11:26:57 -07:00

48 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)
}
}
}