github.com/loafoe/cli@v7.1.0+incompatible/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 fakeConfig.CurrentUserReturns(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 It("does not try to get the user", func() { 138 Expect(fakeActor.GetUserCallCount()).To(Equal(0)) 139 }) 140 141 It("deletes the space role correctly", func() { 142 givenRoleType, givenSpaceGUID, givenUserName, givenOrigin, givenIsClient := fakeActor.DeleteSpaceRoleArgsForCall(0) 143 Expect(givenRoleType).To(Equal(constant.SpaceAuditorRole)) 144 Expect(givenSpaceGUID).To(Equal("some-space-guid")) 145 Expect(givenUserName).To(Equal("target-user-name")) 146 Expect(givenOrigin).To(Equal("")) 147 Expect(givenIsClient).To(BeTrue()) 148 }) 149 150 It("displays flavor text and returns without error", func() { 151 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...")) 152 Expect(testUI.Out).To(Say("OK")) 153 Expect(executeErr).NotTo(HaveOccurred()) 154 }) 155 }) 156 157 When("both client and origin flags are provided", func() { 158 BeforeEach(func() { 159 cmd.Args.Organization = "some-org-name" 160 cmd.Args.Space = "some-space-name" 161 cmd.Args.Role = flag.SpaceRole{Role: "SpaceAuditor"} 162 cmd.Args.Username = "target-user-name" 163 cmd.Origin = "ldap" 164 cmd.IsClient = true 165 }) 166 167 It("returns an error", func() { 168 Expect(executeErr).To(MatchError(translatableerror.ArgumentCombinationError{ 169 Args: []string{"--client", "--origin"}, 170 })) 171 }) 172 }) 173 174 When("the role does not exist", func() { 175 BeforeEach(func() { 176 cmd.Args.Organization = "some-org-name" 177 cmd.Args.Space = "some-space-name" 178 cmd.Args.Role = flag.SpaceRole{Role: "SpaceAuditor"} 179 cmd.Args.Username = "target-user-name" 180 181 fakeActor.DeleteSpaceRoleReturns( 182 v7action.Warnings{"delete-role-warning"}, 183 nil, 184 ) 185 }) 186 187 It("displays warnings and returns without error", func() { 188 Expect(testUI.Err).To(Say("delete-role-warning")) 189 Expect(testUI.Out).To(Say("OK")) 190 Expect(executeErr).NotTo(HaveOccurred()) 191 }) 192 }) 193 194 When("invalid role arg is given", func() { 195 BeforeEach(func() { 196 cmd.Args.Role = flag.SpaceRole{Role: "Astronaut"} 197 }) 198 199 It("returns an error", func() { 200 Expect(executeErr).To(MatchError("Invalid role type.")) 201 }) 202 }) 203 204 When("getting the org fails", func() { 205 BeforeEach(func() { 206 cmd.Args.Role = flag.SpaceRole{Role: "SpaceAuditor"} 207 208 fakeActor.GetOrganizationByNameReturns( 209 resources.Organization{}, 210 v7action.Warnings{"get-user-warning"}, 211 errors.New("get-org-error"), 212 ) 213 }) 214 215 It("displays warnings and returns an error", func() { 216 Expect(testUI.Err).To(Say("get-user-warning")) 217 Expect(executeErr).To(MatchError("get-org-error")) 218 }) 219 }) 220 221 When("getting the space fails", func() { 222 BeforeEach(func() { 223 cmd.Args.Role = flag.SpaceRole{Role: "SpaceAuditor"} 224 225 fakeActor.GetSpaceByNameAndOrganizationReturns( 226 resources.Space{}, 227 v7action.Warnings{"get-space-warning"}, 228 errors.New("get-space-error"), 229 ) 230 }) 231 232 It("displays warnings and returns an error", func() { 233 Expect(testUI.Err).To(Say("get-space-warning")) 234 Expect(executeErr).To(MatchError("get-space-error")) 235 }) 236 }) 237 238 When("deleting the space role fails", func() { 239 BeforeEach(func() { 240 cmd.Args.Organization = "some-org-name" 241 cmd.Args.Space = "some-space-name" 242 cmd.Args.Role = flag.SpaceRole{Role: "SpaceAuditor"} 243 cmd.Args.Username = "target-user-name" 244 245 fakeActor.DeleteSpaceRoleReturns( 246 v7action.Warnings{"delete-role-warning"}, 247 errors.New("delete-role-error"), 248 ) 249 }) 250 251 It("displays warnings and returns without error", func() { 252 Expect(testUI.Err).To(Say("delete-role-warning")) 253 Expect(executeErr).To(MatchError("delete-role-error")) 254 }) 255 }) 256 })