github.com/franc20/ayesa_sap@v7.0.0-beta.28.0.20200124003224-302d4d52fa6c+incompatible/command/v7/set_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/ccerror" 6 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv3/constant" 7 "code.cloudfoundry.org/cli/cf/errors" 8 "code.cloudfoundry.org/cli/command/flag" 9 "code.cloudfoundry.org/cli/command/translatableerror" 10 "code.cloudfoundry.org/cli/command/v7/v7fakes" 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("set-space-role Command", func() { 22 var ( 23 cmd SetSpaceRoleCommand 24 testUI *ui.UI 25 fakeConfig *commandfakes.FakeConfig 26 fakeSharedActor *commandfakes.FakeSharedActor 27 fakeActor *v7fakes.FakeSetSpaceRoleActor 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.FakeSetSpaceRoleActor) 39 40 cmd = SetSpaceRoleCommand{ 41 UI: testUI, 42 Config: fakeConfig, 43 SharedActor: fakeSharedActor, 44 Actor: fakeActor, 45 } 46 47 binaryName = "faceman" 48 fakeConfig.BinaryNameReturns(binaryName) 49 }) 50 51 JustBeforeEach(func() { 52 executeErr = cmd.Execute(nil) 53 }) 54 55 BeforeEach(func() { 56 fakeConfig.CurrentUserReturns(configv3.User{Name: "current-user"}, nil) 57 58 fakeActor.GetOrganizationByNameReturns( 59 v7action.Organization{ 60 GUID: "some-org-guid", 61 Name: "some-org-name", 62 Metadata: nil, 63 }, 64 v7action.Warnings{"get-org-warning"}, 65 nil, 66 ) 67 68 fakeActor.GetSpaceByNameAndOrganizationReturns( 69 v7action.Space{GUID: "some-space-guid", Name: "some-space-name"}, 70 v7action.Warnings{"get-space-warning"}, 71 nil, 72 ) 73 }) 74 75 When("neither origin nor client flag is provided", func() { 76 BeforeEach(func() { 77 cmd.Args.Organization = "some-org-name" 78 cmd.Args.Space = "some-space-name" 79 cmd.Args.Role = flag.SpaceRole{Role: "SpaceDeveloper"} 80 cmd.Args.Username = "target-user-name" 81 }) 82 83 It("creates the space role", func() { 84 Expect(fakeActor.CreateSpaceRoleCallCount()).To(Equal(1)) 85 givenRoleType, givenOrgGUID, givenSpaceGUID, givenUserName, givenOrigin, givenIsClient := fakeActor.CreateSpaceRoleArgsForCall(0) 86 Expect(givenRoleType).To(Equal(constant.SpaceDeveloperRole)) 87 Expect(givenOrgGUID).To(Equal("some-org-guid")) 88 Expect(givenSpaceGUID).To(Equal("some-space-guid")) 89 Expect(givenUserName).To(Equal("target-user-name")) 90 Expect(givenOrigin).To(Equal("uaa")) 91 Expect(givenIsClient).To(BeFalse()) 92 }) 93 94 It("displays flavor text and returns without error", func() { 95 Expect(testUI.Out).To(Say("Assigning role SpaceDeveloper to user target-user-name in org some-org-name / space some-space-name as current-user...")) 96 Expect(testUI.Out).To(Say("OK")) 97 Expect(executeErr).NotTo(HaveOccurred()) 98 }) 99 }) 100 101 When("origin flag is provided", func() { 102 BeforeEach(func() { 103 cmd.Args.Organization = "some-org-name" 104 cmd.Args.Space = "some-space-name" 105 cmd.Args.Role = flag.SpaceRole{Role: "SpaceAuditor"} 106 cmd.Args.Username = "target-user-name" 107 cmd.Origin = "ldap" 108 }) 109 110 It("creates the space role", func() { 111 Expect(fakeActor.CreateSpaceRoleCallCount()).To(Equal(1)) 112 givenRoleType, givenOrgGUID, givenSpaceGUID, givenUserName, givenOrigin, givenIsClient := fakeActor.CreateSpaceRoleArgsForCall(0) 113 Expect(givenRoleType).To(Equal(constant.SpaceAuditorRole)) 114 Expect(givenOrgGUID).To(Equal("some-org-guid")) 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("Assigning role SpaceAuditor to 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("creates the space role correctly", func() { 142 givenRoleType, givenOrgGUID, givenSpaceGUID, givenUserName, givenOrigin, givenIsClient := fakeActor.CreateSpaceRoleArgsForCall(0) 143 Expect(givenRoleType).To(Equal(constant.SpaceAuditorRole)) 144 Expect(givenOrgGUID).To(Equal("some-org-guid")) 145 Expect(givenSpaceGUID).To(Equal("some-space-guid")) 146 Expect(givenUserName).To(Equal("target-user-name")) 147 Expect(givenOrigin).To(Equal("uaa")) 148 Expect(givenIsClient).To(BeTrue()) 149 }) 150 151 It("displays flavor text and returns without error", func() { 152 Expect(testUI.Out).To(Say("Assigning role SpaceAuditor to user target-user-name in org some-org-name / space some-space-name as current-user...")) 153 Expect(testUI.Out).To(Say("OK")) 154 Expect(executeErr).NotTo(HaveOccurred()) 155 }) 156 }) 157 158 When("both client and origin flags are provided", func() { 159 BeforeEach(func() { 160 cmd.Args.Organization = "some-org-name" 161 cmd.Args.Space = "some-space-name" 162 cmd.Args.Role = flag.SpaceRole{Role: "SpaceAuditor"} 163 cmd.Args.Username = "target-user-name" 164 cmd.Origin = "ldap" 165 cmd.IsClient = true 166 }) 167 168 It("returns an error", func() { 169 Expect(executeErr).To(MatchError(translatableerror.ArgumentCombinationError{ 170 Args: []string{"--client", "--origin"}, 171 })) 172 }) 173 }) 174 175 When("the role already exists", 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 182 fakeActor.CreateSpaceRoleReturns( 183 v7action.Warnings{"create-role-warning"}, 184 ccerror.RoleAlreadyExistsError{}, 185 ) 186 }) 187 188 It("displays warnings and returns without error", func() { 189 Expect(testUI.Err).To(Say("create-role-warning")) 190 Expect(testUI.Err).To(Say("User 'target-user-name' already has role 'SpaceAuditor' in org 'some-org-name' / space 'some-space-name'.")) 191 Expect(testUI.Out).To(Say("OK")) 192 Expect(executeErr).NotTo(HaveOccurred()) 193 }) 194 }) 195 196 When("invalid role arg is given", func() { 197 BeforeEach(func() { 198 cmd.Args.Role = flag.SpaceRole{Role: "Astronaut"} 199 }) 200 201 It("returns an error", func() { 202 Expect(executeErr).To(MatchError("Invalid role type.")) 203 }) 204 }) 205 206 When("getting the org fails", func() { 207 BeforeEach(func() { 208 cmd.Args.Role = flag.SpaceRole{Role: "SpaceAuditor"} 209 210 fakeActor.GetOrganizationByNameReturns( 211 v7action.Organization{}, 212 v7action.Warnings{"get-user-warning"}, 213 errors.New("get-org-error"), 214 ) 215 }) 216 217 It("displays warnings and returns an error", func() { 218 Expect(testUI.Err).To(Say("get-user-warning")) 219 Expect(executeErr).To(MatchError("get-org-error")) 220 }) 221 }) 222 223 When("getting the space fails", func() { 224 BeforeEach(func() { 225 cmd.Args.Role = flag.SpaceRole{Role: "SpaceAuditor"} 226 227 fakeActor.GetSpaceByNameAndOrganizationReturns( 228 v7action.Space{}, 229 v7action.Warnings{"get-space-warning"}, 230 errors.New("get-space-error"), 231 ) 232 }) 233 234 It("displays warnings and returns an error", func() { 235 Expect(testUI.Err).To(Say("get-space-warning")) 236 Expect(executeErr).To(MatchError("get-space-error")) 237 }) 238 }) 239 240 When("creating the space role fails", func() { 241 BeforeEach(func() { 242 cmd.Args.Organization = "some-org-name" 243 cmd.Args.Space = "some-space-name" 244 cmd.Args.Role = flag.SpaceRole{Role: "SpaceAuditor"} 245 cmd.Args.Username = "target-user-name" 246 247 fakeActor.CreateSpaceRoleReturns( 248 v7action.Warnings{"create-role-warning"}, 249 errors.New("create-role-error"), 250 ) 251 }) 252 253 It("displays warnings and returns without error", func() { 254 Expect(testUI.Err).To(Say("create-role-warning")) 255 Expect(executeErr).To(MatchError("create-role-error")) 256 }) 257 }) 258 })