Allow multiple http requests * Unlock once we have completed the book keeping on requests
diff --git a/ghttp/test_server.go b/ghttp/test_server.go index 07a2bb3..2748fea 100644 --- a/ghttp/test_server.go +++ b/ghttp/test_server.go
@@ -112,6 +112,7 @@ "reflect" "regexp" "sync" + . "github.com/onsi/gomega" ) @@ -186,17 +187,21 @@ // b) If AllowUnhandledRequests is false, the request will not be handled and the current test will be marked as failed. func (s *Server) ServeHTTP(w http.ResponseWriter, req *http.Request) { s.writeLock.Lock() - defer s.writeLock.Unlock() defer func() { recover() }() + s.receivedRequests = append(s.receivedRequests, req) if routedHandler, ok := s.handlerForRoute(req.Method, req.URL.Path); ok { + s.writeLock.Unlock() routedHandler(w, req) } else if s.calls < len(s.requestHandlers) { - s.requestHandlers[s.calls](w, req) + h := s.requestHandlers[s.calls] s.calls++ + s.writeLock.Unlock() + h(w, req) } else { + s.writeLock.Unlock() if s.AllowUnhandledRequests { ioutil.ReadAll(req.Body) req.Body.Close() @@ -205,7 +210,6 @@ Ω(req).Should(BeNil(), "Received Unhandled Request") } } - s.receivedRequests = append(s.receivedRequests, req) } //ReceivedRequests is an array containing all requests received by the server (both handled and unhandled requests)