1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- package restful
- import (
- "net/http"
- "net/http/httptest"
- "testing"
- )
- // go test -v -test.run TestContainer_computeAllowedMethods ...restful
- func TestContainer_computeAllowedMethods(t *testing.T) {
- wc := NewContainer()
- ws1 := new(WebService).Path("/users")
- ws1.Route(ws1.GET("{i}").To(dummy))
- ws1.Route(ws1.POST("{i}").To(dummy))
- wc.Add(ws1)
- httpRequest, _ := http.NewRequest("GET", "http://api.his.com/users/1", nil)
- rreq := Request{Request: httpRequest}
- m := wc.computeAllowedMethods(&rreq)
- if len(m) != 2 {
- t.Errorf("got %d expected 2 methods, %v", len(m), m)
- }
- }
- func TestContainer_HandleWithFilter(t *testing.T) {
- prefilterCalled := false
- postfilterCalled := false
- httpHandlerCalled := false
- wc := NewContainer()
- wc.Filter(func(request *Request, response *Response, chain *FilterChain) {
- prefilterCalled = true
- chain.ProcessFilter(request, response)
- })
- wc.HandleWithFilter("/", http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
- httpHandlerCalled = true
- w.Write([]byte("ok"))
- }))
- wc.Filter(func(request *Request, response *Response, chain *FilterChain) {
- postfilterCalled = true
- chain.ProcessFilter(request, response)
- })
- recorder := httptest.NewRecorder()
- request, _ := http.NewRequest("GET", "/", nil)
- wc.ServeHTTP(recorder, request)
- if recorder.Code != http.StatusOK {
- t.Errorf("unexpected code %d", recorder.Code)
- }
- if recorder.Body.String() != "ok" {
- t.Errorf("unexpected body %s", recorder.Body.String())
- }
- if !prefilterCalled {
- t.Errorf("filter added before calling HandleWithFilter wasn't called")
- }
- if !postfilterCalled {
- t.Errorf("filter added after calling HandleWithFilter wasn't called")
- }
- if !httpHandlerCalled {
- t.Errorf("handler added by calling HandleWithFilter wasn't called")
- }
- }
- func TestContainerAddAndRemove(t *testing.T) {
- ws1 := new(WebService).Path("/")
- ws2 := new(WebService).Path("/users")
- wc := NewContainer()
- wc.Add(ws1)
- wc.Add(ws2)
- wc.Remove(ws2)
- if len(wc.webServices) != 1 {
- t.Errorf("expected one webservices")
- }
- if !wc.isRegisteredOnRoot {
- t.Errorf("expected on root registered")
- }
- wc.Remove(ws1)
- if len(wc.webServices) > 0 {
- t.Errorf("expected zero webservices")
- }
- if wc.isRegisteredOnRoot {
- t.Errorf("expected not on root registered")
- }
- }
|