github.com/loafoe/cli@v7.1.0+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/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-org-role Command", func() { 22 var ( 23 cmd UnsetOrgRoleCommand 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 = UnsetOrgRoleCommand{ 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.GetOrganizationByNameReturns( 71 resources.Organization{GUID: "some-org-guid", Name: "some-org-name"}, 72 v7action.Warnings{"get-org-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.Role = flag.OrgRole{Role: "OrgAuditor"} 81 cmd.Args.Username = "target-user-name" 82 }) 83 84 It("deletes the org role", func() { 85 Expect(fakeActor.DeleteOrgRoleCallCount()).To(Equal(1)) 86 givenRoleType, givenOrgGUID, givenUserName, givenOrigin, givenIsClient := fakeActor.DeleteOrgRoleArgsForCall(0) 87 Expect(givenRoleType).To(Equal(constant.OrgAuditorRole)) 88 Expect(givenOrgGUID).To(Equal("some-org-guid")) 89 Expect(givenUserName).To(Equal("target-user-name")) 90 Expect(givenOrigin).To(Equal("")) 91 Expect(givenIsClient).To(BeFalse()) 92 }) 93 94 It("displays flavor text and returns without error", func() { 95 Expect(testUI.Out).To(Say("Removing role OrgAuditor from user target-user-name in org some-org-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.Role = flag.OrgRole{Role: "OrgAuditor"} 105 cmd.Args.Username = "target-user-name" 106 cmd.Origin = "ldap" 107 }) 108 109 It("deletes the org role", func() { 110 Expect(fakeActor.DeleteOrgRoleCallCount()).To(Equal(1)) 111 givenRoleType, givenOrgGUID, givenUserName, givenOrigin, givenIsClient := fakeActor.DeleteOrgRoleArgsForCall(0) 112 Expect(givenRoleType).To(Equal(constant.OrgAuditorRole)) 113 Expect(givenOrgGUID).To(Equal("some-org-guid")) 114 Expect(givenUserName).To(Equal("target-user-name")) 115 Expect(givenOrigin).To(Equal("ldap")) 116 Expect(givenIsClient).To(BeFalse()) 117 }) 118 119 It("displays flavor text and returns without error", func() { 120 Expect(testUI.Out).To(Say("Removing role OrgAuditor from user target-user-name in org some-org-name as current-user...")) 121 Expect(testUI.Out).To(Say("OK")) 122 Expect(executeErr).NotTo(HaveOccurred()) 123 }) 124 }) 125 126 When("client flag is provided", func() { 127 BeforeEach(func() { 128 cmd.Args.Organization = "some-org-name" 129 cmd.Args.Role = flag.OrgRole{Role: "OrgAuditor"} 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 org role correctly", func() { 139 givenRoleType, givenOrgGUID, givenUserName, givenOrigin, givenIsClient := fakeActor.DeleteOrgRoleArgsForCall(0) 140 Expect(givenRoleType).To(Equal(constant.OrgAuditorRole)) 141 Expect(givenOrgGUID).To(Equal("some-org-guid")) 142 Expect(givenUserName).To(Equal("target-user-name")) 143 Expect(givenOrigin).To(Equal("")) 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 OrgAuditor from user target-user-name in org some-org-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.Role = flag.OrgRole{Role: "OrgAuditor"} 158 cmd.Args.Username = "target-user-name" 159 cmd.Origin = "ldap" 160 cmd.IsClient = true 161 }) 162 163 It("returns an error", func() { 164 Expect(executeErr).To(MatchError(translatableerror.ArgumentCombinationError{ 165 Args: []string{"--client", "--origin"}, 166 })) 167 }) 168 }) 169 170 When("the role does not exist", func() { 171 BeforeEach(func() { 172 cmd.Args.Organization = "some-org-name" 173 cmd.Args.Role = flag.OrgRole{Role: "OrgAuditor"} 174 cmd.Args.Username = "target-user-name" 175 176 fakeActor.DeleteOrgRoleReturns( 177 v7action.Warnings{"delete-role-warning"}, 178 nil, 179 ) 180 }) 181 182 It("displays warnings and returns without error", func() { 183 Expect(testUI.Err).To(Say("delete-role-warning")) 184 Expect(testUI.Out).To(Say("OK")) 185 Expect(executeErr).NotTo(HaveOccurred()) 186 }) 187 }) 188 189 When("invalid role arg is given", func() { 190 BeforeEach(func() { 191 cmd.Args.Role = flag.OrgRole{Role: "Astronaut"} 192 }) 193 194 It("returns an error", func() { 195 Expect(executeErr).To(MatchError("Invalid role type.")) 196 }) 197 }) 198 199 When("getting the org fails", func() { 200 BeforeEach(func() { 201 cmd.Args.Role = flag.OrgRole{Role: "OrgAuditor"} 202 203 fakeActor.GetOrganizationByNameReturns( 204 resources.Organization{}, 205 v7action.Warnings{"get-org-warning"}, 206 errors.New("get-org-error"), 207 ) 208 }) 209 210 It("displays warnings and returns an error", func() { 211 Expect(testUI.Err).To(Say("get-org-warning")) 212 Expect(executeErr).To(MatchError("get-org-error")) 213 }) 214 }) 215 216 When("deleting the org role fails", func() { 217 BeforeEach(func() { 218 cmd.Args.Organization = "some-org-name" 219 cmd.Args.Role = flag.OrgRole{Role: "OrgAuditor"} 220 cmd.Args.Username = "target-user-name" 221 222 fakeActor.DeleteOrgRoleReturns( 223 v7action.Warnings{"delete-role-warning"}, 224 errors.New("delete-role-error"), 225 ) 226 }) 227 228 It("displays warnings and returns an error", func() { 229 Expect(testUI.Err).To(Say("delete-role-warning")) 230 Expect(executeErr).To(MatchError("delete-role-error")) 231 }) 232 }) 233 })