}) ItSucceeds() ItShowsTheTarget() It("stores the API endpoint and the skip-ssl flag", func() { Expect(endpointRepo.UpdateEndpointCallCount()).To(Equal(1)) Expect(endpointRepo.UpdateEndpointArgsForCall(0)).To(Equal("https://api.the-server.com")) Expect(Config.IsSSLDisabled()).To(BeTrue()) }) }) Describe("setting api endpoint failed", func() { BeforeEach(func() { Config.SetSSLDisabled(true) endpointRepo.UpdateEndpointReturns("", errors.New("API endpoint not found")) }) ItFails() ItDoesntShowTheTarget() It("clears the entire config", func() { Expect(Config.ApiEndpoint()).To(BeEmpty()) Expect(Config.IsSSLDisabled()).To(BeFalse()) Expect(Config.AccessToken()).To(BeEmpty()) Expect(Config.RefreshToken()).To(BeEmpty()) Expect(Config.OrganizationFields().Guid).To(BeEmpty()) Expect(Config.SpaceFields().Guid).To(BeEmpty()) }) }) })
callApi := func(args []string, config core_config.Repository, endpointRepo *testapi.FakeEndpointRepository) { testcmd.RunCliCommand("api", args, requirementsFactory, updateCommandDependency, false) } BeforeEach(func() { ui = new(testterm.FakeUI) requirementsFactory = &testreq.FakeReqFactory{} config = testconfig.NewRepository() endpointRepo = &testapi.FakeEndpointRepository{} deps = command_registry.NewDependency() }) Context("when the api endpoint's ssl certificate is invalid", func() { It("warns the user and prints out a tip", func() { endpointRepo.UpdateEndpointReturns("", errors.NewInvalidSSLCert("https://buttontomatoes.org", "why? no. go away")) callApi([]string{"https://buttontomatoes.org"}, config, endpointRepo) Expect(ui.Outputs).To(ContainSubstrings( []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() { BeforeEach(func() { config.SetApiEndpoint("https://api.run.pivotal.io") config.SetApiVersion("2.0")
Describe("Execute", func() { BeforeEach(func() { _, err := cmd.Requirements(factory, flagContext) Expect(err).NotTo(HaveOccurred()) }) It("tries to update the endpoint", func() { cmd.Execute(flagContext) Expect(endpointRepo.UpdateEndpointCallCount()).To(Equal(1)) Expect(endpointRepo.UpdateEndpointArgsForCall(0)).To(Equal("fake-api-endpoint")) }) Context("when updating the endpoint succeeds", func() { BeforeEach(func() { endpointRepo.UpdateEndpointReturns("updated-endpoint", nil) }) It("tries to refresh the auth token", func() { cmd.Execute(flagContext) Expect(authRepo.RefreshAuthTokenCallCount()).To(Equal(1)) }) Context("when refreshing the token fails with an error", func() { BeforeEach(func() { authRepo.RefreshAuthTokenReturns("", errors.New("auth-error")) }) It("fails with error", func() { Expect(func() { cmd.Execute(flagContext) }).To(Panic()) Expect(ui.Outputs).To(ContainSubstrings(