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  }