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  }