Expect(runCommand("foo")).ToNot(HavePassedRequirements()) }) It("requires the user to provide a feature flag", func() { requirementsFactory.LoginSuccess = true Expect(runCommand()).ToNot(HavePassedRequirements()) }) }) Describe("when logged in", func() { BeforeEach(func() { flag := models.FeatureFlag{ Name: "route_creation", Enabled: false, } flagRepo.FindByNameReturns(flag, nil) }) It("lists the state of the specified feature flag", func() { runCommand("route_creation") Expect(ui.Outputs).To(ContainSubstrings( []string{"Retrieving status of route_creation as my-user..."}, []string{"Feature", "State"}, []string{"route_creation", "disabled"}, )) }) Context("when an error occurs", func() { BeforeEach(func() { flagRepo.FindByNameReturns(models.FeatureFlag{}, errors.New("An error occurred.")) })
}) Context("when the config version is >=2.37.0", func() { BeforeEach(func() { configRepo.SetApiVersion("2.37.0") }) It("requests the set_roles_by_username flag", func() { cmd.Requirements(factory, flagContext) Expect(flagRepo.FindByNameCallCount()).To(Equal(1)) Expect(flagRepo.FindByNameArgsForCall(0)).To(Equal("unset_roles_by_username")) }) Context("when the set_roles_by_username flag exists and is enabled", func() { BeforeEach(func() { flagRepo.FindByNameReturns(models.FeatureFlag{Enabled: true}, nil) }) It("returns a UserRequirement", func() { actualRequirements, err := cmd.Requirements(factory, flagContext) Expect(err).NotTo(HaveOccurred()) Expect(factory.NewUserRequirementCallCount()).To(Equal(1)) actualUsername, actualWantGuid := factory.NewUserRequirementArgsForCall(0) Expect(actualUsername).To(Equal("the-user-name")) Expect(actualWantGuid).To(BeFalse()) Expect(actualRequirements).To(ContainElement(userRequirement)) }) }) Context("when the set_roles_by_username flag exists and is disabled", func() {
err := errors.NewHttpError(400, errors.ORG_EXISTS, "org already exists") orgRepo.CreateReturns(err) runCommand("my-org") Expect(ui.Outputs).To(ContainSubstrings( []string{"Creating org", "my-org"}, []string{"OK"}, []string{"my-org", "already exists"}, )) }) Context("when CC api version supports assigning orgRole by name, and feature-flag 'set_roles_by_username' is enabled", func() { BeforeEach(func() { config.SetApiVersion("2.37.0") flagRepo.FindByNameReturns(models.FeatureFlag{ Name: "set_roles_by_username", Enabled: true, }, nil) orgRepo.FindByNameReturns(models.Organization{ OrganizationFields: models.OrganizationFields{ Guid: "my-org-guid", }, }, nil) }) It("assigns manager role to user", func() { runCommand("my-org") orgGuid, role, userGuid, userName := orgRoleSetter.SetOrgRoleArgsForCall(0) Ω(orgRoleSetter.SetOrgRoleCallCount()).To(Equal(1)) Ω(orgGuid).To(Equal("my-org-guid"))