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