func HTTPResponseShouldContainExpectedHTTPStatusCode(inputs *HTTPExampleInputs, expectedStatusCode int) { It(fmt.Sprint("returns HTTP ", expectedStatusCode), func() { code, _ := integration.ExecuteAuthenticatedHTTPRequest(inputs.Method, inputs.URI, brokerConfig.AuthConfiguration.Username, brokerConfig.AuthConfiguration.Password) Ω(code).To(Equal(expectedStatusCode)) }) }
func getDebugInfo() debug.Info { _, bodyBytes := integration.ExecuteAuthenticatedHTTPRequest("GET", "http://localhost:3000/debug", brokerConfig.AuthConfiguration.Username, brokerConfig.AuthConfiguration.Password) debugInfo := debug.Info{} err := json.Unmarshal(bodyBytes, &debugInfo) Ω(err).ShouldNot(HaveOccurred()) return debugInfo }
func HTTPResponseBodyShouldBeEmptyJSON(inputs *HTTPExampleInputs) { It("returns empty JSON", func() { _, body := integration.ExecuteAuthenticatedHTTPRequest(inputs.Method, inputs.URI, brokerConfig.AuthConfiguration.Username, brokerConfig.AuthConfiguration.Password) var parsedJSON map[string][]interface{} json.Unmarshal(body, &parsedJSON) Ω(parsedJSON).To(Equal(map[string][]interface{}{})) }) }
func HTTPResponseShouldContainBrokerErrorMessage(inputs *HTTPExampleInputs, expectedErrorMessage string) { It("returns the expected error message", func() { _, body := integration.ExecuteAuthenticatedHTTPRequest(inputs.Method, inputs.URI, brokerConfig.AuthConfiguration.Username, brokerConfig.AuthConfiguration.Password) var parsedJSON map[string]interface{} json.Unmarshal(body, &parsedJSON) errorMessage := parsedJSON["description"].(string) Ω(errorMessage).Should(Equal(expectedErrorMessage)) }) }
var _ = Describe("Agent Security", func() { var session *gexec.Session BeforeEach(func() { session = startAgent() }) AfterEach(func() { stopAgent(session) }) Describe("Basic HTTP Authentication", func() { Context("With expected username and password", func() { It("returns HTTP code 200", func() { code, _ := integration.ExecuteAuthenticatedHTTPRequest("GET", "http://localhost:9876", "admin", "supersecretpassword") Ω(code).To(Equal(200)) }) }) Context("With unexpected username and password", func() { It("returns HTTP code 401", func() { req, err := http.NewRequest("GET", "http://localhost:9876", nil) Ω(err).ToNot(HaveOccurred()) req.SetBasicAuth("admin", "badpassword") resp, err := http.DefaultClient.Do(req) Ω(err).ToNot(HaveOccurred()) Ω(resp.StatusCode).To(Equal(401)) })
package brokerintegration_test import ( "io/ioutil" "net/http" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" "github.com/pivotal-cf/cf-redis-broker/integration" ) var _ = Describe("Debug", func() { Context("when basic auth credentials are correct", func() { It("returns HTTP 200", func() { code, _ := integration.ExecuteAuthenticatedHTTPRequest("GET", "http://localhost:3000/debug", brokerConfig.AuthConfiguration.Username, brokerConfig.AuthConfiguration.Password) Ω(code).To(Equal(http.StatusOK)) }) It("returns JSON representing the debug information", func() { debugInfo := getDebugInfo() Ω(debugInfo.Pool.Count).Should(Equal(3)) Ω(debugInfo.Pool.Clusters).Should(ContainElement([]string{"server1.127.0.0.1.xip.io"})) Ω(debugInfo.Pool.Clusters).Should(ContainElement([]string{"server2.127.0.0.1.xip.io"})) Ω(debugInfo.Pool.Clusters).Should(ContainElement([]string{"server3.127.0.0.1.xip.io"})) Ω(len(debugInfo.Pool.Clusters)).Should(Equal(3)) }) Context("recycling instances", func() { var host string