github.com/DaAlbrecht/cf-cli@v0.0.0-20231128151943-1fe19bb400b9/command/v7/unset_space_role_command_test.go (about) 1 package v7_test 2 3 import ( 4 "code.cloudfoundry.org/cli/actor/v7action" 5 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv3/constant" 6 "code.cloudfoundry.org/cli/cf/errors" 7 "code.cloudfoundry.org/cli/command/flag" 8 "code.cloudfoundry.org/cli/command/translatableerror" 9 "code.cloudfoundry.org/cli/command/v7/v7fakes" 10 "code.cloudfoundry.org/cli/resources" 11 "code.cloudfoundry.org/cli/util/configv3" 12 13 "code.cloudfoundry.org/cli/command/commandfakes" 14 . "code.cloudfoundry.org/cli/command/v7" 15 "code.cloudfoundry.org/cli/util/ui" 16 . "github.com/onsi/ginkgo" 17 . "github.com/onsi/gomega" 18 . "github.com/onsi/gomega/gbytes" 19 ) 20 21 var _ = Describe("unset-space-role Command", func() { 22 var ( 23 cmd UnsetSpaceRoleCommand 24 testUI *ui.UI 25 fakeConfig *commandfakes.FakeConfig 26 fakeSharedActor *commandfakes.FakeSharedActor 27 fakeActor *v7fakes.FakeActor 28 binaryName string 29 executeErr error 30 input *Buffer 31 ) 32 33 BeforeEach(func() { 34 input = NewBuffer() 35 testUI = ui.NewTestUI(input, NewBuffer(), NewBuffer()) 36 fakeConfig = new(commandfakes.FakeConfig) 37 fakeSharedActor = new(commandfakes.FakeSharedActor) 38 fakeActor = new(v7fakes.FakeActor) 39 40 cmd = UnsetSpaceRoleCommand{ 41 BaseCommand: BaseCommand{ 42 UI: testUI, 43 Config: fakeConfig, 44 SharedActor: fakeSharedActor, 45 Actor: fakeActor, 46 }, 47 } 48 49 binaryName = "faceman" 50 fakeConfig.BinaryNameReturns(binaryName) 51 }) 52 53 JustBeforeEach(func() { 54 executeErr = cmd.Execute(nil) 55 }) 56 57 BeforeEach(func() { 58 fakeActor.GetCurrentUserReturns(configv3.User{Name: "current-user"}, nil) 59 60 fakeActor.GetOrganizationByNameReturns( 61 resources.Organization{ 62 GUID: "some-org-guid", 63 Name: "some-org-name", 64 Metadata: nil, 65 }, 66 v7action.Warnings{"get-org-warning"}, 67 nil, 68 ) 69 70 fakeActor.GetSpaceByNameAndOrganizationReturns( 71 resources.Space{GUID: "some-space-guid", Name: "some-space-name"}, 72 v7action.Warnings{"get-space-warning"}, 73 nil, 74 ) 75 }) 76 77 When("neither origin nor client flag is provided", func() { 78 BeforeEach(func() { 79 cmd.Args.Organization = "some-org-name" 80 cmd.Args.Space = "some-space-name" 81 cmd.Args.Role = flag.SpaceRole{Role: "SpaceDeveloper"} 82 cmd.Args.Username = "target-user-name" 83 }) 84 85 It("deletes the space role", func() { 86 Expect(fakeActor.DeleteSpaceRoleCallCount()).To(Equal(1)) 87 givenRoleType, givenSpaceGUID, givenUserName, givenOrigin, givenIsClient := fakeActor.DeleteSpaceRoleArgsForCall(0) 88 Expect(givenRoleType).To(Equal(constant.SpaceDeveloperRole)) 89 Expect(givenSpaceGUID).To(Equal("some-space-guid")) 90 Expect(givenUserName).To(Equal("target-user-name")) 91 Expect(givenOrigin).To(Equal("")) 92 Expect(givenIsClient).To(BeFalse()) 93 }) 94 95 It("displays flavor text and returns without error", func() { 96 Expect(testUI.Out).To(Say("Removing role SpaceDeveloper from user target-user-name in org some-org-name / space some-space-name as current-user...")) 97 Expect(testUI.Out).To(Say("OK")) 98 Expect(executeErr).NotTo(HaveOccurred()) 99 }) 100 }) 101 102 When("origin flag is provided", func() { 103 BeforeEach(func() { 104 cmd.Args.Organization = "some-org-name" 105 cmd.Args.Space = "some-space-name" 106 cmd.Args.Role = flag.SpaceRole{Role: "SpaceAuditor"} 107 cmd.Args.Username = "target-user-name" 108 cmd.Origin = "ldap" 109 }) 110 111 It("deletes the space role", func() { 112 Expect(fakeActor.DeleteSpaceRoleCallCount()).To(Equal(1)) 113 givenRoleType, givenSpaceGUID, givenUserName, givenOrigin, givenIsClient := fakeActor.DeleteSpaceRoleArgsForCall(0) 114 Expect(givenRoleType).To(Equal(constant.SpaceAuditorRole)) 115 Expect(givenSpaceGUID).To(Equal("some-space-guid")) 116 Expect(givenUserName).To(Equal("target-user-name")) 117 Expect(givenOrigin).To(Equal("ldap")) 118 Expect(givenIsClient).To(BeFalse()) 119 }) 120 121 It("displays flavor text and returns without error", func() { 122 Expect(testUI.Out).To(Say("Removing role SpaceAuditor from user target-user-name in org some-org-name / space some-space-name as current-user...")) 123 Expect(testUI.Out).To(Say("OK")) 124 Expect(executeErr).NotTo(HaveOccurred()) 125 }) 126 }) 127 128 When("client flag is provided", func() { 129 BeforeEach(func() { 130 cmd.Args.Organization = "some-org-name" 131 cmd.Args.Space = "some-space-name" 132 cmd.Args.Role = flag.SpaceRole{Role: "SpaceAuditor"} 133 cmd.Args.Username = "target-user-name" 134 cmd.IsClient = true 135 }) 136 137 When("the role is space supporter", func() { 138 BeforeEach(func() { 139 cmd.Args.Role = flag.SpaceRole{Role: "SpaceSupporter"} 140 }) 141 142 It("deletes the space role correctly", func() { 143 givenRoleType, givenSpaceGUID, givenUserName, givenOrigin, givenIsClient := fakeActor.DeleteSpaceRoleArgsForCall(0) 144 Expect(givenRoleType).To(Equal(constant.SpaceSupporterRole)) 145 Expect(givenSpaceGUID).To(Equal("some-space-guid")) 146 Expect(givenUserName).To(Equal("target-user-name")) 147 Expect(givenOrigin).To(Equal("")) 148 Expect(givenIsClient).To(BeTrue()) 149 150 Expect(testUI.Out).To(Say("Removing role SpaceSupporter from user target-user-name in org some-org-name / space some-space-name as current-user...")) 151 Expect(testUI.Out).To(Say("OK")) 152 Expect(executeErr).NotTo(HaveOccurred()) 153 }) 154 }) 155 It("does not try to get the user", func() { 156 Expect(fakeActor.GetUserCallCount()).To(Equal(0)) 157 }) 158 159 It("deletes the space role correctly", func() { 160 givenRoleType, givenSpaceGUID, givenUserName, givenOrigin, givenIsClient := fakeActor.DeleteSpaceRoleArgsForCall(0) 161 Expect(givenRoleType).To(Equal(constant.SpaceAuditorRole)) 162 Expect(givenSpaceGUID).To(Equal("some-space-guid")) 163 Expect(givenUserName).To(Equal("target-user-name")) 164 Expect(givenOrigin).To(Equal("")) 165 Expect(givenIsClient).To(BeTrue()) 166 }) 167 168 It("displays flavor text and returns without error", func() { 169 Expect(testUI.Out).To(Say("Removing role SpaceAuditor from user target-user-name in org some-org-name / space some-space-name as current-user...")) 170 Expect(testUI.Out).To(Say("OK")) 171 Expect(executeErr).NotTo(HaveOccurred()) 172 }) 173 }) 174 175 When("both client and origin flags are provided", func() { 176 BeforeEach(func() { 177 cmd.Args.Organization = "some-org-name" 178 cmd.Args.Space = "some-space-name" 179 cmd.Args.Role = flag.SpaceRole{Role: "SpaceAuditor"} 180 cmd.Args.Username = "target-user-name" 181 cmd.Origin = "ldap" 182 cmd.IsClient = true 183 }) 184 185 It("returns an error", func() { 186 Expect(executeErr).To(MatchError(translatableerror.ArgumentCombinationError{ 187 Args: []string{"--client", "--origin"}, 188 })) 189 }) 190 }) 191 192 When("the role does not exist", func() { 193 BeforeEach(func() { 194 cmd.Args.Organization = "some-org-name" 195 cmd.Args.Space = "some-space-name" 196 cmd.Args.Role = flag.SpaceRole{Role: "SpaceAuditor"} 197 cmd.Args.Username = "target-user-name" 198 199 fakeActor.DeleteSpaceRoleReturns( 200 v7action.Warnings{"delete-role-warning"}, 201 nil, 202 ) 203 }) 204 205 It("displays warnings and returns without error", func() { 206 Expect(testUI.Err).To(Say("delete-role-warning")) 207 Expect(testUI.Out).To(Say("OK")) 208 Expect(executeErr).NotTo(HaveOccurred()) 209 }) 210 }) 211 212 When("invalid role arg is given", func() { 213 BeforeEach(func() { 214 cmd.Args.Role = flag.SpaceRole{Role: "Astronaut"} 215 }) 216 217 It("returns an error", func() { 218 Expect(executeErr).To(MatchError("Invalid role type.")) 219 }) 220 }) 221 222 When("getting the org fails", func() { 223 BeforeEach(func() { 224 cmd.Args.Role = flag.SpaceRole{Role: "SpaceAuditor"} 225 226 fakeActor.GetOrganizationByNameReturns( 227 resources.Organization{}, 228 v7action.Warnings{"get-user-warning"}, 229 errors.New("get-org-error"), 230 ) 231 }) 232 233 It("displays warnings and returns an error", func() { 234 Expect(testUI.Err).To(Say("get-user-warning")) 235 Expect(executeErr).To(MatchError("get-org-error")) 236 }) 237 }) 238 239 When("getting the space fails", func() { 240 BeforeEach(func() { 241 cmd.Args.Role = flag.SpaceRole{Role: "SpaceAuditor"} 242 243 fakeActor.GetSpaceByNameAndOrganizationReturns( 244 resources.Space{}, 245 v7action.Warnings{"get-space-warning"}, 246 errors.New("get-space-error"), 247 ) 248 }) 249 250 It("displays warnings and returns an error", func() { 251 Expect(testUI.Err).To(Say("get-space-warning")) 252 Expect(executeErr).To(MatchError("get-space-error")) 253 }) 254 }) 255 256 When("deleting the space role fails", func() { 257 BeforeEach(func() { 258 cmd.Args.Organization = "some-org-name" 259 cmd.Args.Space = "some-space-name" 260 cmd.Args.Role = flag.SpaceRole{Role: "SpaceAuditor"} 261 cmd.Args.Username = "target-user-name" 262 263 fakeActor.DeleteSpaceRoleReturns( 264 v7action.Warnings{"delete-role-warning"}, 265 errors.New("delete-role-error"), 266 ) 267 }) 268 269 It("displays warnings and returns without error", func() { 270 Expect(testUI.Err).To(Say("delete-role-warning")) 271 Expect(executeErr).To(MatchError("delete-role-error")) 272 }) 273 }) 274 })