"code.cloudfoundry.org/cli/cf/api/strategy" "code.cloudfoundry.org/cli/cf/configuration/coreconfig" "code.cloudfoundry.org/cli/cf/models" "code.cloudfoundry.org/cli/cf/net" "code.cloudfoundry.org/cli/cf/terminal/terminalfakes" "code.cloudfoundry.org/cli/cf/trace/tracefakes" testconfig "code.cloudfoundry.org/cli/testhelpers/configuration" testnet "code.cloudfoundry.org/cli/testhelpers/net" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("App Events Repo", func() { var ( server *httptest.Server handler *testnet.TestHandler config coreconfig.ReadWriter repo Repository ) BeforeEach(func() { config = testconfig.NewRepository() config.SetAccessToken("BEARER my_access_token") config.SetAPIVersion("2.2.0") }) JustBeforeEach(func() { strategy := strategy.NewEndpointStrategy(config.APIVersion()) gateway := net.NewCloudControllerGateway(config, time.Now, new(terminalfakes.FakeUI), new(tracefakes.FakePrinter), "") repo = NewCloudControllerAppEventsRepository(config, gateway, strategy) })
package requirements_test import ( "code.cloudfoundry.org/cli/cf/api/apifakes" "code.cloudfoundry.org/cli/cf/configuration/coreconfig" "code.cloudfoundry.org/cli/cf/errors" "code.cloudfoundry.org/cli/cf/models" . "code.cloudfoundry.org/cli/cf/requirements" testconfig "code.cloudfoundry.org/cli/testhelpers/configuration" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("DomainRequirement", func() { var config coreconfig.ReadWriter BeforeEach(func() { config = testconfig.NewRepository() config.SetOrganizationFields(models.OrganizationFields{GUID: "the-org-guid"}) }) It("succeeds when the domain is found", func() { domain := models.DomainFields{Name: "example.com", GUID: "domain-guid"} domainRepo := new(apifakes.FakeDomainRepository) domainRepo.FindByNameInOrgReturns(domain, nil) domainReq := NewDomainRequirement("example.com", config, domainRepo) err := domainReq.Execute() Expect(err).NotTo(HaveOccurred()) orgName, orgGUID := domainRepo.FindByNameInOrgArgsForCall(0) Expect(orgName).To(Equal("example.com"))
. "code.cloudfoundry.org/cli/cf/api/copyapplicationsource" "code.cloudfoundry.org/cli/cf/configuration/coreconfig" "code.cloudfoundry.org/cli/cf/net" "code.cloudfoundry.org/cli/cf/terminal/terminalfakes" testconfig "code.cloudfoundry.org/cli/testhelpers/configuration" testnet "code.cloudfoundry.org/cli/testhelpers/net" "code.cloudfoundry.org/cli/cf/trace/tracefakes" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("CopyApplicationSource", func() { var ( repo Repository testServer *httptest.Server configRepo coreconfig.ReadWriter ) setupTestServer := func(reqs ...testnet.TestRequest) { testServer, _ = testnet.NewServer(reqs) configRepo.SetAPIEndpoint(testServer.URL) } BeforeEach(func() { configRepo = testconfig.NewRepositoryWithDefaults() gateway := net.NewCloudControllerGateway(configRepo, time.Now, new(terminalfakes.FakeUI), new(tracefakes.FakePrinter), "") repo = NewCloudControllerCopyApplicationSourceRepository(configRepo, gateway) }) AfterEach(func() {
"code.cloudfoundry.org/cli/cf/configuration/coreconfig" "code.cloudfoundry.org/cli/cf/errors" "code.cloudfoundry.org/cli/cf/models" "code.cloudfoundry.org/cli/cf/net" . "code.cloudfoundry.org/cli/cf/api" "code.cloudfoundry.org/cli/cf/trace/tracefakes" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("Service Keys Repo", func() { var ( ccServer *ghttp.Server configRepo coreconfig.ReadWriter repo ServiceKeyRepository ) BeforeEach(func() { configRepo = testconfig.NewRepositoryWithDefaults() configRepo.SetAccessToken("BEARER my_access_token") ccServer = ghttp.NewServer() configRepo.SetAPIEndpoint(ccServer.URL()) gateway := net.NewCloudControllerGateway(configRepo, time.Now, new(terminalfakes.FakeUI), new(tracefakes.FakePrinter), "") repo = NewCloudControllerServiceKeyRepository(configRepo, gateway) }) AfterEach(func() {
testconfig "code.cloudfoundry.org/cli/testhelpers/configuration" "github.com/cloudfoundry/loggregatorlib/logmessage" noaa_errors "github.com/cloudfoundry/noaa/errors" "github.com/gogo/protobuf/proto" "time" . "code.cloudfoundry.org/cli/cf/api/logs" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("loggregator logs repository", func() { var ( fakeConsumer *logsfakes.FakeLoggregatorConsumer logsRepo *LoggregatorLogsRepository configRepo coreconfig.ReadWriter authRepo *authenticationfakes.FakeRepository ) BeforeEach(func() { fakeConsumer = new(logsfakes.FakeLoggregatorConsumer) configRepo = testconfig.NewRepositoryWithDefaults() configRepo.SetLoggregatorEndpoint("loggregator-server.test.com") configRepo.SetAccessToken("the-access-token") authRepo = &authenticationfakes.FakeRepository{} }) JustBeforeEach(func() { logsRepo = NewLoggregatorLogsRepository(configRepo, fakeConsumer, authRepo) })
. "code.cloudfoundry.org/cli/cf/api/authentication" "code.cloudfoundry.org/cli/cf/trace/tracefakes" . "code.cloudfoundry.org/cli/testhelpers/matchers" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" "github.com/onsi/gomega/ghttp" ) var _ = Describe("AuthenticationRepository", func() { Describe("legacy tests", func() { var ( gateway net.Gateway testServer *httptest.Server handler *testnet.TestHandler config coreconfig.ReadWriter auth Repository dumper net.RequestDumper fakePrinter *tracefakes.FakePrinter ) BeforeEach(func() { config = testconfig.NewRepository() fakePrinter = new(tracefakes.FakePrinter) gateway = net.NewUAAGateway(config, new(terminalfakes.FakeUI), fakePrinter, "") dumper = net.NewRequestDumper(fakePrinter) auth = NewUAARepository(gateway, config, dumper) }) AfterEach(func() { testServer.Close()
package requirements_test import ( "code.cloudfoundry.org/cli/cf/configuration/coreconfig" "code.cloudfoundry.org/cli/cf/models" . "code.cloudfoundry.org/cli/cf/requirements" testconfig "code.cloudfoundry.org/cli/testhelpers/configuration" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("TargetedSpaceRequirement", func() { var ( config coreconfig.ReadWriter ) BeforeEach(func() { config = testconfig.NewRepositoryWithDefaults() }) Context("when the user has targeted a space", func() { It("succeeds", func() { req := NewTargetedSpaceRequirement(config) err := req.Execute() Expect(err).NotTo(HaveOccurred()) }) }) Context("when the user does not have a space targeted", func() { It("errors", func() { config.SetSpaceFields(models.SpaceFields{})
"code.cloudfoundry.org/cli/cf/terminal/terminalfakes" "code.cloudfoundry.org/cli/cf/trace/tracefakes" testconfig "code.cloudfoundry.org/cli/testhelpers/configuration" testnet "code.cloudfoundry.org/cli/testhelpers/net" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" "github.com/onsi/gomega/ghttp" ) var _ = Describe("Gateway", func() { var ( ccServer *ghttp.Server ccGateway Gateway uaaGateway Gateway config coreconfig.ReadWriter authRepo authentication.Repository currentTime time.Time clock func() time.Time client *netfakes.FakeHTTPClientInterface ) BeforeEach(func() { currentTime = time.Unix(0, 0) clock = func() time.Time { return currentTime } config = testconfig.NewRepository() ccGateway = NewCloudControllerGateway(config, clock, new(terminalfakes.FakeUI), new(tracefakes.FakePrinter), "") ccGateway.PollingThrottle = 3 * time.Millisecond uaaGateway = NewUAAGateway(config, new(terminalfakes.FakeUI), new(tracefakes.FakePrinter), "") })
"code.cloudfoundry.org/cli/cf/api/authentication/authenticationfakes" testapi "code.cloudfoundry.org/cli/cf/api/logs/logsfakes" testconfig "code.cloudfoundry.org/cli/testhelpers/configuration" "sync" "code.cloudfoundry.org/cli/cf/api/logs" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("logs with noaa repository", func() { var ( fakeNoaaConsumer *testapi.FakeNoaaConsumer config coreconfig.ReadWriter fakeTokenRefresher *authenticationfakes.FakeRepository repo *logs.NoaaLogsRepository ) BeforeEach(func() { fakeNoaaConsumer = &testapi.FakeNoaaConsumer{} config = testconfig.NewRepositoryWithDefaults() config.SetLoggregatorEndpoint("loggregator.test.com") config.SetDopplerEndpoint("doppler.test.com") config.SetAccessToken("the-access-token") fakeTokenRefresher = &authenticationfakes.FakeRepository{} repo = logs.NewNoaaLogsRepository(config, fakeNoaaConsumer, fakeTokenRefresher) }) Describe("Authentication Token Refresh", func() { It("sets the noaa token refresher", func() {
"code.cloudfoundry.org/cli/cf/configuration/coreconfig" "code.cloudfoundry.org/cli/cf/v3/models" "code.cloudfoundry.org/cli/cf/v3/repository" "code.cloudfoundry.org/cli/testhelpers/configuration" ccClientFakes "github.com/cloudfoundry/go-ccapi/v3/client/fakes" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("Repository", func() { var ( r repository.Repository ccClient *ccClientFakes.FakeClient config coreconfig.ReadWriter ) BeforeEach(func() { ccClient = &ccClientFakes.FakeClient{} config = configuration.NewRepositoryWithDefaults() r = repository.NewRepository(config, ccClient) }) Describe("GetApplications", func() { It("tries to get applications from CC with a token handler", func() { r.GetApplications() Expect(ccClient.GetApplicationsCallCount()).To(Equal(1)) })
"code.cloudfoundry.org/cli/cf/net" "code.cloudfoundry.org/cli/cf/terminal/terminalfakes" testconfig "code.cloudfoundry.org/cli/testhelpers/configuration" testnet "code.cloudfoundry.org/cli/testhelpers/net" . "code.cloudfoundry.org/cli/cf/api" "code.cloudfoundry.org/cli/cf/trace/tracefakes" . "code.cloudfoundry.org/cli/testhelpers/matchers" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("DomainRepository", func() { var ( ts *httptest.Server handler *testnet.TestHandler repo DomainRepository config coreconfig.ReadWriter ) BeforeEach(func() { config = testconfig.NewRepositoryWithDefaults() }) JustBeforeEach(func() { gateway := net.NewCloudControllerGateway(config, time.Now, new(terminalfakes.FakeUI), new(tracefakes.FakePrinter), "") strategy := strategy.NewEndpointStrategy(config.APIVersion()) repo = NewCloudControllerDomainRepository(config, gateway, strategy) }) AfterEach(func() { ts.Close()
config = testconfig.NewRepository() }) It("prompts the user to login", func() { output := io_helpers.CaptureOutput(func() { ui := NewUI(os.Stdin, os.Stdout, NewTeePrinter(os.Stdout), fakeLogger) ui.ShowConfiguration(config) }) Expect(output).ToNot(ContainSubstrings([]string{"API endpoint:"})) Expect(output).To(ContainSubstrings([]string{"Not logged in", "Use", "log in"})) }) }) Context("when an api endpoint is set and the user logged in", func() { var config coreconfig.ReadWriter BeforeEach(func() { accessToken := coreconfig.TokenInfo{ UserGUID: "my-user-guid", Username: "******", Email: "my-user-email", } config = testconfig.NewRepositoryWithAccessToken(accessToken) config.SetAPIEndpoint("https://test.example.org") config.SetAPIVersion("☃☃☃") }) Describe("tells the user what is set in the config", func() { var output []string
package requirements_test import ( "code.cloudfoundry.org/cli/cf/configuration/coreconfig" "code.cloudfoundry.org/cli/cf/models" testconfig "code.cloudfoundry.org/cli/testhelpers/configuration" . "code.cloudfoundry.org/cli/cf/requirements" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("TargetedOrganizationRequirement", func() { var ( config coreconfig.ReadWriter ) BeforeEach(func() { config = testconfig.NewRepositoryWithDefaults() }) Context("when the user has an org targeted", func() { It("succeeds", func() { req := NewTargetedOrgRequirement(config) err := req.Execute() Expect(err).NotTo(HaveOccurred()) }) }) Context("when the user does not have an org targeted", func() {
func NewRepositoryLocator(config coreconfig.ReadWriter, gatewaysByName map[string]net.Gateway, logger trace.Printer, envDialTimeout string) (loc RepositoryLocator) { strategy := strategy.NewEndpointStrategy(config.APIVersion()) cloudControllerGateway := gatewaysByName["cloud-controller"] routingAPIGateway := gatewaysByName["routing-api"] uaaGateway := gatewaysByName["uaa"] loc.authRepo = authentication.NewUAARepository(uaaGateway, config, net.NewRequestDumper(logger)) // ensure gateway refreshers are set before passing them by value to repositories cloudControllerGateway.SetTokenRefresher(loc.authRepo) uaaGateway.SetTokenRefresher(loc.authRepo) loc.appBitsRepo = applicationbits.NewCloudControllerApplicationBitsRepository(config, cloudControllerGateway) loc.appEventsRepo = appevents.NewCloudControllerAppEventsRepository(config, cloudControllerGateway, strategy) loc.appFilesRepo = api_appfiles.NewCloudControllerAppFilesRepository(config, cloudControllerGateway) loc.appRepo = applications.NewCloudControllerRepository(config, cloudControllerGateway) loc.appSummaryRepo = NewCloudControllerAppSummaryRepository(config, cloudControllerGateway) loc.appInstancesRepo = appinstances.NewCloudControllerAppInstancesRepository(config, cloudControllerGateway) loc.authTokenRepo = NewCloudControllerServiceAuthTokenRepository(config, cloudControllerGateway) loc.curlRepo = NewCloudControllerCurlRepository(config, cloudControllerGateway) loc.domainRepo = NewCloudControllerDomainRepository(config, cloudControllerGateway, strategy) loc.endpointRepo = NewEndpointRepository(cloudControllerGateway) tlsConfig := net.NewTLSConfig([]tls.Certificate{}, config.IsSSLDisabled()) apiVersion, _ := semver.Make(config.APIVersion()) var noaaRetryTimeout time.Duration convertedTime, err := strconv.Atoi(envDialTimeout) if err != nil { noaaRetryTimeout = noaaRetryDefaultTimeout } else { noaaRetryTimeout = time.Duration(convertedTime) * 3 * time.Second } if apiVersion.GTE(cf.NoaaMinimumAPIVersion) { consumer := consumer.New(config.DopplerEndpoint(), tlsConfig, http.ProxyFromEnvironment) consumer.SetDebugPrinter(terminal.DebugPrinter{Logger: logger}) loc.logsRepo = logs.NewNoaaLogsRepository(config, consumer, loc.authRepo, noaaRetryTimeout) } else { consumer := loggregator_consumer.New(config.LoggregatorEndpoint(), tlsConfig, http.ProxyFromEnvironment) consumer.SetDebugPrinter(terminal.DebugPrinter{Logger: logger}) loc.logsRepo = logs.NewLoggregatorLogsRepository(config, consumer, loc.authRepo) } loc.organizationRepo = organizations.NewCloudControllerOrganizationRepository(config, cloudControllerGateway) loc.passwordRepo = password.NewCloudControllerRepository(config, uaaGateway) loc.quotaRepo = quotas.NewCloudControllerQuotaRepository(config, cloudControllerGateway) loc.routeRepo = NewCloudControllerRouteRepository(config, cloudControllerGateway) loc.routeServiceBindingRepo = NewCloudControllerRouteServiceBindingRepository(config, cloudControllerGateway) loc.routingAPIRepo = NewRoutingAPIRepository(config, routingAPIGateway) loc.stackRepo = stacks.NewCloudControllerStackRepository(config, cloudControllerGateway) loc.serviceRepo = NewCloudControllerServiceRepository(config, cloudControllerGateway) loc.serviceKeyRepo = NewCloudControllerServiceKeyRepository(config, cloudControllerGateway) loc.serviceBindingRepo = NewCloudControllerServiceBindingRepository(config, cloudControllerGateway) loc.serviceBrokerRepo = NewCloudControllerServiceBrokerRepository(config, cloudControllerGateway) loc.servicePlanRepo = NewCloudControllerServicePlanRepository(config, cloudControllerGateway) loc.servicePlanVisibilityRepo = NewCloudControllerServicePlanVisibilityRepository(config, cloudControllerGateway) loc.serviceSummaryRepo = NewCloudControllerServiceSummaryRepository(config, cloudControllerGateway) loc.spaceRepo = spaces.NewCloudControllerSpaceRepository(config, cloudControllerGateway) loc.userProvidedServiceInstanceRepo = NewCCUserProvidedServiceInstanceRepository(config, cloudControllerGateway) loc.userRepo = NewCloudControllerUserRepository(config, uaaGateway, cloudControllerGateway) loc.buildpackRepo = NewCloudControllerBuildpackRepository(config, cloudControllerGateway) loc.buildpackBitsRepo = NewCloudControllerBuildpackBitsRepository(config, cloudControllerGateway, appfiles.ApplicationZipper{}) loc.securityGroupRepo = securitygroups.NewSecurityGroupRepo(config, cloudControllerGateway) loc.stagingSecurityGroupRepo = staging.NewSecurityGroupsRepo(config, cloudControllerGateway) loc.runningSecurityGroupRepo = running.NewSecurityGroupsRepo(config, cloudControllerGateway) loc.securityGroupSpaceBinder = securitygroupspaces.NewSecurityGroupSpaceBinder(config, cloudControllerGateway) loc.spaceQuotaRepo = spacequotas.NewCloudControllerSpaceQuotaRepository(config, cloudControllerGateway) loc.featureFlagRepo = featureflags.NewCloudControllerFeatureFlagRepository(config, cloudControllerGateway) loc.environmentVariableGroupRepo = environmentvariablegroups.NewCloudControllerRepository(config, cloudControllerGateway) loc.copyAppSourceRepo = copyapplicationsource.NewCloudControllerCopyApplicationSourceRepository(config, cloudControllerGateway) client := v3client.NewClient(config.APIEndpoint(), config.AuthenticationEndpoint(), config.AccessToken(), config.RefreshToken()) loc.v3Repository = repository.NewRepository(config, client) return }
"code.cloudfoundry.org/cli/cf/models" "code.cloudfoundry.org/cli/cf/net" "github.com/onsi/gomega/ghttp" "code.cloudfoundry.org/cli/cf/terminal/terminalfakes" testconfig "code.cloudfoundry.org/cli/testhelpers/configuration" "code.cloudfoundry.org/cli/cf/trace/tracefakes" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("CloudControllerQuotaRepository", func() { var ( ccServer *ghttp.Server configRepo coreconfig.ReadWriter repo spacequotas.CloudControllerSpaceQuotaRepository ) BeforeEach(func() { ccServer = ghttp.NewServer() configRepo = testconfig.NewRepositoryWithDefaults() configRepo.SetAPIEndpoint(ccServer.URL()) gateway := net.NewCloudControllerGateway(configRepo, time.Now, new(terminalfakes.FakeUI), new(tracefakes.FakePrinter), "") repo = spacequotas.NewCloudControllerSpaceQuotaRepository(configRepo, gateway) }) AfterEach(func() { ccServer.Close() })
"name": "vcap", "build": "2222", "support": "http://support.cloudfoundry.com", "routing_endpoint": "http://api.example.com/routing", "version": 2, "description": "Cloud Foundry sponsored by Pivotal", "authorization_endpoint": "https://login.example.com", "api_version": "42.0.0" }`) } var _ = Describe("Endpoints Repository", func() { var ( coreConfig coreconfig.ReadWriter gateway net.Gateway testServer *httptest.Server repo RemoteInfoRepository testServerFn func(w http.ResponseWriter, r *http.Request) ) BeforeEach(func() { coreConfig = testconfig.NewRepository() testServer = httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { testServerFn(w, r) })) gateway = net.NewCloudControllerGateway(coreConfig, time.Now, new(terminalfakes.FakeUI), new(tracefakes.FakePrinter), "") gateway.SetTrustedCerts(testServer.TLS.Certificates) repo = NewEndpointRepository(gateway) }) AfterEach(func() {
"code.cloudfoundry.org/cli/cf/errors" "code.cloudfoundry.org/cli/cf/models" "code.cloudfoundry.org/cli/cf/net" "code.cloudfoundry.org/cli/cf/terminal/terminalfakes" "code.cloudfoundry.org/cli/cf/trace/tracefakes" testconfig "code.cloudfoundry.org/cli/testhelpers/configuration" . "code.cloudfoundry.org/cli/testhelpers/matchers" testnet "code.cloudfoundry.org/cli/testhelpers/net" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("Buildpacks repo", func() { var ( ts *httptest.Server handler *testnet.TestHandler config coreconfig.ReadWriter repo BuildpackRepository ) BeforeEach(func() { config = testconfig.NewRepositoryWithDefaults() gateway := net.NewCloudControllerGateway(config, time.Now, new(terminalfakes.FakeUI), new(tracefakes.FakePrinter), "") repo = NewCloudControllerBuildpackRepository(config, gateway) }) AfterEach(func() { ts.Close() }) var setupTestServer = func(requests ...testnet.TestRequest) { ts, handler = testnet.NewServer(requests)