github.com/nimakaviani/cli@v6.37.1-0.20180619223813-e734901a73fa+incompatible/integration/helpers/fake_server.go (about) 1 package helpers 2 3 import ( 4 "fmt" 5 "net/http" 6 7 . "github.com/onsi/gomega" 8 . "github.com/onsi/gomega/gexec" 9 . "github.com/onsi/gomega/ghttp" 10 ) 11 12 const ( 13 DefaultV2Version string = "2.100.0" 14 DefaultV3Version string = "3.33.3" 15 ) 16 17 func StartAndTargetServerWithoutV3API() *Server { 18 server := NewTLSServer() 19 server.AppendHandlers( 20 CombineHandlers( 21 VerifyRequest(http.MethodGet, "/v2/info"), 22 RespondWith(http.StatusOK, `{"api_version":"2.34.0"}`), 23 ), 24 CombineHandlers( 25 VerifyRequest(http.MethodGet, "/"), 26 RespondWith(http.StatusNotFound, "{}"), 27 ), 28 ) 29 30 Eventually(CF("api", server.URL(), "--skip-ssl-validation")).Should(Exit(0)) 31 return server 32 } 33 34 func StartAndTargetServerWithAPIVersions(v2Version string, v3Version string) *Server { 35 server := NewTLSServer() 36 37 rootResponse := fmt.Sprintf(`{ 38 "links": { 39 "self": { 40 "href": "%[1]s" 41 }, 42 "cloud_controller_v2": { 43 "href": "%[1]s/v2", 44 "meta": { 45 "version": "%[2]s" 46 } 47 }, 48 "cloud_controller_v3": { 49 "href": "%[1]s/v3", 50 "meta": { 51 "version": "%[3]s" 52 } 53 }, 54 "network_policy_v0": { 55 "href": "%[1]s/networking/v0/external" 56 }, 57 "network_policy_v1": { 58 "href": "%[1]s/networking/v1/external" 59 }, 60 "uaa": { 61 "href": "%[1]s" 62 }, 63 "logging": { 64 "href": "wss://unused:443" 65 }, 66 "app_ssh": { 67 "href": "unused:2222", 68 "meta": { 69 "host_key_fingerprint": "unused", 70 "oauth_client": "ssh-proxy" 71 } 72 } 73 } 74 }`, server.URL(), v2Version, v3Version) 75 76 v2InfoResponse := fmt.Sprintf(`{ 77 "api_version":"%[1]s", 78 "authorization_endpoint": "%[2]s" 79 }`, v2Version, server.URL()) 80 81 server.RouteToHandler(http.MethodGet, "/v2/info", func(res http.ResponseWriter, req *http.Request) { 82 res.WriteHeader(http.StatusOK) 83 res.Write([]byte(v2InfoResponse)) 84 }) 85 server.RouteToHandler(http.MethodGet, "/v3", func(res http.ResponseWriter, req *http.Request) { 86 res.WriteHeader(http.StatusOK) 87 res.Write([]byte(`{"links":{}}`)) 88 }) 89 server.RouteToHandler(http.MethodGet, "/login", func(res http.ResponseWriter, req *http.Request) { 90 res.WriteHeader(http.StatusOK) 91 res.Write([]byte(`{"links":{}}`)) 92 }) 93 server.RouteToHandler(http.MethodGet, "/", func(res http.ResponseWriter, req *http.Request) { 94 res.WriteHeader(http.StatusOK) 95 res.Write([]byte(rootResponse)) 96 }) 97 98 Eventually(CF("api", server.URL(), "--skip-ssl-validation")).Should(Exit(0)) 99 return server 100 }