github.com/franc20/ayesa_sap@v7.0.0-beta.28.0.20200124003224-302d4d52fa6c+incompatible/command/v7/set_org_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-org-role Command", func() { 22 var ( 23 cmd SetOrgRoleCommand 24 testUI *ui.UI 25 fakeConfig *commandfakes.FakeConfig 26 fakeSharedActor *commandfakes.FakeSharedActor 27 fakeActor *v7fakes.FakeSetOrgRoleActor 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.FakeSetOrgRoleActor) 39 40 cmd = SetOrgRoleCommand{ 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{GUID: "some-org-guid", Name: "some-org-name"}, 60 v7action.Warnings{"get-org-warning"}, 61 nil, 62 ) 63 64 fakeActor.GetUserReturns( 65 v7action.User{GUID: "target-user-guid", Username: "target-user"}, 66 nil, 67 ) 68 }) 69 70 When("neither origin nor client flag is provided", func() { 71 BeforeEach(func() { 72 cmd.Args.Organization = "some-org-name" 73 cmd.Args.Role = flag.OrgRole{Role: "OrgAuditor"} 74 cmd.Args.Username = "target-user-name" 75 }) 76 77 It("creates the org role", func() { 78 Expect(fakeActor.CreateOrgRoleCallCount()).To(Equal(1)) 79 givenRoleType, givenOrgGUID, givenUserName, givenOrigin, givenIsClient := fakeActor.CreateOrgRoleArgsForCall(0) 80 Expect(givenRoleType).To(Equal(constant.OrgAuditorRole)) 81 Expect(givenOrgGUID).To(Equal("some-org-guid")) 82 Expect(givenUserName).To(Equal("target-user-name")) 83 Expect(givenOrigin).To(Equal("uaa")) 84 Expect(givenIsClient).To(BeFalse()) 85 }) 86 87 It("displays flavor text and returns without error", func() { 88 Expect(testUI.Out).To(Say("Assigning role OrgAuditor to user target-user-name in org some-org-name as current-user...")) 89 Expect(testUI.Out).To(Say("OK")) 90 Expect(executeErr).NotTo(HaveOccurred()) 91 }) 92 }) 93 94 When("origin flag is provided", func() { 95 BeforeEach(func() { 96 cmd.Args.Organization = "some-org-name" 97 cmd.Args.Role = flag.OrgRole{Role: "OrgAuditor"} 98 cmd.Args.Username = "target-user-name" 99 cmd.Origin = "ldap" 100 }) 101 102 It("creates the org role by username", func() { 103 Expect(fakeActor.CreateOrgRoleCallCount()).To(Equal(1)) 104 givenRoleType, givenOrgGUID, givenUserName, givenOrigin, givenIsClient := fakeActor.CreateOrgRoleArgsForCall(0) 105 Expect(givenRoleType).To(Equal(constant.OrgAuditorRole)) 106 Expect(givenOrgGUID).To(Equal("some-org-guid")) 107 Expect(givenUserName).To(Equal("target-user-name")) 108 Expect(givenOrigin).To(Equal("ldap")) 109 Expect(givenIsClient).To(BeFalse()) 110 }) 111 112 It("displays flavor text and returns without error", func() { 113 Expect(testUI.Out).To(Say("Assigning role OrgAuditor to user target-user-name in org some-org-name as current-user...")) 114 Expect(testUI.Out).To(Say("OK")) 115 Expect(executeErr).NotTo(HaveOccurred()) 116 }) 117 }) 118 119 When("client flag is provided", func() { 120 BeforeEach(func() { 121 cmd.Args.Organization = "some-org-name" 122 cmd.Args.Role = flag.OrgRole{Role: "OrgAuditor"} 123 cmd.Args.Username = "target-user-name" 124 cmd.IsClient = true 125 }) 126 127 It("does not try to get the user", func() { 128 Expect(fakeActor.GetUserCallCount()).To(Equal(0)) 129 }) 130 131 It("creates the org role correctly", func() { 132 Expect(fakeActor.CreateOrgRoleCallCount()).To(Equal(1)) 133 givenRoleType, givenOrgGUID, givenUserGUID, givenOrigin, givenIsClient := fakeActor.CreateOrgRoleArgsForCall(0) 134 Expect(givenRoleType).To(Equal(constant.OrgAuditorRole)) 135 Expect(givenOrgGUID).To(Equal("some-org-guid")) 136 Expect(givenUserGUID).To(Equal("target-user-name")) 137 Expect(givenOrigin).To(Equal("uaa")) 138 Expect(givenIsClient).To(BeTrue()) 139 }) 140 141 It("displays flavor text and returns without error", func() { 142 Expect(testUI.Out).To(Say("Assigning role OrgAuditor to user target-user-name in org some-org-name as current-user...")) 143 Expect(testUI.Out).To(Say("OK")) 144 Expect(executeErr).NotTo(HaveOccurred()) 145 }) 146 }) 147 148 When("both client and origin flags are provided", func() { 149 BeforeEach(func() { 150 cmd.Args.Organization = "some-org-name" 151 cmd.Args.Role = flag.OrgRole{Role: "OrgAuditor"} 152 cmd.Args.Username = "target-user-name" 153 cmd.Origin = "ldap" 154 cmd.IsClient = true 155 }) 156 157 It("returns an error", func() { 158 Expect(executeErr).To(MatchError(translatableerror.ArgumentCombinationError{ 159 Args: []string{"--client", "--origin"}, 160 })) 161 }) 162 }) 163 164 When("the role already exists", func() { 165 BeforeEach(func() { 166 cmd.Args.Organization = "some-org-name" 167 cmd.Args.Role = flag.OrgRole{Role: "OrgAuditor"} 168 cmd.Args.Username = "target-user-name" 169 170 fakeActor.CreateOrgRoleReturns( 171 v7action.Warnings{"create-role-warning"}, 172 ccerror.RoleAlreadyExistsError{}, 173 ) 174 }) 175 176 It("displays warnings and returns without error", func() { 177 Expect(testUI.Err).To(Say("create-role-warning")) 178 Expect(testUI.Err).To(Say("User 'target-user-name' already has role 'OrgAuditor' in org 'some-org-name'.")) 179 Expect(testUI.Out).To(Say("OK")) 180 Expect(executeErr).NotTo(HaveOccurred()) 181 }) 182 }) 183 184 When("when the role argument is invalid", func() { 185 BeforeEach(func() { 186 cmd.Args.Role = flag.OrgRole{Role: "MiddleManager"} 187 }) 188 189 It("returns an error", func() { 190 Expect(executeErr).To(MatchError("Invalid role type.")) 191 }) 192 }) 193 194 When("getting the org fails", func() { 195 BeforeEach(func() { 196 cmd.Args.Role = flag.OrgRole{Role: "OrgAuditor"} 197 198 fakeActor.GetOrganizationByNameReturns( 199 v7action.Organization{}, 200 v7action.Warnings{"get-org-warning"}, 201 errors.New("get-org-error"), 202 ) 203 }) 204 205 It("displays warnings and returns an error", func() { 206 Expect(testUI.Err).To(Say("get-org-warning")) 207 Expect(executeErr).To(MatchError("get-org-error")) 208 }) 209 }) 210 211 When("creating the role fails", func() { 212 BeforeEach(func() { 213 cmd.Args.Organization = "some-org-name" 214 cmd.Args.Role = flag.OrgRole{Role: "OrgAuditor"} 215 cmd.Args.Username = "target-user-name" 216 217 fakeActor.CreateOrgRoleReturns( 218 v7action.Warnings{"create-role-warning"}, 219 errors.New("create-role-error"), 220 ) 221 }) 222 223 It("displays warnings and returns without error", func() { 224 Expect(testUI.Err).To(Say("create-role-warning")) 225 Expect(executeErr).To(MatchError("create-role-error")) 226 }) 227 }) 228 })