github.com/mook-as/cf-cli@v7.0.0-beta.28.0.20200120190804-b91c115fae48+incompatible/command/v7/unset_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/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-org-role Command", func() { 21 var ( 22 cmd UnsetOrgRoleCommand 23 testUI *ui.UI 24 fakeConfig *commandfakes.FakeConfig 25 fakeSharedActor *commandfakes.FakeSharedActor 26 fakeActor *v7fakes.FakeUnsetOrgRoleActor 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.FakeUnsetOrgRoleActor) 38 39 cmd = UnsetOrgRoleCommand{ 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.GetOrganizationByNameReturns( 68 v7action.Organization{GUID: "some-org-guid", Name: "some-org-name"}, 69 v7action.Warnings{"get-org-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.Role = flag.OrgRole{Role: "OrgAuditor"} 78 cmd.Args.Username = "target-user-name" 79 }) 80 81 It("deletes the org role", func() { 82 Expect(fakeActor.DeleteOrgRoleCallCount()).To(Equal(1)) 83 givenRoleType, givenOrgGUID, givenUserName, givenOrigin, givenIsClient := fakeActor.DeleteOrgRoleArgsForCall(0) 84 Expect(givenRoleType).To(Equal(constant.OrgAuditorRole)) 85 Expect(givenOrgGUID).To(Equal("some-org-guid")) 86 Expect(givenUserName).To(Equal("target-user-name")) 87 Expect(givenOrigin).To(Equal("uaa")) 88 Expect(givenIsClient).To(BeFalse()) 89 }) 90 91 It("displays flavor text and returns without error", func() { 92 Expect(testUI.Out).To(Say("Removing role OrgAuditor from user target-user-name in org some-org-name as current-user...")) 93 Expect(testUI.Out).To(Say("OK")) 94 Expect(executeErr).NotTo(HaveOccurred()) 95 }) 96 }) 97 98 When("origin flag is provided", func() { 99 BeforeEach(func() { 100 cmd.Args.Organization = "some-org-name" 101 cmd.Args.Role = flag.OrgRole{Role: "OrgAuditor"} 102 cmd.Args.Username = "target-user-name" 103 cmd.Origin = "ldap" 104 }) 105 106 It("deletes the org role", func() { 107 Expect(fakeActor.DeleteOrgRoleCallCount()).To(Equal(1)) 108 givenRoleType, givenOrgGUID, givenUserName, givenOrigin, givenIsClient := fakeActor.DeleteOrgRoleArgsForCall(0) 109 Expect(givenRoleType).To(Equal(constant.OrgAuditorRole)) 110 Expect(givenOrgGUID).To(Equal("some-org-guid")) 111 Expect(givenUserName).To(Equal("target-user-name")) 112 Expect(givenOrigin).To(Equal("ldap")) 113 Expect(givenIsClient).To(BeFalse()) 114 }) 115 116 It("displays flavor text and returns without error", func() { 117 Expect(testUI.Out).To(Say("Removing role OrgAuditor from user target-user-name in org some-org-name as current-user...")) 118 Expect(testUI.Out).To(Say("OK")) 119 Expect(executeErr).NotTo(HaveOccurred()) 120 }) 121 }) 122 123 When("client flag is provided", func() { 124 BeforeEach(func() { 125 cmd.Args.Organization = "some-org-name" 126 cmd.Args.Role = flag.OrgRole{Role: "OrgAuditor"} 127 cmd.Args.Username = "target-user-name" 128 cmd.IsClient = true 129 }) 130 131 It("does not try to get the user", func() { 132 Expect(fakeActor.GetUserCallCount()).To(Equal(0)) 133 }) 134 135 It("deletes the org role correctly", func() { 136 givenRoleType, givenOrgGUID, givenUserName, givenOrigin, givenIsClient := fakeActor.DeleteOrgRoleArgsForCall(0) 137 Expect(givenRoleType).To(Equal(constant.OrgAuditorRole)) 138 Expect(givenOrgGUID).To(Equal("some-org-guid")) 139 Expect(givenUserName).To(Equal("target-user-name")) 140 Expect(givenOrigin).To(Equal("uaa")) 141 Expect(givenIsClient).To(BeTrue()) 142 }) 143 144 It("displays flavor text and returns without error", func() { 145 Expect(testUI.Out).To(Say("Removing role OrgAuditor from user target-user-name in org some-org-name as current-user...")) 146 Expect(testUI.Out).To(Say("OK")) 147 Expect(executeErr).NotTo(HaveOccurred()) 148 }) 149 }) 150 151 When("both client and origin flags are provided", func() { 152 BeforeEach(func() { 153 cmd.Args.Organization = "some-org-name" 154 cmd.Args.Role = flag.OrgRole{Role: "OrgAuditor"} 155 cmd.Args.Username = "target-user-name" 156 cmd.Origin = "ldap" 157 cmd.IsClient = true 158 }) 159 160 It("returns an error", func() { 161 Expect(executeErr).To(MatchError(translatableerror.ArgumentCombinationError{ 162 Args: []string{"--client", "--origin"}, 163 })) 164 }) 165 }) 166 167 When("the role does not exist", func() { 168 BeforeEach(func() { 169 cmd.Args.Organization = "some-org-name" 170 cmd.Args.Role = flag.OrgRole{Role: "OrgAuditor"} 171 cmd.Args.Username = "target-user-name" 172 173 fakeActor.DeleteOrgRoleReturns( 174 v7action.Warnings{"delete-role-warning"}, 175 nil, 176 ) 177 }) 178 179 It("displays warnings and returns without error", func() { 180 Expect(testUI.Err).To(Say("delete-role-warning")) 181 Expect(testUI.Out).To(Say("OK")) 182 Expect(executeErr).NotTo(HaveOccurred()) 183 }) 184 }) 185 186 When("invalid role arg is given", func() { 187 BeforeEach(func() { 188 cmd.Args.Role = flag.OrgRole{Role: "Astronaut"} 189 }) 190 191 It("returns an error", func() { 192 Expect(executeErr).To(MatchError("Invalid role type.")) 193 }) 194 }) 195 196 When("getting the org fails", func() { 197 BeforeEach(func() { 198 cmd.Args.Role = flag.OrgRole{Role: "OrgAuditor"} 199 200 fakeActor.GetOrganizationByNameReturns( 201 v7action.Organization{}, 202 v7action.Warnings{"get-org-warning"}, 203 errors.New("get-org-error"), 204 ) 205 }) 206 207 It("displays warnings and returns an error", func() { 208 Expect(testUI.Err).To(Say("get-org-warning")) 209 Expect(executeErr).To(MatchError("get-org-error")) 210 }) 211 }) 212 213 When("deleting the org role fails", func() { 214 BeforeEach(func() { 215 cmd.Args.Organization = "some-org-name" 216 cmd.Args.Role = flag.OrgRole{Role: "OrgAuditor"} 217 cmd.Args.Username = "target-user-name" 218 219 fakeActor.DeleteOrgRoleReturns( 220 v7action.Warnings{"delete-role-warning"}, 221 errors.New("delete-role-error"), 222 ) 223 }) 224 225 It("displays warnings and returns an error", func() { 226 Expect(testUI.Err).To(Say("delete-role-warning")) 227 Expect(executeErr).To(MatchError("delete-role-error")) 228 }) 229 }) 230 })