github.com/franc20/ayesa_sap@v7.0.0-beta.28.0.20200124003224-302d4d52fa6c+incompatible/command/v7/space_users_command_test.go (about) 1 package v7_test 2 3 import ( 4 "errors" 5 6 "code.cloudfoundry.org/cli/actor/actionerror" 7 "code.cloudfoundry.org/cli/actor/v7action" 8 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv3/constant" 9 "code.cloudfoundry.org/cli/command/commandfakes" 10 . "code.cloudfoundry.org/cli/command/v7" 11 "code.cloudfoundry.org/cli/command/v7/v7fakes" 12 "code.cloudfoundry.org/cli/util/configv3" 13 "code.cloudfoundry.org/cli/util/ui" 14 . "github.com/onsi/ginkgo" 15 . "github.com/onsi/gomega" 16 . "github.com/onsi/gomega/gbytes" 17 ) 18 19 var _ = Describe("space-users Command", func() { 20 var ( 21 cmd SpaceUsersCommand 22 testUI *ui.UI 23 fakeConfig *commandfakes.FakeConfig 24 fakeSharedActor *commandfakes.FakeSharedActor 25 fakeActor *v7fakes.FakeSpaceUsersActor 26 binaryName string 27 executeErr error 28 ) 29 30 BeforeEach(func() { 31 testUI = ui.NewTestUI(nil, NewBuffer(), NewBuffer()) 32 fakeConfig = new(commandfakes.FakeConfig) 33 fakeSharedActor = new(commandfakes.FakeSharedActor) 34 fakeActor = new(v7fakes.FakeSpaceUsersActor) 35 36 cmd = SpaceUsersCommand{ 37 UI: testUI, 38 Config: fakeConfig, 39 SharedActor: fakeSharedActor, 40 Actor: fakeActor, 41 } 42 43 binaryName = "faceman" 44 fakeConfig.BinaryNameReturns(binaryName) 45 }) 46 47 JustBeforeEach(func() { 48 executeErr = cmd.Execute(nil) 49 }) 50 51 When("an error is encountered checking if the environment is setup correctly", func() { 52 BeforeEach(func() { 53 fakeSharedActor.CheckTargetReturns(actionerror.NotLoggedInError{BinaryName: binaryName}) 54 }) 55 56 It("returns an error", func() { 57 Expect(executeErr).To(MatchError(actionerror.NotLoggedInError{BinaryName: binaryName})) 58 59 Expect(fakeSharedActor.CheckTargetCallCount()).To(Equal(1)) 60 checkTargetedOrgArg, checkTargetedSpaceArg := fakeSharedActor.CheckTargetArgsForCall(0) 61 Expect(checkTargetedOrgArg).To(BeFalse()) 62 Expect(checkTargetedSpaceArg).To(BeFalse()) 63 64 }) 65 }) 66 67 When("the user is logged in and an org is targeted", func() { 68 BeforeEach(func() { 69 cmd.RequiredArgs.Organization = "some-org-name" 70 cmd.RequiredArgs.Space = "some-space-name" 71 }) 72 73 When("getting the current user fails", func() { 74 BeforeEach(func() { 75 fakeConfig.CurrentUserReturns(configv3.User{}, errors.New("get-current-user-error")) 76 }) 77 78 It("returns the error", func() { 79 Expect(executeErr).To(MatchError("get-current-user-error")) 80 }) 81 }) 82 83 When("getting the current user succeeds", func() { 84 BeforeEach(func() { 85 fakeConfig.CurrentUserReturns( 86 configv3.User{Name: "some-user"}, 87 nil) 88 }) 89 90 When("getting the org guid fails", func() { 91 BeforeEach(func() { 92 fakeActor.GetOrganizationByNameReturns( 93 v7action.Organization{}, 94 v7action.Warnings{"get-org-by-name-warning"}, 95 errors.New("get-org-by-name-error")) 96 }) 97 98 It("returns the error and warnings", func() { 99 Expect(executeErr).To(MatchError("get-org-by-name-error")) 100 Expect(testUI.Err).To(Say("get-org-by-name-warning")) 101 }) 102 }) 103 104 When("getting the org guid succeeds", func() { 105 BeforeEach(func() { 106 fakeActor.GetOrganizationByNameReturns( 107 v7action.Organization{ 108 Name: "org-1", 109 GUID: "org-guid", 110 }, 111 v7action.Warnings{"get-org-by-name-warning"}, 112 nil) 113 }) 114 115 When("getting the space guid fails", func() { 116 BeforeEach(func() { 117 fakeActor.GetSpaceByNameAndOrganizationReturns( 118 v7action.Space{}, 119 v7action.Warnings{"get-space-by-name-and-org-warning"}, 120 errors.New("get-space-by-name-and-org-error")) 121 }) 122 123 It("returns the error and warnings", func() { 124 Expect(executeErr).To(MatchError("get-space-by-name-and-org-error")) 125 Expect(testUI.Err).To(Say("get-space-by-name-and-org-warning")) 126 }) 127 }) 128 129 When("getting the space guid succeeds", func() { 130 BeforeEach(func() { 131 fakeActor.GetOrganizationByNameReturns( 132 v7action.Organization{ 133 Name: "org-1", 134 GUID: "org-guid", 135 }, 136 v7action.Warnings{"get-org-by-name-warning"}, 137 nil) 138 }) 139 140 When("There are all types of users", func() { 141 BeforeEach(func() { 142 abbyUser := v7action.User{ 143 Origin: "ldap", 144 PresentationName: "abby", 145 GUID: "abby-user-guid", 146 } 147 uaaAdmin := v7action.User{ 148 Origin: "uaa", 149 PresentationName: "admin", 150 GUID: "uaaAdmin-guid", 151 } 152 ldapAdmin := v7action.User{ 153 Origin: "ldap", 154 PresentationName: "admin", 155 GUID: "ldapAdmin-guid", 156 } 157 client := v7action.User{ 158 Origin: "", 159 PresentationName: "admin", 160 GUID: "client-guid", 161 } 162 spaceDeveloper := v7action.User{ 163 Origin: "uaa", 164 PresentationName: "billing-manager", 165 GUID: "spaceDeveloper-guid", 166 } 167 spaceAuditor := v7action.User{ 168 Origin: "uaa", 169 PresentationName: "org-auditor", 170 GUID: "spaceAuditor-guid", 171 } 172 173 spaceUsersByRole := map[constant.RoleType][]v7action.User{ 174 constant.SpaceManagerRole: {uaaAdmin, ldapAdmin, abbyUser, client}, 175 constant.SpaceDeveloperRole: {spaceDeveloper}, 176 constant.SpaceAuditorRole: {spaceAuditor}, 177 } 178 179 fakeActor.GetSpaceUsersByRoleTypeReturns( 180 spaceUsersByRole, 181 v7action.Warnings{"get-space-users-by-name-warning"}, 182 nil) 183 }) 184 185 It("displays the alphabetized space-users in the space with origins", func() { 186 Expect(executeErr).ToNot(HaveOccurred()) 187 188 Expect(testUI.Out).To(Say("Getting users in org some-org-name / space some-space-name as some-user...")) 189 Expect(testUI.Out).To(Say(`\n`)) 190 Expect(testUI.Out).To(Say(`\nSPACE MANAGER`)) 191 Expect(testUI.Out).To(Say(`\n abby \(ldap\)`)) 192 Expect(testUI.Out).To(Say(`\n admin \(uaa\)`)) 193 Expect(testUI.Out).To(Say(`\n admin \(ldap\)`)) 194 Expect(testUI.Out).To(Say(`\n admin \(client\)`)) 195 Expect(testUI.Out).To(Say(`\n`)) 196 Expect(testUI.Out).To(Say(`\nSPACE DEVELOPER`)) 197 Expect(testUI.Out).To(Say(`\n billing-manager \(uaa\)`)) 198 Expect(testUI.Out).To(Say(`\n`)) 199 Expect(testUI.Out).To(Say(`\nSPACE AUDITOR`)) 200 Expect(testUI.Out).To(Say(`\n org-auditor \(uaa\)`)) 201 202 Expect(testUI.Err).To(Say("get-space-users-by-name-warning")) 203 204 Expect(fakeActor.GetOrganizationByNameCallCount()).To(Equal(1)) 205 }) 206 }) 207 208 When("There are no space users", func() { 209 BeforeEach(func() { 210 spaceUsersByRole := map[constant.RoleType][]v7action.User{ 211 constant.OrgManagerRole: {}, 212 constant.OrgBillingManagerRole: {}, 213 constant.OrgAuditorRole: {}, 214 } 215 216 fakeActor.GetSpaceUsersByRoleTypeReturns( 217 spaceUsersByRole, 218 v7action.Warnings{"get-space-users-warning"}, 219 nil) 220 }) 221 222 It("displays the headings with an informative 'not found' message", func() { 223 Expect(executeErr).ToNot(HaveOccurred()) 224 225 Expect(testUI.Out).To(Say("Getting users in org some-org-name / space some-space-name as some-user...")) 226 Expect(testUI.Out).To(Say("\n\n")) 227 Expect(testUI.Out).To(Say(`SPACE MANAGER`)) 228 Expect(testUI.Out).To(Say("No SPACE MANAGER found")) 229 Expect(testUI.Out).To(Say("\n\n")) 230 Expect(testUI.Out).To(Say(`SPACE DEVELOPER`)) 231 Expect(testUI.Out).To(Say("No SPACE DEVELOPER found")) 232 Expect(testUI.Out).To(Say("\n\n")) 233 Expect(testUI.Out).To(Say(`SPACE AUDITOR`)) 234 Expect(testUI.Out).To(Say("No SPACE AUDITOR found")) 235 236 Expect(testUI.Err).To(Say("get-space-users-warning")) 237 238 Expect(fakeActor.GetOrganizationByNameCallCount()).To(Equal(1)) 239 }) 240 }) 241 242 When("there is an error getting space-users", func() { 243 BeforeEach(func() { 244 fakeActor.GetSpaceUsersByRoleTypeReturns( 245 nil, 246 v7action.Warnings{"get-space-users-warning"}, 247 errors.New("get-space-users-error")) 248 }) 249 250 It("returns an error with warnings", func() { 251 Expect(executeErr).To(MatchError("get-space-users-error")) 252 Expect(testUI.Err).To(Say("get-space-users-warning")) 253 }) 254 }) 255 }) 256 }) 257 }) 258 }) 259 })