func NewDependency(writer io.Writer, logger trace.Printer, envDialTimeout string) Dependency { deps := Dependency{} deps.TeePrinter = terminal.NewTeePrinter(writer) deps.UI = terminal.NewUI(os.Stdin, writer, deps.TeePrinter, logger) errorHandler := func(err error) { if err != nil { deps.UI.Failed(fmt.Sprintf("Config error: %s", err)) } } configPath, err := confighelpers.DefaultFilePath() if err != nil { errorHandler(err) } deps.Config = coreconfig.NewRepositoryFromFilepath(configPath, errorHandler) deps.ManifestRepo = manifest.NewDiskRepository() deps.AppManifest = manifest.NewGenerator() pluginPath := filepath.Join(confighelpers.PluginRepoDir(), ".cf", "plugins") deps.PluginConfig = pluginconfig.NewPluginConfig( errorHandler, configuration.NewDiskPersistor(filepath.Join(pluginPath, "config.json")), pluginPath, ) terminal.UserAskedForColors = deps.Config.ColorEnabled() terminal.InitColorSupport() deps.Gateways = map[string]net.Gateway{ "cloud-controller": net.NewCloudControllerGateway(deps.Config, time.Now, deps.UI, logger, envDialTimeout), "uaa": net.NewUAAGateway(deps.Config, deps.UI, logger, envDialTimeout), "routing-api": net.NewRoutingAPIGateway(deps.Config, time.Now, deps.UI, logger, envDialTimeout), } deps.RepoLocator = api.NewRepositoryLocator(deps.Config, deps.Gateways, logger) deps.PluginModels = &PluginModels{Application: nil} deps.PlanBuilder = planbuilder.NewBuilder( deps.RepoLocator.GetServicePlanRepository(), deps.RepoLocator.GetServicePlanVisibilityRepository(), deps.RepoLocator.GetOrganizationRepository(), ) deps.ServiceBuilder = servicebuilder.NewBuilder( deps.RepoLocator.GetServiceRepository(), deps.PlanBuilder, ) deps.BrokerBuilder = brokerbuilder.NewBuilder( deps.RepoLocator.GetServiceBrokerRepository(), deps.ServiceBuilder, ) deps.PluginRepo = pluginrepo.NewPluginRepo() deps.ServiceHandler = actors.NewServiceHandler( deps.RepoLocator.GetOrganizationRepository(), deps.BrokerBuilder, deps.ServiceBuilder, ) deps.ServicePlanHandler = actors.NewServicePlanHandler( deps.RepoLocator.GetServicePlanRepository(), deps.RepoLocator.GetServicePlanVisibilityRepository(), deps.RepoLocator.GetOrganizationRepository(), deps.PlanBuilder, deps.ServiceBuilder, ) deps.WordGenerator = generator.NewWordGenerator() deps.AppZipper = appfiles.ApplicationZipper{} deps.AppFiles = appfiles.ApplicationFiles{} deps.RouteActor = actors.NewRouteActor(deps.UI, deps.RepoLocator.GetRouteRepository(), deps.RepoLocator.GetDomainRepository()) deps.PushActor = actors.NewPushActor(deps.RepoLocator.GetApplicationBitsRepository(), deps.AppZipper, deps.AppFiles, deps.RouteActor) deps.ChecksumUtil = utils.NewSha1Checksum("") deps.Logger = logger return deps }
var _ = Describe("Services", func() { var ( actor actors.ServiceActor brokerBuilder *brokerbuilderfakes.FakeBrokerBuilder serviceBuilder *servicebuilderfakes.FakeServiceBuilder orgRepo *organizationsfakes.FakeOrganizationRepository serviceBroker1 models.ServiceBroker service1 models.ServiceOffering ) BeforeEach(func() { orgRepo = new(organizationsfakes.FakeOrganizationRepository) brokerBuilder = new(brokerbuilderfakes.FakeBrokerBuilder) serviceBuilder = new(servicebuilderfakes.FakeServiceBuilder) actor = actors.NewServiceHandler(orgRepo, brokerBuilder, serviceBuilder) serviceBroker1 = models.ServiceBroker{GUID: "my-service-broker-guid1", Name: "my-service-broker1"} service1 = models.ServiceOffering{ServiceOfferingFields: models.ServiceOfferingFields{ Label: "my-service1", GUID: "service-guid1", BrokerGUID: "my-service-broker-guid1"}, } org1 := models.Organization{} org1.Name = "org1" org1.GUID = "org-guid" org2 := models.Organization{} org2.Name = "org2"