}) It("TestUpdateEndpointWhenUrlIsAlreadyTargeted", func() { testServerFn = validApiInfoEndpoint org := models.OrganizationFields{} org.Name = "my-org" org.Guid = "my-org-guid" space := models.SpaceFields{} space.Name = "my-space" space.Guid = "my-space-guid" config.SetApiEndpoint(testServer.URL) config.SetAccessToken("some access token") config.SetRefreshToken("some refresh token") config.SetOrganizationFields(org) config.SetSpaceFields(space) 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")) }) It("returns a failure response when the API request fails", func() { testServerFn = func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusNotFound) }
})) testassert.SliceContains(ui.Outputs, testassert.Lines{ {"Failed"}, }) }) }) }) Describe("updates to the config", func() { var l Login BeforeEach(func() { Config.SetApiEndpoint("api.the-old-endpoint.com") Config.SetAccessToken("the-old-access-token") Config.SetRefreshToken("the-old-refresh-token") l = NewLogin(ui, Config, authRepo, endpointRepo, orgRepo, spaceRepo) }) JustBeforeEach(func() { testcmd.RunCommand(l, testcmd.NewContext("login", Flags), nil) }) var ItShowsTheTarget = func() { It("shows the target", func() { Expect(ui.ShowConfigurationCalled).To(BeTrue()) }) } var ItDoesntShowTheTarget = func() { It("does not show the target info", func() {
Expect(Config.SpaceFields().Guid).To(BeEmpty()) Expect(Config.AccessToken()).To(Equal("my_access_token")) Expect(Config.RefreshToken()).To(Equal("my_refresh_token")) testassert.SliceContains(ui.Outputs, testassert.Lines{ {"Failed"}, }) }) }) Context("when the user is already logged in and the config is fully populated", func() { BeforeEach(func() { Config = testconfig.NewRepositoryWithDefaults() Config.SetApiEndpoint("api.example.com") Config.SetAccessToken("my_access_token") Config.SetRefreshToken("my_refesh_token") authRepo.Config = Config }) Describe("and a new login fails to set api endpoint", func() { BeforeEach(func() { endpointRepo.UpdateEndpointError = errors.NewErrorWithMessage("API endpoint not found") Flags = []string{"-a", "api.nonexistent.com"} l := NewLogin(ui, Config, authRepo, endpointRepo, orgRepo, spaceRepo) testcmd.RunCommand(l, testcmd.NewContext("login", Flags), nil) }) It("clears the entire config", func() { Expect(Config.ApiEndpoint()).To(BeEmpty()) Expect(Config.AccessToken()).To(BeEmpty())