Merge pull request #65 from Amit-PivotalLabs/ccc
Add CloseClientConnections function to ghttp
diff --git a/ghttp/test_server.go b/ghttp/test_server.go
index 2748fea..71cd341 100644
--- a/ghttp/test_server.go
+++ b/ghttp/test_server.go
@@ -172,6 +172,9 @@
//Close() should be called at the end of each test. It spins down and cleans up the test server.
func (s *Server) Close() {
+ s.writeLock.Lock()
+ defer s.writeLock.Unlock()
+
server := s.HTTPTestServer
s.HTTPTestServer = nil
server.Close()
@@ -305,3 +308,10 @@
existingHandler := s.GetHandler(index)
s.SetHandler(index, CombineHandlers(existingHandler, handler))
}
+
+func (s *Server) CloseClientConnections() {
+ s.writeLock.Lock()
+ defer s.writeLock.Unlock()
+
+ s.HTTPTestServer.CloseClientConnections()
+}
diff --git a/ghttp/test_server_test.go b/ghttp/test_server_test.go
index d992fb4..68ff0d4 100644
--- a/ghttp/test_server_test.go
+++ b/ghttp/test_server_test.go
@@ -5,6 +5,7 @@
"io/ioutil"
"net/http"
"regexp"
+
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
. "github.com/onsi/gomega/ghttp"
@@ -25,6 +26,32 @@
s.Close()
})
+ Describe("closing client connections", func() {
+ It("closes", func() {
+ s.AppendHandlers(
+ func(w http.ResponseWriter, req *http.Request) {
+ w.Write([]byte("hello"))
+ },
+ func(w http.ResponseWriter, req *http.Request) {
+ s.CloseClientConnections()
+ },
+ )
+
+ resp, err := http.Get(s.URL())
+ Ω(err).ShouldNot(HaveOccurred())
+ Ω(resp.StatusCode).Should(Equal(200))
+
+ body, err := ioutil.ReadAll(resp.Body)
+ resp.Body.Close()
+ Ω(err).ShouldNot(HaveOccurred())
+ Ω(body).Should(Equal([]byte("hello")))
+
+ resp, err = http.Get(s.URL())
+ Ω(err).Should(HaveOccurred())
+ Ω(resp).Should(BeNil())
+ })
+ })
+
Describe("allowing unhandled requests", func() {
Context("when true", func() {
BeforeEach(func() {