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