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  }