Expect(spaceGUID).To(Equal("the-space-guid")) Expect(orgGUID).To(Equal("the-org-guid")) Expect(role).To(Equal("SpaceManager")) }) It("tells the user it assigned the role", func() { cmd.Execute(flagContext) Expect(ui.Outputs).To(ContainSubstrings( []string{"Assigning role", "SpaceManager", "the-username", "the-org", "the-username"}, []string{"OK"}, )) }) Context("when the call to CC fails", func() { BeforeEach(func() { userRepo.SetSpaceRoleByUsernameReturns(errors.New("user-repo-error")) }) It("panics and prints a failure message", func() { Expect(func() { cmd.Execute(flagContext) }).To(Panic()) Expect(ui.Outputs).To(BeInDisplayOrder( []string{"FAILED"}, []string{"user-repo-error"}, )) }) }) }) }) }) })
BeforeEach(func() { flagRepo.FindByNameReturns(models.FeatureFlag{Enabled: true}, nil) }) Context("when setting role succeed", func() { It("uses the new endpoint to set space role by name", func() { runCommand("my-user", "some-org", "some-space", "SpaceManager") Expect(userRepo.SetSpaceRoleByGuidCallCount()).To(BeZero()) Expect(userRepo.SetSpaceRoleByUsernameCallCount()).To(Equal(1)) }) }) Context("when setting role fails", func() { It("returns the error to user", func() { userRepo.SetSpaceRoleByUsernameReturns(errors.New("oh no, it is broken")) runCommand("my-user", "some-org", "some-space", "SpaceManager") Expect(ui.Outputs).To(ContainSubstrings( []string{"FAILED"}, []string{"it is broken"}, )) }) }) }) Context("when feature flag 'set_roles_by_username' is disabled", func() { BeforeEach(func() { flagRepo.FindByNameReturns(models.FeatureFlag{Enabled: false}, nil)