It("gets the UAA endpoint and saves it to the config file", func() { requirementsFactory.ApiEndpointSuccess = true testcmd.RunCliCommand("auth", []string{"*****@*****.**", "password"}, requirementsFactory, updateCommandDependency, false) Expect(repo.GetLoginPromptsWasCalled).To(BeTrue()) }) Describe("when authentication fails", func() { BeforeEach(func() { repo.AuthError = true testcmd.RunCliCommand("auth", []string{"username", "password"}, requirementsFactory, updateCommandDependency, false) }) It("does not prompt the user when provided username and password", func() { Expect(ui.Outputs).To(ContainSubstrings( []string{config.ApiEndpoint()}, []string{"Authenticating..."}, []string{"FAILED"}, []string{"Error authenticating"}, )) }) It("clears the user's session", func() { Expect(config.AccessToken()).To(BeEmpty()) Expect(config.RefreshToken()).To(BeEmpty()) Expect(config.SpaceFields()).To(Equal(models.SpaceFields{})) Expect(config.OrganizationFields()).To(Equal(models.OrganizationFields{})) }) }) }) })
persistor.SaveStub = func(configuration.DataInterface) error { close(beginSaveCh) <-performSaveCh close(finishSaveCh) return nil } go func() { config.SetApiEndpoint("foo") }() <-beginSaveCh go func() { config.ApiEndpoint() close(finishReadCh) }() Consistently(finishSaveCh).ShouldNot(BeClosed()) Consistently(finishReadCh).ShouldNot(BeClosed()) performSaveCh <- struct{}{} Eventually(finishReadCh).Should(BeClosed()) }) It("has acccessor methods for all config fields", func() { config.SetApiEndpoint("http://api.the-endpoint") Expect(config.ApiEndpoint()).To(Equal("http://api.the-endpoint"))
}, })) 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"} testcmd.RunCliCommand("login", Flags, nil, updateCommandDependency, false) 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()) }) }) Describe("when the CLI version is below the minimum required", func() { BeforeEach(func() { Config.SetMinCliVersion("5.0.0") Config.SetMinRecommendedCliVersion("5.5.0") })
Ω(runCommand()).To(BeFalse()) }) }) Describe("ssh-code", func() { BeforeEach(func() { requirementsFactory.ApiEndpointSuccess = true }) Context("calling endpoint repository to update 'app_ssh_oauth_client'", func() { It("passes the repo the targeted API endpoint", func() { configRepo.SetApiEndpoint("test.endpoint.com") runCommand() Ω(endpointRepo.CallCount).To(Equal(1)) Ω(endpointRepo.UpdateEndpointReceived).To(Equal(configRepo.ApiEndpoint())) }) It("reports any error to user", func() { configRepo.SetApiEndpoint("test.endpoint.com") endpointRepo.UpdateEndpointError = errors.New("endpoint error") runCommand() Ω(endpointRepo.CallCount).To(Equal(1)) Ω(ui.Outputs).To(ContainSubstrings( []string{"Error getting info", "endpoint error"}, )) }) }) Context("refresh oauth-token to make sure it is not stale", func() {
callApi([]string{}, config, endpointRepo) 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() { It("unsets the ApiEndpoint", func() { callApi([]string{"--unset"}, config, endpointRepo) Expect(ui.Outputs).To(ContainSubstrings( []string{"Unsetting api endpoint..."}, []string{"OK"}, []string{"No api endpoint set."}, )) Expect(config.ApiEndpoint()).To(Equal("")) }) }) }) Context("when the endpoint is not set in the config", func() { It("prompts the user to set an endpoint", func() { callApi([]string{}, config, endpointRepo) Expect(ui.Outputs).To(ContainSubstrings( []string{"No api endpoint set", fmt.Sprintf("Use '%s api' to set an endpoint", cf.Name())}, )) }) }) })