Allow the ghttp server to be reset
There are cases were we want to start one http server in BeforeSuite and
reset its handlers & state between tests
Signed-off-by: Topher Bullock <cbullock@pivotal.io>
diff --git a/ghttp/test_server.go b/ghttp/test_server.go
index fde65be..f5f537e 100644
--- a/ghttp/test_server.go
+++ b/ghttp/test_server.go
@@ -349,6 +349,17 @@
return s.requestHandlers[index]
}
+func (s *Server) Reset() {
+ s.writeLock.Lock()
+ defer s.writeLock.Unlock()
+
+ s.HTTPTestServer.CloseClientConnections()
+ s.calls = 0
+ s.receivedRequests = nil
+ s.requestHandlers = nil
+ s.routedHandlers = nil
+}
+
//WrapHandler combines the passed in handler with the handler registered at the passed in index.
//This is useful, for example, when a server has been set up in a shared context but must be tweaked
//for a particular test.
diff --git a/ghttp/test_server_test.go b/ghttp/test_server_test.go
index 292b51d..79f3825 100644
--- a/ghttp/test_server_test.go
+++ b/ghttp/test_server_test.go
@@ -31,6 +31,22 @@
s.Close()
})
+ Describe("Resetting the server", func() {
+ BeforeEach(func() {
+ s.RouteToHandler("GET", "/", func(w http.ResponseWriter, req *http.Request) {})
+ s.AppendHandlers(func(w http.ResponseWriter, req *http.Request) {})
+ http.Get(s.URL() + "/")
+
+ Ω(s.ReceivedRequests()).Should(HaveLen(1))
+ })
+
+ It("clears all handlers and call counts", func() {
+ s.Reset()
+ Ω(s.ReceivedRequests()).Should(HaveLen(0))
+ Ω(func() {s.GetHandler(0)}).Should(Panic())
+ })
+ })
+
Describe("closing client connections", func() {
It("closes", func() {
s.AppendHandlers(