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