github.com/loafoe/cli@v7.1.0+incompatible/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 Shareable: true, 32 Bindable: true, 33 Plans: []config.Plan{newDefaultPlan()}, 34 } 35 } 36 37 func newDefaultPlan() config.Plan { 38 return config.Plan{ 39 Name: helpers.NewPlanName(), 40 ID: helpers.RandomName(), 41 Description: helpers.PrefixedRandomName("PLAN-DESCRIPTION"), 42 Free: true, 43 } 44 } 45 46 func (s *ServiceBrokerStub) requestNewBrokerRoute() { 47 req, err := http.NewRequest("POST", appURL("/config"), s.marshal()) 48 Expect(err).ToNot(HaveOccurred()) 49 50 req.Header.Set("Content-Type", "application/json") 51 resp, err := http.DefaultClient.Do(req) 52 Expect(err).ToNot(HaveOccurred()) 53 54 responseBody, err := ioutil.ReadAll(resp.Body) 55 Expect(err).ToNot(HaveOccurred()) 56 Expect(resp.StatusCode).To( 57 Equal(http.StatusCreated), 58 fmt.Sprintf("Expected POST /config to succeed. Response body: '%s'", string(responseBody)), 59 ) 60 defer resp.Body.Close() 61 62 var response config.NewBrokerResponse 63 err = json.Unmarshal(responseBody, &response) 64 Expect(err).ToNot(HaveOccurred()) 65 66 s.URL = appURL("/broker/", response.GUID) 67 s.GUID = response.GUID 68 } 69 70 func (s *ServiceBrokerStub) configure() { 71 req, err := http.NewRequest("PUT", appURL("/config/"+s.GUID), s.marshal()) 72 Expect(err).ToNot(HaveOccurred()) 73 74 req.Header.Set("Content-Type", "application/json") 75 resp, err := http.DefaultClient.Do(req) 76 Expect(err).ToNot(HaveOccurred()) 77 defer resp.Body.Close() 78 Expect(resp.StatusCode).To(Equal(http.StatusNoContent)) 79 } 80 81 func (s *ServiceBrokerStub) forget() { 82 req, err := http.NewRequest("DELETE", appURL("/config/", s.GUID), nil) 83 Expect(err).ToNot(HaveOccurred()) 84 resp, err := http.DefaultClient.Do(req) 85 resp.Body.Close() 86 Expect(err).ToNot(HaveOccurred()) 87 Expect(resp.StatusCode).To(Equal(http.StatusNoContent)) 88 } 89 90 func (s *ServiceBrokerStub) marshal() io.Reader { 91 body, err := json.Marshal(config.BrokerConfiguration{ 92 Services: s.Services, 93 Username: s.Username, 94 Password: s.Password, 95 CatalogResponse: s.catalogResponse, 96 ProvisionResponse: s.provisionResponse, 97 DeprovisionResponse: s.deprovisionResponse, 98 AsyncResponseDelay: s.asyncResponseDelay, 99 }) 100 Expect(err).ToNot(HaveOccurred()) 101 return bytes.NewReader(body) 102 }