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 createUsersRepo(t *testing.T, ccReqs []testnet.TestRequest, uaaReqs []testnet.TestRequest) (cc *httptest.Server, ccHandler *testnet.TestHandler, uaa *httptest.Server, uaaHandler *testnet.TestHandler, repo UserRepository) { ccTarget := "" uaaTarget := "" if len(ccReqs) > 0 { cc, ccHandler = testnet.NewTLSServer(t, ccReqs) ccTarget = cc.URL } if len(uaaReqs) > 0 { uaa, uaaHandler = testnet.NewTLSServer(t, uaaReqs) uaaTarget = uaa.URL } org := cf.OrganizationFields{} org.Guid = "some-org-guid" config := &configuration.Configuration{ AccessToken: "BEARER my_access_token", Target: ccTarget, OrganizationFields: org, } ccGateway := net.NewCloudControllerGateway() uaaGateway := net.NewUAAGateway() endpointRepo := &testapi.FakeEndpointRepo{} endpointRepo.UAAEndpointReturns.Endpoint = uaaTarget repo = NewCloudControllerUserRepository(config, uaaGateway, ccGateway, endpointRepo) return }
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 TestDeleteTargetedOrganizationClearsConfig(t *testing.T) { configRepo := &testconfig.FakeConfigRepository{} config, _ := configRepo.Get() organizationFields := cf.OrganizationFields{} organizationFields.Name = "org-to-delete" organizationFields.Guid = "org-to-delete-guid" config.OrganizationFields = organizationFields spaceFields := cf.SpaceFields{} spaceFields.Name = "space-to-delete" config.SpaceFields = spaceFields configRepo.Save() org := cf.Organization{} org.OrganizationFields = organizationFields orgRepo := &testapi.FakeOrgRepository{FindByNameOrganization: org} deleteOrg(t, "Yes", []string{"org-to-delete"}, orgRepo) updatedConfig, err := configRepo.Get() assert.NoError(t, err) assert.Equal(t, updatedConfig.OrganizationFields, cf.OrganizationFields{}) assert.Equal(t, updatedConfig.SpaceFields, cf.SpaceFields{}) }
func TestDeleteUntargetedOrganizationDoesNotClearConfig(t *testing.T) { org := cf.Organization{} org.Name = "org-to-delete" org.Guid = "org-to-delete-guid" orgRepo := &testapi.FakeOrgRepository{FindByNameOrganization: org} configRepo := &testconfig.FakeConfigRepository{} config, _ := configRepo.Get() otherOrgFields := cf.OrganizationFields{} otherOrgFields.Guid = "some-other-org-guid" otherOrgFields.Name = "some-other-org" config.OrganizationFields = otherOrgFields spaceFields := cf.SpaceFields{} spaceFields.Name = "some-other-space" config.SpaceFields = spaceFields configRepo.Save() deleteOrg(t, "Yes", []string{"org-to-delete"}, orgRepo) updatedConfig, err := configRepo.Get() assert.NoError(t, err) assert.Equal(t, updatedConfig.OrganizationFields.Name, "some-other-org") assert.Equal(t, updatedConfig.SpaceFields.Name, "some-other-space") }
func TestSuccessfullyLoggingInWithOrgSetInConfig(t *testing.T) { org := cf.OrganizationFields{} org.Name = "my-org" org.Guid = "my-org-guid" existingConfig := configuration.Configuration{OrganizationFields: org} c := LoginTestContext{ Flags: []string{"-s", "my-space"}, Inputs: []string{"http://api.example.com", "*****@*****.**", "password"}, Config: existingConfig, } callLogin(t, &c, func(c *LoginTestContext) { c.orgRepo.FindByNameOrganization = cf.Organization{} }) savedConfig := testconfig.SavedConfiguration assert.Equal(t, savedConfig.Target, "http://api.example.com") assert.Equal(t, savedConfig.OrganizationFields.Guid, "my-org-guid") assert.Equal(t, savedConfig.SpaceFields.Guid, "my-space-guid") assert.Equal(t, savedConfig.AccessToken, "my_access_token") assert.Equal(t, savedConfig.RefreshToken, "my_refresh_token") assert.Equal(t, c.endpointRepo.UpdateEndpointReceived, "http://api.example.com") assert.Equal(t, c.authRepo.Email, "*****@*****.**") assert.Equal(t, c.authRepo.Password, "password") assert.True(t, c.ui.ShowConfigurationCalled) }
func TestListDomains(t *testing.T) { orgFields := cf.OrganizationFields{} orgFields.Name = "my-org" orgFields.Guid = "my-org-guid" reqFactory := &testreq.FakeReqFactory{LoginSuccess: true, TargetedOrgSuccess: true, OrganizationFields: orgFields} domain1 := cf.Domain{} domain1.Shared = true domain1.Name = "Domain1" domain2 := cf.Domain{} domain2.Shared = false domain2.Name = "Domain2" domain3 := cf.Domain{} domain3.Shared = false domain3.Name = "Domain3" domainRepo := &testapi.FakeDomainRepository{ ListSharedDomainsDomains: []cf.Domain{domain1}, ListDomainsForOrgDomains: []cf.Domain{domain2, domain3}, } ui := callListDomains(t, []string{}, reqFactory, domainRepo) assert.Equal(t, domainRepo.ListDomainsForOrgDomainsGuid, "my-org-guid") testassert.SliceContains(t, ui.Outputs, testassert.Lines{ {"Getting domains in org", "my-org", "my-user"}, {"name", "status"}, {"Domain1", "shared"}, {"Domain2", "owned"}, {"Domain3", "owned"}, }) }
func TestMarketplaceServices(t *testing.T) { plan := cf.ServicePlanFields{} plan.Name = "service-plan-a" plan2 := cf.ServicePlanFields{} plan2.Name = "service-plan-b" plan3 := cf.ServicePlanFields{} plan3.Name = "service-plan-c" plan4 := cf.ServicePlanFields{} plan4.Name = "service-plan-d" offering := cf.ServiceOffering{} offering.Label = "zzz-my-service-offering" offering.Description = "service offering 1 description" offering.Plans = []cf.ServicePlanFields{plan, plan2} offering2 := cf.ServiceOffering{} offering2.Label = "aaa-my-service-offering" offering2.Description = "service offering 2 description" offering2.Plans = []cf.ServicePlanFields{plan3, plan4} serviceOfferings := []cf.ServiceOffering{offering, offering2} serviceRepo := &testapi.FakeServiceRepo{ServiceOfferings: serviceOfferings} token, err := testconfig.CreateAccessTokenWithTokenInfo(configuration.TokenInfo{ Username: "******", }) assert.NoError(t, err) 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 := &configuration.Configuration{ SpaceFields: space, OrganizationFields: org, AccessToken: token, } ui := callMarketplaceServices(t, config, serviceRepo) testassert.SliceContains(t, ui.Outputs, testassert.Lines{ {"Getting services from marketplace in org", "my-org", "my-space", "my-user"}, {"OK"}, {"service", "plans", "description"}, {"aaa-my-service-offering", "service offering 2 description", "service-plan-c", "service-plan-d"}, {"zzz-my-service-offering", "service offering 1 description", "service-plan-a", "service-plan-b"}, }) }
func createDomainRepo(t *testing.T, reqs []testnet.TestRequest) (ts *httptest.Server, handler *testnet.TestHandler, repo DomainRepository) { ts, handler = testnet.NewTLSServer(t, reqs) org := cf.OrganizationFields{} org.Guid = "my-org-guid" space := cf.SpaceFields{} space.Guid = "my-space-guid" config := &configuration.Configuration{ AccessToken: "BEARER my_access_token", Target: ts.URL, SpaceFields: space, OrganizationFields: org, } gateway := net.NewCloudControllerGateway() repo = NewCloudControllerDomainRepository(config, gateway) return }
func TestListDomainsWhenThereAreNone(t *testing.T) { orgFields := cf.OrganizationFields{} orgFields.Name = "my-org" orgFields.Guid = "my-org-guid" reqFactory := &testreq.FakeReqFactory{LoginSuccess: true, TargetedOrgSuccess: true, OrganizationFields: orgFields} domainRepo := &testapi.FakeDomainRepository{ ListSharedDomainsDomains: []cf.Domain{}, ListDomainsForOrgDomains: []cf.Domain{}, } ui := callListDomains(t, []string{}, reqFactory, domainRepo) testassert.SliceContains(t, ui.Outputs, testassert.Lines{ {"Getting domains in org", "my-org", "my-user"}, {"No domains found"}, }) }
func TestSetOrganization(t *testing.T) { repo := NewConfigurationDiskRepository() config := repo.loadDefaultConfig(t) defer repo.restoreConfig(t) config.OrganizationFields = cf.OrganizationFields{} org := cf.OrganizationFields{} org.Name = "my-org" org.Guid = "my-org-guid" err := repo.SetOrganization(org) assert.NoError(t, err) repo.Save() savedConfig, err := repo.Get() assert.NoError(t, err) assert.Equal(t, savedConfig.OrganizationFields, org) assert.Equal(t, savedConfig.SpaceFields, cf.SpaceFields{}) }
func callPush(t *testing.T, args []string, deps pushDependencies) (ui *testterm.FakeUI) { ui = new(testterm.FakeUI) ctxt := testcmd.NewContext("push", args) token, err := testconfig.CreateAccessTokenWithTokenInfo(configuration.TokenInfo{ Username: "******", }) assert.NoError(t, err) 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 := &configuration.Configuration{ SpaceFields: space, OrganizationFields: org, AccessToken: token, } manifestRepo := deps.manifestRepo starter := deps.starter stopper := deps.stopper binder := deps.binder appRepo := deps.appRepo domainRepo := deps.domainRepo routeRepo := deps.routeRepo stackRepo := deps.stackRepo appBitsRepo := deps.appBitsRepo serviceRepo := deps.serviceRepo cmd := NewPush(ui, config, manifestRepo, starter, stopper, binder, appRepo, domainRepo, routeRepo, stackRepo, serviceRepo, appBitsRepo) reqFactory := &testreq.FakeReqFactory{LoginSuccess: true, TargetedSpaceSuccess: true} testcmd.RunCommand(cmd, ctxt, reqFactory) return }
func TestSetOrganization(t *testing.T) { withFakeHome(t, func() { repo := NewConfigurationDiskRepository() config, err := repo.Get() assert.NoError(t, err) config.OrganizationFields = cf.OrganizationFields{} org := cf.OrganizationFields{} org.Name = "my-org" org.Guid = "my-org-guid" err = repo.SetOrganization(org) assert.NoError(t, err) repo.Save() savedConfig, err := repo.Get() assert.NoError(t, err) assert.Equal(t, savedConfig.OrganizationFields, org) assert.Equal(t, savedConfig.SpaceFields, cf.SpaceFields{}) }) }
func TestSpaceRequirement(t *testing.T) { ui := new(testterm.FakeUI) 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 := &configuration.Configuration{ OrganizationFields: org, SpaceFields: space, } req := newTargetedSpaceRequirement(ui, config) success := req.Execute() assert.True(t, success) config.SpaceFields = cf.SpaceFields{} req = newTargetedSpaceRequirement(ui, config) success = req.Execute() assert.False(t, success) testassert.SliceContains(t, ui.Outputs, testassert.Lines{ {"FAILED"}, {"No space targeted"}, }) ui.ClearOutputs() config.OrganizationFields = cf.OrganizationFields{} req = newTargetedSpaceRequirement(ui, config) success = req.Execute() assert.False(t, success) testassert.SliceContains(t, ui.Outputs, testassert.Lines{ {"FAILED"}, {"No org and space targeted"}, }) }
func callSetSpaceRole(t *testing.T, args []string, reqFactory *testreq.FakeReqFactory, spaceRepo *testapi.FakeSpaceRepository, userRepo *testapi.FakeUserRepository) (ui *testterm.FakeUI) { ui = new(testterm.FakeUI) ctxt := testcmd.NewContext("set-space-role", args) token, err := testconfig.CreateAccessTokenWithTokenInfo(configuration.TokenInfo{ Username: "******", }) assert.NoError(t, err) space := cf.SpaceFields{} space.Name = "my-space" org := cf.OrganizationFields{} org.Name = "my-org" org.Guid = "my-org-guid" config := &configuration.Configuration{ SpaceFields: space, OrganizationFields: org, AccessToken: token, } cmd := NewSetSpaceRole(ui, config, spaceRepo, userRepo) testcmd.RunCommand(cmd, ctxt, reqFactory) return }