func TestUpdateEndpointWhenUrlIsValidHttpsInfoEndpoint(t *testing.T) { configRepo := testconfig.FakeConfigRepository{} configRepo.Delete() configRepo.Login() ts, repo := createEndpointRepoForUpdate(configRepo, validApiInfoEndpoint) defer ts.Close() org := cf.OrganizationFields{} org.Name = "my-org" org.Guid = "my-org-guid" space := cf.SpaceFields{} space.Name = "my-space" space.Guid = "my-space-guid" config, _ := configRepo.Get() config.OrganizationFields = org config.SpaceFields = space repo.UpdateEndpoint(ts.URL) savedConfig := testconfig.SavedConfiguration assert.Equal(t, savedConfig.AccessToken, "") assert.Equal(t, savedConfig.AuthorizationEndpoint, "https://login.example.com") assert.Equal(t, savedConfig.Target, ts.URL) assert.Equal(t, savedConfig.ApiVersion, "42.0.0") assert.False(t, savedConfig.HasOrganization()) assert.False(t, savedConfig.HasSpace()) }
func TestUpdateEndpointWhenUrlIsAlreadyTargeted(t *testing.T) { configRepo := testconfig.FakeConfigRepository{} configRepo.Delete() configRepo.Login() ts, repo := createEndpointRepoForUpdate(configRepo, validApiInfoEndpoint) defer ts.Close() org := cf.OrganizationFields{} org.Name = "my-org" org.Guid = "my-org-guid" space := cf.SpaceFields{} space.Name = "my-space" space.Guid = "my-space-guid" config, _ := configRepo.Get() config.Target = ts.URL config.AccessToken = "some access token" config.RefreshToken = "some refresh token" config.OrganizationFields = org config.SpaceFields = space repo.UpdateEndpoint(ts.URL) assert.Equal(t, config.OrganizationFields, org) assert.Equal(t, config.SpaceFields, space) assert.Equal(t, config.AccessToken, "some access token") assert.Equal(t, config.RefreshToken, "some refresh token") }
func testSuccessfulAuthenticate(t *testing.T, args []string) (ui *testterm.FakeUI) { configRepo := testconfig.FakeConfigRepository{} configRepo.Delete() config, _ := configRepo.Get() auth := &testapi.FakeAuthenticationRepository{ AccessToken: "my_access_token", RefreshToken: "my_refresh_token", ConfigRepo: configRepo, } ui = callAuthenticate( args, configRepo, auth, ) savedConfig := testconfig.SavedConfiguration assert.Contains(t, ui.Outputs[0], config.Target) assert.Contains(t, ui.Outputs[2], "OK") assert.Equal(t, savedConfig.AccessToken, "my_access_token") assert.Equal(t, savedConfig.RefreshToken, "my_refresh_token") assert.Equal(t, auth.Email, "*****@*****.**") assert.Equal(t, auth.Password, "password") return }
func setupAuthWithEndpoint(t *testing.T, request testnet.TestRequest) (ts *httptest.Server, handler *testnet.TestHandler, auth UAAAuthenticationRepository) { ts, handler = testnet.NewTLSServer(t, []testnet.TestRequest{request}) configRepo := testconfig.FakeConfigRepository{} configRepo.Delete() config, err := configRepo.Get() assert.NoError(t, err) config.AuthorizationEndpoint = ts.URL config.AccessToken = "" gateway := net.NewUAAGateway() auth = NewUAAAuthenticationRepository(gateway, configRepo) return }
func createAuthenticationRepository(t *testing.T, apiServer *httptest.Server, authServer *httptest.Server) (*configuration.Configuration, api.AuthenticationRepository) { configRepo := testconfig.FakeConfigRepository{} configRepo.Delete() config, err := configRepo.Get() assert.NoError(t, err) config.AuthorizationEndpoint = authServer.URL config.Target = apiServer.URL config.AccessToken = "bearer initial-access-token" config.RefreshToken = "initial-refresh-token" authGateway := NewUAAGateway() authenticator := api.NewUAAAuthenticationRepository(authGateway, configRepo) return config, authenticator }
func TestUnsuccessfullyAuthenticatingWithoutInteractivity(t *testing.T) { configRepo := testconfig.FakeConfigRepository{} configRepo.Delete() config, _ := configRepo.Get() ui := callAuthenticate( []string{ "*****@*****.**", "bar", }, configRepo, &testapi.FakeAuthenticationRepository{AuthError: true, ConfigRepo: configRepo}, ) assert.Contains(t, ui.Outputs[0], config.Target) assert.Equal(t, ui.Outputs[1], "Authenticating...") assert.Equal(t, ui.Outputs[2], "FAILED") assert.Contains(t, ui.Outputs[3], "Error authenticating") assert.Equal(t, len(ui.Outputs), 4) }
func TestAuthenticateFailsWithUsage(t *testing.T) { configRepo := testconfig.FakeConfigRepository{} configRepo.Delete() auth := &testapi.FakeAuthenticationRepository{ AccessToken: "my_access_token", RefreshToken: "my_refresh_token", ConfigRepo: configRepo, } ui := callAuthenticate([]string{}, configRepo, auth) assert.True(t, ui.FailedWithUsage) ui = callAuthenticate([]string{"my-username"}, configRepo, auth) assert.True(t, ui.FailedWithUsage) ui = callAuthenticate([]string{"my-username", "my-password"}, configRepo, auth) assert.False(t, ui.FailedWithUsage) }
func TestUpdateEndpointWhenUrlIsMissingSchemeAndHttpsEndpointExists(t *testing.T) { configRepo := testconfig.FakeConfigRepository{} configRepo.Delete() configRepo.Login() ts, repo := createEndpointRepoForUpdate(configRepo, validApiInfoEndpoint) defer ts.Close() schemelessURL := strings.Replace(ts.URL, "https://", "", 1) endpoint, apiResponse := repo.UpdateEndpoint(schemelessURL) assert.Equal(t, "https://"+schemelessURL, endpoint) assert.True(t, apiResponse.IsSuccessful()) savedConfig := testconfig.SavedConfiguration assert.Equal(t, savedConfig.AccessToken, "") assert.Equal(t, savedConfig.AuthorizationEndpoint, "https://login.example.com") assert.Equal(t, savedConfig.Target, ts.URL) assert.Equal(t, savedConfig.ApiVersion, "42.0.0") }