Skip to content
Find file
5233dc7
86 lines (72 sloc) 2.47 KB
package lion
import (
"net/http"
"net/http/httptest"
"testing"
"golang.org/x/net/context"
)
type testResource struct{}
func (tr testResource) Uses() Middlewares { return Middlewares{} }
func (tr testResource) GetMiddlewares() Middlewares {
return Middlewares{MiddlewareFunc(func(next Handler) Handler {
return HandlerFunc(func(c context.Context, w http.ResponseWriter, r *http.Request) {
w.Header().Set("foo", "Get")
next.ServeHTTPC(c, w, r)
})
})}
}
func (tr testResource) PostMiddlewares() Middlewares {
return Middlewares{MiddlewareFunc(func(next Handler) Handler {
return HandlerFunc(func(c context.Context, w http.ResponseWriter, r *http.Request) {
w.Header().Set("foo", "Post")
next.ServeHTTPC(c, w, r)
})
})}
}
func (tr testResource) PutMiddlewares() Middlewares {
return Middlewares{MiddlewareFunc(func(next Handler) Handler {
return HandlerFunc(func(c context.Context, w http.ResponseWriter, r *http.Request) {
w.Header().Set("foo", "Put")
next.ServeHTTPC(c, w, r)
})
})}
}
func (tr testResource) DeleteMiddlewares() Middlewares {
return Middlewares{MiddlewareFunc(func(next Handler) Handler {
return HandlerFunc(func(c context.Context, w http.ResponseWriter, r *http.Request) {
w.Header().Set("foo", "Delete")
next.ServeHTTPC(c, w, r)
})
})}
}
func (tr testResource) Get(c context.Context, w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Get"))
}
func (tr testResource) Post(c context.Context, w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Post"))
}
func (tr testResource) Put(c context.Context, w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Put"))
}
func (tr testResource) Delete(c context.Context, w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Delete"))
}
func TestResources(t *testing.T) {
methods := []string{"GET", "POST", "PUT", "DELETE"}
expected := []string{"Get", "Post", "Put", "Delete"}
tr := testResource{}
// hfuncs := []HandlerFunc{tr.Get, tr.Post, tr.Put, tr.Delete}
r := New()
r.Resource("/testpath", tr)
for i := 0; i < len(methods); i++ {
w := httptest.NewRecorder()
req, _ := http.NewRequest(methods[i], "/testpath", nil)
r.ServeHTTP(w, req)
if w.Body.String() != expected[i] {
t.Errorf("[Resource] Expected body %s but got %s for http method %s", expected[i], w.Body.String(), methods[i])
}
if w.Header().Get("foo") != expected[i] {
t.Errorf("[Resource] Expected header %s but got %s for http method %s", expected[i], w.Header().Get("foo"), methods[i])
}
}
}
Something went wrong with that request. Please try again.