github.com/mook-as/cf-cli@v7.0.0-beta.28.0.20200120190804-b91c115fae48+incompatible/command/v6/org_command_test.go (about) 1 package v6_test 2 3 import ( 4 "errors" 5 6 "code.cloudfoundry.org/cli/actor/actionerror" 7 "code.cloudfoundry.org/cli/actor/v2action" 8 "code.cloudfoundry.org/cli/actor/v3action" 9 "code.cloudfoundry.org/cli/command/commandfakes" 10 . "code.cloudfoundry.org/cli/command/v6" 11 "code.cloudfoundry.org/cli/command/v6/v6fakes" 12 "code.cloudfoundry.org/cli/util/configv3" 13 "code.cloudfoundry.org/cli/util/ui" 14 . "github.com/onsi/ginkgo" 15 . "github.com/onsi/gomega" 16 . "github.com/onsi/gomega/gbytes" 17 ) 18 19 var _ = Describe("org Command", func() { 20 var ( 21 cmd OrgCommand 22 testUI *ui.UI 23 fakeConfig *commandfakes.FakeConfig 24 fakeSharedActor *commandfakes.FakeSharedActor 25 fakeActor *v6fakes.FakeOrgActor 26 fakeActorV3 *v6fakes.FakeOrgActorV3 27 binaryName string 28 executeErr error 29 ) 30 31 BeforeEach(func() { 32 testUI = ui.NewTestUI(nil, NewBuffer(), NewBuffer()) 33 fakeConfig = new(commandfakes.FakeConfig) 34 fakeSharedActor = new(commandfakes.FakeSharedActor) 35 fakeActor = new(v6fakes.FakeOrgActor) 36 fakeActorV3 = new(v6fakes.FakeOrgActorV3) 37 38 cmd = OrgCommand{ 39 UI: testUI, 40 Config: fakeConfig, 41 SharedActor: fakeSharedActor, 42 Actor: fakeActor, 43 ActorV3: fakeActorV3, 44 } 45 46 binaryName = "faceman" 47 fakeConfig.BinaryNameReturns(binaryName) 48 cmd.RequiredArgs.Organization = "some-org" 49 }) 50 51 JustBeforeEach(func() { 52 executeErr = cmd.Execute(nil) 53 }) 54 55 When("checking the target fails", func() { 56 BeforeEach(func() { 57 fakeSharedActor.CheckTargetReturns( 58 actionerror.NotLoggedInError{BinaryName: binaryName}) 59 }) 60 61 It("returns an error", func() { 62 Expect(executeErr).To(MatchError(actionerror.NotLoggedInError{BinaryName: binaryName})) 63 64 Expect(fakeSharedActor.CheckTargetCallCount()).To(Equal(1)) 65 targetedOrganizationRequired, targetedSpaceRequired := fakeSharedActor.CheckTargetArgsForCall(0) 66 Expect(targetedOrganizationRequired).To(Equal(false)) 67 Expect(targetedSpaceRequired).To(Equal(false)) 68 }) 69 }) 70 71 When("the --guid flag is provided", func() { 72 BeforeEach(func() { 73 cmd.GUID = true 74 }) 75 76 When("no errors occur", func() { 77 BeforeEach(func() { 78 fakeActor.GetOrganizationByNameReturns( 79 v2action.Organization{GUID: "some-org-guid"}, 80 v2action.Warnings{"warning-1", "warning-2"}, 81 nil) 82 }) 83 84 It("displays the org guid and outputs all warnings", func() { 85 Expect(executeErr).ToNot(HaveOccurred()) 86 87 Expect(testUI.Out).To(Say("some-org-guid")) 88 Expect(testUI.Err).To(Say("warning-1")) 89 Expect(testUI.Err).To(Say("warning-2")) 90 91 Expect(fakeActor.GetOrganizationByNameCallCount()).To(Equal(1)) 92 orgName := fakeActor.GetOrganizationByNameArgsForCall(0) 93 Expect(orgName).To(Equal("some-org")) 94 }) 95 }) 96 97 When("getting the org returns an error", func() { 98 When("the error is translatable", func() { 99 BeforeEach(func() { 100 fakeActor.GetOrganizationByNameReturns( 101 v2action.Organization{}, 102 v2action.Warnings{"warning-1", "warning-2"}, 103 actionerror.OrganizationNotFoundError{Name: "some-org"}) 104 }) 105 106 It("returns a translatable error and outputs all warnings", func() { 107 Expect(executeErr).To(MatchError(actionerror.OrganizationNotFoundError{Name: "some-org"})) 108 109 Expect(testUI.Err).To(Say("warning-1")) 110 Expect(testUI.Err).To(Say("warning-2")) 111 }) 112 }) 113 114 When("the error is not translatable", func() { 115 var expectedErr error 116 117 BeforeEach(func() { 118 expectedErr = errors.New("get org error") 119 fakeActor.GetOrganizationByNameReturns( 120 v2action.Organization{}, 121 v2action.Warnings{"warning-1", "warning-2"}, 122 expectedErr) 123 }) 124 125 It("returns the error and all warnings", func() { 126 Expect(executeErr).To(MatchError(expectedErr)) 127 128 Expect(testUI.Err).To(Say("warning-1")) 129 Expect(testUI.Err).To(Say("warning-2")) 130 }) 131 }) 132 }) 133 }) 134 135 When("the --guid flag is not provided", func() { 136 When("no errors occur", func() { 137 BeforeEach(func() { 138 fakeConfig.CurrentUserReturns( 139 configv3.User{ 140 Name: "some-user", 141 }, 142 nil) 143 144 fakeActor.GetOrganizationSummaryByNameReturns( 145 v2action.OrganizationSummary{ 146 Organization: v2action.Organization{ 147 Name: "some-org", 148 GUID: "some-org-guid", 149 DefaultIsolationSegmentGUID: "default-isolation-segment-guid", 150 }, 151 DomainNames: []string{ 152 "a-shared.com", 153 "b-private.com", 154 "c-shared.com", 155 "d-private.com", 156 }, 157 QuotaName: "some-quota", 158 SpaceNames: []string{ 159 "space1", 160 "space2", 161 }, 162 }, 163 v2action.Warnings{"warning-1", "warning-2"}, 164 nil) 165 }) 166 167 When("the v3 actor does not exist", func() { 168 BeforeEach(func() { 169 cmd.ActorV3 = nil 170 }) 171 It("displays the org summary with no isolation segment row", func() { 172 Expect(executeErr).To(BeNil()) 173 Expect(testUI.Out).ToNot(Say("isolation segments:")) 174 }) 175 }) 176 177 When("API version is above isolation segments minimum version", func() { 178 When("something", func() { 179 BeforeEach(func() { 180 fakeActorV3.GetIsolationSegmentsByOrganizationReturns( 181 []v3action.IsolationSegment{ 182 { 183 Name: "isolation-segment-1", 184 GUID: "default-isolation-segment-guid", 185 }, { 186 Name: "isolation-segment-2", 187 GUID: "some-other-isolation-segment-guid", 188 }, 189 }, 190 v3action.Warnings{"warning-3", "warning-4"}, 191 nil) 192 }) 193 194 It("displays warnings and a table with org domains, org quota, spaces and isolation segments", func() { 195 Expect(executeErr).To(BeNil()) 196 197 Expect(testUI.Out).To(Say(`Getting info for org %s as some-user\.\.\.`, cmd.RequiredArgs.Organization)) 198 Expect(testUI.Err).To(Say("warning-1")) 199 Expect(testUI.Err).To(Say("warning-2")) 200 Expect(testUI.Err).To(Say("warning-3")) 201 Expect(testUI.Err).To(Say("warning-4")) 202 203 Expect(testUI.Out).To(Say(`name:\s+%s`, cmd.RequiredArgs.Organization)) 204 Expect(testUI.Out).To(Say(`domains:\s+a-shared.com, b-private.com, c-shared.com, d-private.com`)) 205 Expect(testUI.Out).To(Say(`quota:\s+some-quota`)) 206 Expect(testUI.Out).To(Say(`spaces:\s+space1, space2`)) 207 Expect(testUI.Out).To(Say(`isolation segments:\s+isolation-segment-1 \(default\), isolation-segment-2`)) 208 209 Expect(fakeConfig.CurrentUserCallCount()).To(Equal(1)) 210 211 Expect(fakeActor.GetOrganizationSummaryByNameCallCount()).To(Equal(1)) 212 orgName := fakeActor.GetOrganizationSummaryByNameArgsForCall(0) 213 Expect(orgName).To(Equal("some-org")) 214 215 Expect(fakeActorV3.GetIsolationSegmentsByOrganizationCallCount()).To(Equal(1)) 216 orgGuid := fakeActorV3.GetIsolationSegmentsByOrganizationArgsForCall(0) 217 Expect(orgGuid).To(Equal("some-org-guid")) 218 }) 219 }) 220 221 When("getting the org isolation segments returns an error", func() { 222 var expectedErr error 223 224 BeforeEach(func() { 225 expectedErr = errors.New("get org iso segs error") 226 fakeActorV3.GetIsolationSegmentsByOrganizationReturns( 227 nil, 228 v3action.Warnings{"get iso seg warning"}, 229 expectedErr) 230 }) 231 232 It("returns the error and all warnings", func() { 233 Expect(executeErr).To(MatchError(expectedErr)) 234 Expect(testUI.Err).To(Say("get iso seg warning")) 235 }) 236 }) 237 }) 238 }) 239 240 When("getting the current user returns an error", func() { 241 var expectedErr error 242 243 BeforeEach(func() { 244 expectedErr = errors.New("getting current user error") 245 fakeConfig.CurrentUserReturns( 246 configv3.User{}, 247 expectedErr) 248 }) 249 250 It("returns the error", func() { 251 Expect(executeErr).To(MatchError(expectedErr)) 252 }) 253 }) 254 255 When("getting the org summary returns an error", func() { 256 When("the error is translatable", func() { 257 BeforeEach(func() { 258 fakeActor.GetOrganizationSummaryByNameReturns( 259 v2action.OrganizationSummary{}, 260 v2action.Warnings{"warning-1", "warning-2"}, 261 actionerror.OrganizationNotFoundError{Name: "some-org"}) 262 }) 263 264 It("returns a translatable error and outputs all warnings", func() { 265 Expect(executeErr).To(MatchError(actionerror.OrganizationNotFoundError{Name: "some-org"})) 266 267 Expect(testUI.Err).To(Say("warning-1")) 268 Expect(testUI.Err).To(Say("warning-2")) 269 }) 270 }) 271 272 When("the error is not translatable", func() { 273 var expectedErr error 274 275 BeforeEach(func() { 276 expectedErr = errors.New("get org error") 277 fakeActor.GetOrganizationSummaryByNameReturns( 278 v2action.OrganizationSummary{}, 279 v2action.Warnings{"warning-1", "warning-2"}, 280 expectedErr) 281 }) 282 283 It("returns the error and all warnings", func() { 284 Expect(executeErr).To(MatchError(expectedErr)) 285 286 Expect(testUI.Err).To(Say("warning-1")) 287 Expect(testUI.Err).To(Say("warning-2")) 288 }) 289 }) 290 }) 291 }) 292 })