. "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("Service Keys Repo", func() { var ( testServer *httptest.Server testHandler *testnet.TestHandler configRepo core_config.ReadWriter repo ServiceKeyRepository ) setupTestServer := func(reqs ...testnet.TestRequest) { testServer, testHandler = testnet.NewServer(reqs) configRepo.SetApiEndpoint(testServer.URL) } BeforeEach(func() { configRepo = testconfig.NewRepositoryWithDefaults() configRepo.SetAccessToken("BEARER my_access_token") gateway := net.NewCloudControllerGateway(configRepo, time.Now, &testterm.FakeUI{}) repo = NewCloudControllerServiceKeyRepository(configRepo, gateway) }) Describe("CreateServiceKey", func() { It("makes the right request", func() { setupTestServer(testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "POST", Path: "/v2/service_keys",
. "github.com/onsi/gomega" ) var _ = Describe("Service Keys Repo", func() { var ( ccServer *ghttp.Server configRepo core_config.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, &testterm.FakeUI{}) repo = NewCloudControllerServiceKeyRepository(configRepo, gateway) }) AfterEach(func() { ccServer.Close() }) Describe("CreateServiceKey", func() { It("tries to create the service key", func() { ccServer.AppendHandlers( ghttp.CombineHandlers( ghttp.VerifyRequest("POST", "/v2/service_keys"), ghttp.RespondWith(http.StatusCreated, nil),
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 core_config.ReadWriter BeforeEach(func() { accessToken := core_config.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 JustBeforeEach(func() { output = io_helpers.CaptureOutput(func() { ui := NewUI(os.Stdin, NewTeePrinter()) ui.ShowConfiguration(config) }) }) It("tells the user which api endpoint is set", func() { Expect(output).To(ContainSubstrings([]string{"API endpoint:", "https://test.example.org"}))
Expect(config.AccessToken()).To(Equal("")) Expect(config.AuthenticationEndpoint()).To(Equal("https://login.example.com")) Expect(config.LoggregatorEndpoint()).To(Equal("wss://loggregator.foo.example.org:4443")) Expect(config.DopplerEndpoint()).To(Equal("wss://doppler.foo.example.org:4443")) Expect(config.ApiEndpoint()).To(Equal(testServer.URL)) Expect(config.ApiVersion()).To(Equal("42.0.0")) Expect(config.HasOrganization()).To(BeFalse()) Expect(config.HasSpace()).To(BeFalse()) Expect(config.MinCliVersion()).To(Equal("6.5.0")) Expect(config.MinRecommendedCliVersion()).To(Equal("6.7.0")) }) Context("when the api endpoint does not change", func() { BeforeEach(func() { config.SetApiEndpoint(testServer.URL) config.SetAccessToken("some access token") config.SetRefreshToken("some refresh token") }) It("does not clear the session if the api endpoint does not change", func() { repo.UpdateEndpoint(testServer.URL) Expect(config.OrganizationFields()).To(Equal(org)) Expect(config.SpaceFields()).To(Equal(space)) Expect(config.AccessToken()).To(Equal("some access token")) Expect(config.RefreshToken()).To(Equal("some refresh token")) }) }) })
uaaGateway := net.NewUAAGateway(config, &testterm.FakeUI{}) repo = NewCloudControllerUserRepository(config, uaaGateway, ccGateway) }) AfterEach(func() { if uaaServer != nil { uaaServer.Close() } if ccServer != nil { ccServer.Close() } }) setupCCServer := func(requests ...testnet.TestRequest) { ccServer, ccHandler = testnet.NewServer(requests) config.SetApiEndpoint(ccServer.URL) } setupUAAServer := func(requests ...testnet.TestRequest) { uaaServer, uaaHandler = testnet.NewServer(requests) config.SetUaaEndpoint(uaaServer.URL) } Describe("listing the users with a given role using ListUsersInOrgForRole()", func() { Context("when there are no users in the given org", func() { It("lists the users in a org with a given role", func() { ccReqs := []testnet.TestRequest{ testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "GET", Path: "/v2/organizations/my-org-guid/managers", Response: testnet.TestResponse{
repo BuildpackRepository ) BeforeEach(func() { config = testconfig.NewRepositoryWithDefaults() gateway := net.NewCloudControllerGateway((config), time.Now, &testterm.FakeUI{}) repo = NewCloudControllerBuildpackRepository(config, gateway) }) AfterEach(func() { ts.Close() }) var setupTestServer = func(requests ...testnet.TestRequest) { ts, handler = testnet.NewServer(requests) config.SetApiEndpoint(ts.URL) } It("lists buildpacks", func() { setupTestServer( testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "GET", Path: "/v2/buildpacks", Response: testnet.TestResponse{ Status: http.StatusOK, Body: `{ "next_url": "/v2/buildpacks?page=2", "resources": [ { "metadata": { "guid": "buildpack1-guid"
config.SetApiVersion("2.2.0") }) JustBeforeEach(func() { strategy := strategy.NewEndpointStrategy(config.ApiVersion()) gateway := net.NewCloudControllerGateway(config, time.Now, &testterm.FakeUI{}) repo = NewCloudControllerAppEventsRepository(config, gateway, strategy) }) AfterEach(func() { server.Close() }) setupTestServer := func(requests ...testnet.TestRequest) { server, handler = testnet.NewServer(requests) config.SetApiEndpoint(server.URL) } Describe("list recent events", func() { It("returns the most recent events", func() { setupTestServer(eventsRequest) list, err := repo.RecentEvents("my-app-guid", 2) Expect(err).ToNot(HaveOccurred()) Expect(list).To(ConsistOf([]models.EventFields{ models.EventFields{ Guid: "event-1-guid", Name: "audit.app.update", Timestamp: testtime.MustParse(eventTimestampFormat, "2014-01-21T00:20:11+00:00"), Description: "instances: 1, memory: 256, command: PRIVATE DATA HIDDEN, environment_json: PRIVATE DATA HIDDEN",
[]string{"FAILED"}, []string{"SSL Cert", "https://buttontomatoes.org"}, []string{"TIP", "--skip-ssl-validation"}, )) }) }) Context("when the user does not provide an endpoint", func() { Context("when the endpoint is set in the config", func() { var ( ui *testterm.FakeUI requirementsFactory *testreq.FakeReqFactory ) BeforeEach(func() { config.SetApiEndpoint("https://api.run.pivotal.io") config.SetApiVersion("2.0") config.SetSSLDisabled(true) ui = new(testterm.FakeUI) requirementsFactory = &testreq.FakeReqFactory{} }) It("prints out the api endpoint and appropriately sets the config", func() { testcmd.RunCommand(NewApi(ui, config, endpointRepo), []string{}, requirementsFactory) Expect(ui.Outputs).To(ContainSubstrings([]string{"https://api.run.pivotal.io", "2.0"})) Expect(config.IsSSLDisabled()).To(BeTrue()) }) Context("when the --unset flag is passed", func() {
Expect(Config.RefreshToken()).To(Equal("my_refresh_token")) Expect(endpointRepo.UpdateEndpointReceived).To(Equal("api.example.com")) Expect(authRepo.AuthenticateArgs.Credentials).To(Equal([]map[string]string{ { "username": "******", "password": "******", }, })) Expect(ui.ShowConfigurationCalled).To(BeTrue()) }) It("doesn't ask the user for the API url if they have it in their config", func() { orgRepo.FindByNameReturns(org, nil) Config.SetApiEndpoint("http://api.example.com") Flags = []string{"-o", "my-new-org", "-s", "my-space"} ui.Inputs = []string{"*****@*****.**", "password"} l := NewLogin(ui, Config, authRepo, endpointRepo, orgRepo, spaceRepo) testcmd.RunCommand(l, Flags, nil) Expect(Config.ApiEndpoint()).To(Equal("http://api.example.com")) Expect(Config.OrganizationFields().Guid).To(Equal("my-new-org-guid")) Expect(Config.SpaceFields().Guid).To(Equal("my-space-guid")) Expect(Config.AccessToken()).To(Equal("my_access_token")) Expect(Config.RefreshToken()).To(Equal("my_refresh_token")) Expect(endpointRepo.UpdateEndpointReceived).To(Equal("http://api.example.com")) Expect(ui.ShowConfigurationCalled).To(BeTrue())