github.com/DaAlbrecht/cf-cli@v0.0.0-20231128151943-1fe19bb400b9/integration/helpers/servicebrokerstub/api.go (about) 1 package servicebrokerstub 2 3 import ( 4 "time" 5 6 "code.cloudfoundry.org/cli/integration/helpers" 7 8 "code.cloudfoundry.org/cli/integration/assets/hydrabroker/config" 9 ) 10 11 type ServiceAccessConfig struct { 12 OfferingName, PlanName, OrgName string 13 } 14 15 type ServiceBrokerStub struct { 16 Name, URL, GUID string 17 Username, Password string 18 Services []config.Service 19 ServiceAccessConfig []ServiceAccessConfig 20 created bool 21 registered bool 22 catalogResponse int 23 provisionResponse int 24 deprovisionResponse int 25 asyncResponseDelay time.Duration 26 } 27 28 func New() *ServiceBrokerStub { 29 return newDefaultConfig() 30 } 31 32 func Create() *ServiceBrokerStub { 33 return New().Create() 34 } 35 36 func Register() *ServiceBrokerStub { 37 return New().Register() 38 } 39 40 func EnableServiceAccess() *ServiceBrokerStub { 41 return New().EnableServiceAccess() 42 } 43 44 func (s *ServiceBrokerStub) Create() *ServiceBrokerStub { 45 ensureAppIsDeployed() 46 s.requestNewBrokerRoute() 47 s.created = true 48 return s 49 } 50 51 func (s *ServiceBrokerStub) Forget() { 52 if s.registered { 53 s.deregister() 54 } 55 s.forget() 56 } 57 58 func (s *ServiceBrokerStub) Configure() *ServiceBrokerStub { 59 s.configure() 60 return s 61 } 62 63 func (s *ServiceBrokerStub) Register() *ServiceBrokerStub { 64 if !s.created { 65 s.Create() 66 } 67 s.register(false) 68 s.registered = true 69 return s 70 } 71 72 func (s *ServiceBrokerStub) RegisterSpaceScoped() *ServiceBrokerStub { 73 if !s.created { 74 s.Create() 75 } 76 s.register(true) 77 s.registered = true 78 return s 79 } 80 81 func (s *ServiceBrokerStub) RegisterViaV2() *ServiceBrokerStub { 82 if !s.created { 83 s.Create() 84 } 85 s.registerViaV2() 86 s.registered = true 87 return s 88 } 89 90 func (s *ServiceBrokerStub) EnableServiceAccess() *ServiceBrokerStub { 91 if !s.registered { 92 s.Register() 93 } 94 s.enableServiceAccess() 95 return s 96 } 97 98 func (s *ServiceBrokerStub) WithName(name string) *ServiceBrokerStub { 99 s.Name = name 100 return s 101 } 102 103 func (s *ServiceBrokerStub) WithServiceOfferings(services int) *ServiceBrokerStub { 104 previousName := s.Services[0].Name 105 for len(s.Services) < services { 106 ser := newDefaultServiceOffering() 107 ser.Name = helpers.GenerateHigherName(helpers.NewServiceOfferingName, previousName) 108 previousName = ser.Name 109 s.Services = append(s.Services, ser) 110 } 111 return s 112 } 113 114 func (s *ServiceBrokerStub) WithPlans(plans int) *ServiceBrokerStub { 115 previousName := s.Services[0].Plans[0].Name 116 for len(s.Services[0].Plans) < plans { 117 p := newDefaultPlan() 118 p.Name = helpers.GenerateHigherName(helpers.NewPlanName, previousName) 119 previousName = p.Name 120 s.Services[0].Plans = append(s.Services[0].Plans, p) 121 } 122 return s 123 } 124 125 func (s *ServiceBrokerStub) WithHigherNameThan(o *ServiceBrokerStub) *ServiceBrokerStub { 126 higherName := helpers.GenerateHigherName(helpers.NewServiceBrokerName, o.Name) 127 return s.WithName(higherName) 128 } 129 130 func (s *ServiceBrokerStub) WithCatalogResponse(statusCode int) *ServiceBrokerStub { 131 s.catalogResponse = statusCode 132 return s 133 } 134 135 func (s *ServiceBrokerStub) WithProvisionResponse(statusCode int) *ServiceBrokerStub { 136 s.provisionResponse = statusCode 137 return s 138 } 139 140 func (s *ServiceBrokerStub) WithDeprovisionResponse(statusCode int) *ServiceBrokerStub { 141 s.deprovisionResponse = statusCode 142 return s 143 } 144 145 func (s *ServiceBrokerStub) WithAsyncDelay(delay time.Duration) *ServiceBrokerStub { 146 s.asyncResponseDelay = delay 147 return s 148 } 149 150 func (s *ServiceBrokerStub) WithMaintenanceInfo(version string, description ...string) *ServiceBrokerStub { 151 s.Services[0].Plans[0].MaintenanceInfo = &config.MaintenanceInfo{ 152 Version: version, 153 } 154 155 switch len(description) { 156 case 0: 157 case 1: 158 s.Services[0].Plans[0].MaintenanceInfo.Description = description[0] 159 default: 160 panic("too many parameters") 161 } 162 163 return s 164 } 165 166 func (s *ServiceBrokerStub) WithRouteService() *ServiceBrokerStub { 167 s.Services[0].Requires = []string{"route_forwarding"} 168 return s 169 } 170 171 func (s *ServiceBrokerStub) FirstServiceOfferingName() string { 172 return s.Services[0].Name 173 } 174 175 func (s *ServiceBrokerStub) FirstServiceOfferingDescription() string { 176 return s.Services[0].Description 177 } 178 179 func (s *ServiceBrokerStub) FirstServicePlanName() string { 180 return s.Services[0].Plans[0].Name 181 } 182 183 func (s *ServiceBrokerStub) FirstServicePlanDescription() string { 184 return s.Services[0].Plans[0].Description 185 }