github.com/DaAlbrecht/cf-cli@v0.0.0-20231128151943-1fe19bb400b9/integration/helpers/servicebrokerstub/app_config.go (about) 1 package servicebrokerstub 2 3 import ( 4 "bytes" 5 "encoding/json" 6 "fmt" 7 "io" 8 "io/ioutil" 9 "net/http" 10 11 "code.cloudfoundry.org/cli/integration/assets/hydrabroker/config" 12 "code.cloudfoundry.org/cli/integration/helpers" 13 . "github.com/onsi/gomega" 14 ) 15 16 func newDefaultConfig() *ServiceBrokerStub { 17 return &ServiceBrokerStub{ 18 URL: "broker-route-not-created-yet", 19 Name: helpers.NewServiceBrokerName(), 20 Username: "username", 21 Password: "password", 22 Services: []config.Service{newDefaultServiceOffering()}, 23 } 24 } 25 26 func newDefaultServiceOffering() config.Service { 27 return config.Service{ 28 Name: helpers.NewServiceOfferingName(), 29 ID: helpers.RandomName(), 30 Description: helpers.PrefixedRandomName("SERVICE-OFFERING-DESCRIPTION"), 31 DocumentationURL: helpers.RandomURL(), 32 Shareable: true, 33 Bindable: true, 34 InstancesRetrievable: true, 35 PlanUpdatable: true, 36 Plans: []config.Plan{newDefaultPlan()}, 37 Tags: []string{"TAG-1", "TAG-2"}, 38 } 39 } 40 41 func newDefaultPlan() config.Plan { 42 return config.Plan{ 43 Name: helpers.NewPlanName(), 44 ID: helpers.RandomName(), 45 Description: helpers.PrefixedRandomName("PLAN-DESCRIPTION"), 46 Free: true, 47 } 48 } 49 50 func (s *ServiceBrokerStub) requestNewBrokerRoute() { 51 req, err := http.NewRequest("POST", appURL("/config"), s.marshal()) 52 Expect(err).ToNot(HaveOccurred()) 53 54 req.Header.Set("Content-Type", "application/json") 55 resp, err := http.DefaultClient.Do(req) 56 Expect(err).ToNot(HaveOccurred()) 57 58 responseBody, err := ioutil.ReadAll(resp.Body) 59 Expect(err).ToNot(HaveOccurred()) 60 Expect(resp.StatusCode).To( 61 Equal(http.StatusCreated), 62 fmt.Sprintf("Expected POST /config to succeed. Response body: '%s'", string(responseBody)), 63 ) 64 defer resp.Body.Close() 65 66 var response config.NewBrokerResponse 67 err = json.Unmarshal(responseBody, &response) 68 Expect(err).ToNot(HaveOccurred()) 69 70 s.URL = appURL("/broker/", response.GUID) 71 s.GUID = response.GUID 72 } 73 74 func (s *ServiceBrokerStub) configure() { 75 req, err := http.NewRequest("PUT", appURL("/config/"+s.GUID), s.marshal()) 76 Expect(err).ToNot(HaveOccurred()) 77 78 req.Header.Set("Content-Type", "application/json") 79 resp, err := http.DefaultClient.Do(req) 80 Expect(err).ToNot(HaveOccurred()) 81 defer resp.Body.Close() 82 Expect(resp.StatusCode).To(Equal(http.StatusNoContent)) 83 } 84 85 func (s *ServiceBrokerStub) forget() { 86 req, err := http.NewRequest("DELETE", appURL("/config/", s.GUID), nil) 87 Expect(err).ToNot(HaveOccurred()) 88 resp, err := http.DefaultClient.Do(req) 89 resp.Body.Close() 90 Expect(err).ToNot(HaveOccurred()) 91 Expect(resp.StatusCode).To(Equal(http.StatusNoContent)) 92 } 93 94 func (s *ServiceBrokerStub) marshal() io.Reader { 95 body, err := json.Marshal(config.BrokerConfiguration{ 96 Services: s.Services, 97 Username: s.Username, 98 Password: s.Password, 99 CatalogResponse: s.catalogResponse, 100 ProvisionResponse: s.provisionResponse, 101 DeprovisionResponse: s.deprovisionResponse, 102 AsyncResponseDelay: s.asyncResponseDelay, 103 }) 104 Expect(err).ToNot(HaveOccurred()) 105 return bytes.NewReader(body) 106 }