github.com/mook-as/cf-cli@v7.0.0-beta.28.0.20200120190804-b91c115fae48+incompatible/command/v6/set_org_default_isolation_segment_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("set-org-default-isolation-segment Command", func() { 20 var ( 21 cmd SetOrgDefaultIsolationSegmentCommand 22 testUI *ui.UI 23 fakeConfig *commandfakes.FakeConfig 24 fakeSharedActor *commandfakes.FakeSharedActor 25 fakeActor *v6fakes.FakeSetOrgDefaultIsolationSegmentActor 26 fakeActorV2 *v6fakes.FakeSetOrgDefaultIsolationSegmentActorV2 27 binaryName string 28 executeErr error 29 isolationSegment string 30 org string 31 ) 32 33 BeforeEach(func() { 34 testUI = ui.NewTestUI(nil, NewBuffer(), NewBuffer()) 35 fakeConfig = new(commandfakes.FakeConfig) 36 fakeSharedActor = new(commandfakes.FakeSharedActor) 37 fakeActor = new(v6fakes.FakeSetOrgDefaultIsolationSegmentActor) 38 fakeActorV2 = new(v6fakes.FakeSetOrgDefaultIsolationSegmentActorV2) 39 40 cmd = SetOrgDefaultIsolationSegmentCommand{ 41 UI: testUI, 42 Config: fakeConfig, 43 SharedActor: fakeSharedActor, 44 Actor: fakeActor, 45 ActorV2: fakeActorV2, 46 } 47 48 binaryName = "faceman" 49 fakeConfig.BinaryNameReturns(binaryName) 50 org = "some-org" 51 isolationSegment = "segment1" 52 }) 53 54 JustBeforeEach(func() { 55 executeErr = cmd.Execute(nil) 56 }) 57 58 When("checking target fails", func() { 59 BeforeEach(func() { 60 fakeSharedActor.CheckTargetReturns(actionerror.NotLoggedInError{BinaryName: binaryName}) 61 }) 62 63 It("returns an error", func() { 64 Expect(executeErr).To(MatchError(actionerror.NotLoggedInError{BinaryName: binaryName})) 65 66 Expect(fakeSharedActor.CheckTargetCallCount()).To(Equal(1)) 67 checkTargetedOrg, checkTargetedSpace := fakeSharedActor.CheckTargetArgsForCall(0) 68 Expect(checkTargetedOrg).To(BeFalse()) 69 Expect(checkTargetedSpace).To(BeFalse()) 70 }) 71 }) 72 73 When("fetching the user fails", func() { 74 BeforeEach(func() { 75 fakeConfig.CurrentUserReturns(configv3.User{}, errors.New("some-error")) 76 }) 77 78 It("returns an error", func() { 79 Expect(executeErr).To(MatchError("some-error")) 80 }) 81 }) 82 83 When("the user is logged in", func() { 84 BeforeEach(func() { 85 fakeConfig.CurrentUserReturns(configv3.User{Name: "banana"}, nil) 86 87 cmd.RequiredArgs.OrganizationName = org 88 cmd.RequiredArgs.IsolationSegmentName = isolationSegment 89 }) 90 91 When("the org lookup is unsuccessful", func() { 92 BeforeEach(func() { 93 fakeActorV2.GetOrganizationByNameReturns(v2action.Organization{}, v2action.Warnings{"I am a warning", "I am also a warning"}, actionerror.OrganizationNotFoundError{Name: org}) 94 }) 95 96 It("returns the warnings and error", func() { 97 Expect(executeErr).To(MatchError(actionerror.OrganizationNotFoundError{Name: org})) 98 Expect(testUI.Err).To(Say("I am a warning")) 99 Expect(testUI.Err).To(Say("I am also a warning")) 100 }) 101 }) 102 103 When("the org lookup is successful", func() { 104 BeforeEach(func() { 105 fakeActorV2.GetOrganizationByNameReturns(v2action.Organization{ 106 Name: org, 107 GUID: "some-org-guid", 108 }, v2action.Warnings{"org-warning-1", "org-warning-2"}, nil) 109 }) 110 111 When("the isolation segment lookup is unsuccessful", func() { 112 BeforeEach(func() { 113 fakeActor.GetIsolationSegmentByNameReturns(v3action.IsolationSegment{}, v3action.Warnings{"iso-seg-warning-1", "iso-seg-warning-2"}, actionerror.IsolationSegmentNotFoundError{Name: isolationSegment}) 114 }) 115 116 It("returns the warnings and error", func() { 117 Expect(executeErr).To(MatchError(actionerror.IsolationSegmentNotFoundError{Name: isolationSegment})) 118 Expect(testUI.Err).To(Say("org-warning-1")) 119 Expect(testUI.Err).To(Say("org-warning-2")) 120 Expect(testUI.Err).To(Say("iso-seg-warning-1")) 121 Expect(testUI.Err).To(Say("iso-seg-warning-2")) 122 }) 123 }) 124 125 When("the entitlement is successful", func() { 126 BeforeEach(func() { 127 fakeActor.GetIsolationSegmentByNameReturns(v3action.IsolationSegment{GUID: "some-iso-guid"}, v3action.Warnings{"iso-seg-warning-1", "iso-seg-warning-2"}, nil) 128 fakeActor.SetOrganizationDefaultIsolationSegmentReturns(v3action.Warnings{"entitlement-warning", "banana"}, nil) 129 }) 130 131 It("Displays the header and okay", func() { 132 Expect(executeErr).ToNot(HaveOccurred()) 133 134 Expect(testUI.Out).To(Say(`Setting isolation segment %s to default on org %s as banana\.\.\.`, isolationSegment, org)) 135 Expect(testUI.Out).To(Say("OK")) 136 137 Expect(testUI.Err).To(Say("org-warning-1")) 138 Expect(testUI.Err).To(Say("org-warning-2")) 139 Expect(testUI.Err).To(Say("iso-seg-warning-1")) 140 Expect(testUI.Err).To(Say("iso-seg-warning-2")) 141 Expect(testUI.Err).To(Say("entitlement-warning")) 142 Expect(testUI.Err).To(Say("banana")) 143 144 Expect(testUI.Out).To(Say(`In order to move running applications to this isolation segment, they must be restarted\.`)) 145 146 Expect(fakeActor.SetOrganizationDefaultIsolationSegmentCallCount()).To(Equal(1)) 147 orgGUID, isoSegGUID := fakeActor.SetOrganizationDefaultIsolationSegmentArgsForCall(0) 148 Expect(orgGUID).To(Equal("some-org-guid")) 149 Expect(isoSegGUID).To(Equal("some-iso-guid")) 150 }) 151 152 When("the entitlement errors", func() { 153 BeforeEach(func() { 154 fakeActor.SetOrganizationDefaultIsolationSegmentReturns(v3action.Warnings{"entitlement-warning", "banana"}, actionerror.IsolationSegmentNotFoundError{Name: isolationSegment}) 155 }) 156 157 It("returns the warnings and error", func() { 158 Expect(testUI.Out).To(Say(`Setting isolation segment %s to default on org %s as banana\.\.\.`, isolationSegment, org)) 159 Expect(testUI.Err).To(Say("org-warning-1")) 160 Expect(testUI.Err).To(Say("org-warning-2")) 161 Expect(testUI.Err).To(Say("iso-seg-warning-1")) 162 Expect(testUI.Err).To(Say("iso-seg-warning-2")) 163 Expect(testUI.Err).To(Say("entitlement-warning")) 164 Expect(testUI.Err).To(Say("banana")) 165 Expect(executeErr).To(MatchError(actionerror.IsolationSegmentNotFoundError{Name: isolationSegment})) 166 }) 167 }) 168 }) 169 }) 170 }) 171 })