github.com/liamawhite/cli-with-i18n@v6.32.1-0.20171122084555-dede0a5c3448+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  func StartAndTargetServerWithoutV3API() *Server {
    13  	server := NewTLSServer()
    14  	server.AppendHandlers(
    15  		CombineHandlers(
    16  			VerifyRequest(http.MethodGet, "/v2/info"),
    17  			RespondWith(http.StatusOK, `{"api_version":"2.34.0"}`),
    18  		),
    19  		CombineHandlers(
    20  			VerifyRequest(http.MethodGet, "/"),
    21  			RespondWith(http.StatusNotFound, "{}"),
    22  		),
    23  	)
    24  
    25  	Eventually(CF("api", server.URL(), "--skip-ssl-validation")).Should(Exit(0))
    26  	return server
    27  }
    28  
    29  func StartAndTargetServerWithV3Version(v3Version string) *Server {
    30  	server := NewTLSServer()
    31  
    32  	rootResponse := fmt.Sprintf(`{
    33     "links": {
    34        "self": {
    35           "href": "%[1]s"
    36        },
    37        "cloud_controller_v2": {
    38           "href": "%[1]s/v2",
    39           "meta": {
    40              "version": "2.94.0"
    41           }
    42        },
    43        "cloud_controller_v3": {
    44           "href": "%[1]s/v3",
    45           "meta": {
    46              "version": "%[2]s"
    47           }
    48        },
    49        "network_policy_v0": {
    50           "href": "%[1]s/networking/v0/external"
    51        },
    52        "network_policy_v1": {
    53           "href": "%[1]s/networking/v1/external"
    54        },
    55        "uaa": {
    56           "href": "%[1]s"
    57        },
    58        "logging": {
    59           "href": "wss://unused:443"
    60        },
    61        "app_ssh": {
    62           "href": "unused:2222",
    63           "meta": {
    64              "host_key_fingerprint": "unused",
    65              "oauth_client": "ssh-proxy"
    66           }
    67        }
    68     }
    69   }`, server.URL(), v3Version)
    70  
    71  	v2InfoResponse := fmt.Sprintf(`{
    72  		"api_version":"2.34.0",
    73  		"authorization_endpoint": "%[1]s"
    74    }`, server.URL())
    75  
    76  	server.RouteToHandler(http.MethodGet, "/v2/info", func(res http.ResponseWriter, req *http.Request) {
    77  		res.WriteHeader(http.StatusOK)
    78  		res.Write([]byte(v2InfoResponse))
    79  	})
    80  	server.RouteToHandler(http.MethodGet, "/v3", func(res http.ResponseWriter, req *http.Request) {
    81  		res.WriteHeader(http.StatusOK)
    82  		res.Write([]byte(`{"links":{}}`))
    83  	})
    84  	server.RouteToHandler(http.MethodGet, "/login", func(res http.ResponseWriter, req *http.Request) {
    85  		res.WriteHeader(http.StatusOK)
    86  		res.Write([]byte(`{"links":{}}`))
    87  	})
    88  	server.RouteToHandler(http.MethodGet, "/", func(res http.ResponseWriter, req *http.Request) {
    89  		res.WriteHeader(http.StatusOK)
    90  		res.Write([]byte(rootResponse))
    91  	})
    92  
    93  	Eventually(CF("api", server.URL(), "--skip-ssl-validation")).Should(Exit(0))
    94  	return server
    95  }