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  }