github.com/sleungcy/cli@v7.1.0+incompatible/api/cloudcontroller/ccv3/ccv3_suite_test.go (about) 1 package ccv3_test 2 3 import ( 4 "bytes" 5 "log" 6 "net/http" 7 "strings" 8 9 . "code.cloudfoundry.org/cli/api/cloudcontroller/ccv3" 10 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv3/ccv3fakes" 11 . "github.com/onsi/ginkgo" 12 . "github.com/onsi/gomega" 13 . "github.com/onsi/gomega/ghttp" 14 15 "testing" 16 ) 17 18 func TestCcv3(t *testing.T) { 19 RegisterFailHandler(Fail) 20 RunSpecs(t, "Cloud Controller V3 Suite") 21 } 22 23 var server *Server 24 25 var _ = BeforeEach(func() { 26 server = NewTLSServer() 27 28 // Suppresses ginkgo server logs 29 server.HTTPTestServer.Config.ErrorLog = log.New(&bytes.Buffer{}, "", 0) 30 }) 31 32 var _ = AfterEach(func() { 33 server.Close() 34 }) 35 36 func NewFakeRequesterTestClient(requester Requester) (*Client, *ccv3fakes.FakeClock) { 37 var client *Client 38 fakeClock := new(ccv3fakes.FakeClock) 39 40 client = TestClient( 41 Config{AppName: "CF CLI API V3 Test", AppVersion: "Unknown"}, 42 fakeClock, 43 requester, 44 ) 45 46 return client, fakeClock 47 } 48 49 func NewTestClient(config ...Config) (*Client, *ccv3fakes.FakeClock) { 50 SetupV3Response() 51 var client *Client 52 fakeClock := new(ccv3fakes.FakeClock) 53 54 if config != nil { 55 client = TestClient(config[0], fakeClock, NewRequester(config[0])) 56 } else { 57 singleConfig := Config{AppName: "CF CLI API V3 Test", AppVersion: "Unknown"} 58 client = TestClient( 59 singleConfig, 60 fakeClock, 61 NewRequester(singleConfig), 62 ) 63 } 64 _, warnings, err := client.TargetCF(TargetSettings{ 65 SkipSSLValidation: true, 66 URL: server.URL(), 67 }) 68 Expect(err).ToNot(HaveOccurred()) 69 Expect(warnings).To(BeEmpty()) 70 71 return client, fakeClock 72 } 73 74 func SetupV3Response() { 75 serverURL := server.URL() 76 rootResponse := strings.Replace(`{ 77 "links": { 78 "self": { 79 "href": "SERVER_URL" 80 }, 81 "cloud_controller_v2": { 82 "href": "SERVER_URL/v2", 83 "meta": { 84 "version": "2.64.0" 85 } 86 }, 87 "cloud_controller_v3": { 88 "href": "SERVER_URL/v3", 89 "meta": { 90 "version": "3.0.0-alpha.5" 91 } 92 }, 93 "uaa": { 94 "href": "https://uaa.bosh-lite.com" 95 } 96 } 97 }`, "SERVER_URL", serverURL, -1) 98 99 server.AppendHandlers( 100 CombineHandlers( 101 VerifyRequest(http.MethodGet, "/"), 102 RespondWith(http.StatusOK, rootResponse), 103 ), 104 ) 105 106 v3Response := strings.Replace(`{ 107 "links": { 108 "self": { 109 "href": "SERVER_URL/v3" 110 }, 111 "apps": { 112 "href": "SERVER_URL/v3/apps" 113 }, 114 "tasks": { 115 "href": "SERVER_URL/v3/tasks" 116 }, 117 "isolation_segments": { 118 "href": "SERVER_URL/v3/isolation_segments" 119 }, 120 "builds": { 121 "href": "SERVER_URL/v3/builds" 122 }, 123 "organizations": { 124 "href": "SERVER_URL/v3/organizations" 125 }, 126 "organization_quotas": { 127 "href": "SERVER_URL/v3/organization_quotas" 128 }, 129 "security_groups": { 130 "href": "SERVER_URL/v3/security_groups" 131 }, 132 "service_brokers": { 133 "href": "SERVER_URL/v3/service_brokers" 134 }, 135 "service_instances": { 136 "href": "SERVER_URL/v3/service_instances" 137 }, 138 "service_offerings": { 139 "href": "SERVER_URL/v3/service_offerings" 140 }, 141 "service_plans": { 142 "href": "SERVER_URL/v3/service_plans" 143 }, 144 "spaces": { 145 "href": "SERVER_URL/v3/spaces" 146 }, 147 "space_quotas": { 148 "href": "SERVER_URL/v3/space_quotas" 149 }, 150 "packages": { 151 "href": "SERVER_URL/v3/packages" 152 }, 153 "processes": { 154 "href": "SERVER_URL/v3/processes" 155 }, 156 "droplets": { 157 "href": "SERVER_URL/v3/droplets" 158 }, 159 "audit_events": { 160 "href": "SERVER_URL/v3/audit_events" 161 }, 162 "domains": { 163 "href": "SERVER_URL/v3/domains" 164 }, 165 "deployments": { 166 "href": "SERVER_URL/v3/deployments" 167 }, 168 "stacks": { 169 "href": "SERVER_URL/v3/stacks" 170 }, 171 "buildpacks": { 172 "href": "SERVER_URL/v3/buildpacks" 173 }, 174 "feature_flags": { 175 "href": "SERVER_URL/v3/feature_flags" 176 }, 177 "resource_matches": { 178 "href": "SERVER_URL/v3/resource_matches" 179 }, 180 "roles": { 181 "href": "SERVER_URL/v3/roles" 182 }, 183 "routes": { 184 "href": "SERVER_URL/v3/routes" 185 }, 186 "users": { 187 "href": "SERVER_URL/v3/users" 188 }, 189 "environment_variable_groups": { 190 "href": "SERVER_URL/v3/environment_variable_groups" 191 } 192 } 193 }`, "SERVER_URL", serverURL, -1) 194 195 server.AppendHandlers( 196 CombineHandlers( 197 VerifyRequest(http.MethodGet, "/v3"), 198 RespondWith(http.StatusOK, v3Response), 199 ), 200 ) 201 }