github.com/mook-as/cf-cli@v7.0.0-beta.28.0.20200120190804-b91c115fae48+incompatible/command/v7/space_command_test.go (about) 1 package v7_test 2 3 import ( 4 "errors" 5 6 "code.cloudfoundry.org/cli/command/flag" 7 8 "code.cloudfoundry.org/cli/actor/v7action" 9 10 "code.cloudfoundry.org/cli/actor/actionerror" 11 "code.cloudfoundry.org/cli/command/commandfakes" 12 . "code.cloudfoundry.org/cli/command/v7" 13 "code.cloudfoundry.org/cli/command/v7/v7fakes" 14 "code.cloudfoundry.org/cli/util/configv3" 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("space Command", func() { 22 var ( 23 cmd SpaceCommand 24 testUI *ui.UI 25 fakeConfig *commandfakes.FakeConfig 26 fakeSharedActor *commandfakes.FakeSharedActor 27 fakeActor *v7fakes.FakeSpaceActor 28 binaryName string 29 executeErr error 30 ) 31 32 BeforeEach(func() { 33 testUI = ui.NewTestUI(nil, NewBuffer(), NewBuffer()) 34 fakeConfig = new(commandfakes.FakeConfig) 35 fakeSharedActor = new(commandfakes.FakeSharedActor) 36 fakeActor = new(v7fakes.FakeSpaceActor) 37 38 cmd = SpaceCommand{ 39 UI: testUI, 40 Config: fakeConfig, 41 SharedActor: fakeSharedActor, 42 Actor: fakeActor, 43 RequiredArgs: flag.Space{ 44 Space: "some-space", 45 }, 46 } 47 48 binaryName = "faceman" 49 fakeConfig.BinaryNameReturns(binaryName) 50 51 fakeConfig.TargetedOrganizationReturns(configv3.Organization{ 52 Name: "some-org", 53 GUID: "some-org-guid", 54 }) 55 56 fakeConfig.CurrentUserReturns(configv3.User{Name: "steve"}, nil) 57 }) 58 59 JustBeforeEach(func() { 60 executeErr = cmd.Execute(nil) 61 }) 62 63 When("checking target fails", func() { 64 BeforeEach(func() { 65 fakeSharedActor.CheckTargetReturns(actionerror.NoOrganizationTargetedError{BinaryName: binaryName}) 66 }) 67 68 It("returns an error", func() { 69 Expect(executeErr).To(MatchError(actionerror.NoOrganizationTargetedError{BinaryName: binaryName})) 70 71 Expect(fakeSharedActor.CheckTargetCallCount()).To(Equal(1)) 72 checkTargetedOrg, checkTargetedSpace := fakeSharedActor.CheckTargetArgsForCall(0) 73 Expect(checkTargetedOrg).To(BeTrue()) 74 Expect(checkTargetedSpace).To(BeFalse()) 75 }) 76 }) 77 78 When("the user is not logged in", func() { 79 var expectedErr error 80 81 BeforeEach(func() { 82 expectedErr = errors.New("some current user error") 83 fakeConfig.CurrentUserReturns(configv3.User{}, expectedErr) 84 }) 85 86 It("return an error", func() { 87 Expect(executeErr).To(Equal(expectedErr)) 88 }) 89 }) 90 91 When("the --guid flag is passed", func() { 92 BeforeEach(func() { 93 cmd.GUID = true 94 }) 95 96 When("getting the space succeeds", func() { 97 BeforeEach(func() { 98 fakeActor.GetSpaceByNameAndOrganizationReturns( 99 v7action.Space{GUID: "some-space-guid"}, 100 v7action.Warnings{"some-warning"}, 101 nil, 102 ) 103 }) 104 105 It("displays warnings and the space guid", func() { 106 Expect(executeErr).NotTo(HaveOccurred()) 107 Expect(testUI.Err).To(Say("some-warning")) 108 Expect(testUI.Out).To(Say("some-space-guid")) 109 }) 110 }) 111 112 When("getting the space fails", func() { 113 BeforeEach(func() { 114 fakeActor.GetSpaceByNameAndOrganizationReturns( 115 v7action.Space{}, 116 v7action.Warnings{"some-warning"}, 117 errors.New("space-error"), 118 ) 119 }) 120 121 It("displays warnings and returns the error", func() { 122 Expect(testUI.Err).To(Say("some-warning")) 123 Expect(executeErr).To(MatchError("space-error")) 124 }) 125 }) 126 }) 127 128 When("the --guid flag is not passed", func() { 129 When("fetching the space summary succeeds with an isolation segment", func() { 130 BeforeEach(func() { 131 fakeActor.GetSpaceSummaryByNameAndOrganizationReturns( 132 v7action.SpaceSummary{ 133 Name: "some-space", 134 OrgName: "some-org", 135 AppNames: []string{"app1", "app2", "app3"}, 136 ServiceInstanceNames: []string{"instance1", "instance2"}, 137 IsolationSegmentName: "iso-seg-name", 138 }, 139 v7action.Warnings{"some-warning"}, 140 nil, 141 ) 142 }) 143 144 It("displays flavor text", func() { 145 Expect(testUI.Out).To(Say("Getting info for space some-space in org some-org as steve...")) 146 }) 147 148 It("displays warnings", func() { 149 Expect(testUI.Err).To(Say("some-warning")) 150 }) 151 152 It("displays a table of values", func() { 153 Expect(testUI.Out).To(Say(`name:\s+some-space`)) 154 Expect(testUI.Out).To(Say(`org:\s+some-org`)) 155 Expect(testUI.Out).To(Say(`apps:\s+app1, app2, app3`)) 156 Expect(testUI.Out).To(Say(`services:\s+instance1, instance2`)) 157 Expect(testUI.Out).To(Say(`isolation segment:\s+iso-seg-name`)) 158 }) 159 }) 160 161 When("fetching the space summary succeeds without an isolation segment", func() { 162 BeforeEach(func() { 163 fakeActor.GetSpaceSummaryByNameAndOrganizationReturns( 164 v7action.SpaceSummary{ 165 Name: "some-space", 166 OrgName: "some-org", 167 AppNames: []string{"app1", "app2", "app3"}, 168 ServiceInstanceNames: []string{"instance1", "instance2"}, 169 }, 170 v7action.Warnings{"some-warning"}, 171 nil, 172 ) 173 }) 174 175 It("displays flavor text", func() { 176 Expect(testUI.Out).To(Say("Getting info for space some-space in org some-org as steve...")) 177 }) 178 179 It("displays warnings", func() { 180 Expect(testUI.Err).To(Say("some-warning")) 181 }) 182 183 It("displays a table of values", func() { 184 Expect(testUI.Out).To(Say(`name:\s+some-space`)) 185 Expect(testUI.Out).To(Say(`org:\s+some-org`)) 186 Expect(testUI.Out).To(Say(`apps:\s+app1, app2, app3`)) 187 Expect(testUI.Out).To(Say(`services:\s+instance1, instance2`)) 188 Expect(testUI.Out).To(Say(`isolation segment:`)) 189 }) 190 }) 191 192 When("fetching the space summary fails", func() { 193 BeforeEach(func() { 194 fakeActor.GetSpaceSummaryByNameAndOrganizationReturns( 195 v7action.SpaceSummary{}, 196 v7action.Warnings{"some-warning"}, 197 errors.New("get-summary-error"), 198 ) 199 }) 200 201 It("displays warnings and returns the error", func() { 202 Expect(testUI.Err).To(Say("some-warning")) 203 Expect(executeErr).To(MatchError("get-summary-error")) 204 }) 205 }) 206 }) 207 })