github.com/LukasHeimann/cloudfoundrycli/v8@v8.4.4/command/v7/stack_command_test.go (about) 1 package v7_test 2 3 import ( 4 "errors" 5 6 "github.com/LukasHeimann/cloudfoundrycli/v8/actor/v7action" 7 "github.com/LukasHeimann/cloudfoundrycli/v8/resources" 8 9 "github.com/LukasHeimann/cloudfoundrycli/v8/actor/actionerror" 10 "github.com/LukasHeimann/cloudfoundrycli/v8/command/commandfakes" 11 . "github.com/LukasHeimann/cloudfoundrycli/v8/command/v7" 12 "github.com/LukasHeimann/cloudfoundrycli/v8/command/v7/v7fakes" 13 "github.com/LukasHeimann/cloudfoundrycli/v8/util/configv3" 14 "github.com/LukasHeimann/cloudfoundrycli/v8/util/ui" 15 . "github.com/onsi/ginkgo" 16 . "github.com/onsi/gomega" 17 . "github.com/onsi/gomega/gbytes" 18 ) 19 20 var _ = Describe("Stack Command", func() { 21 var ( 22 cmd StackCommand 23 testUI *ui.UI 24 fakeConfig *commandfakes.FakeConfig 25 fakeSharedActor *commandfakes.FakeSharedActor 26 fakeActor *v7fakes.FakeActor 27 binaryName string 28 executeErr error 29 stackName string 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.FakeActor) 37 38 cmd = StackCommand{ 39 BaseCommand: BaseCommand{ 40 UI: testUI, 41 Config: fakeConfig, 42 SharedActor: fakeSharedActor, 43 Actor: fakeActor, 44 }, 45 } 46 47 binaryName = "faceman" 48 fakeConfig.BinaryNameReturns(binaryName) 49 stackName = "some-stack-name" 50 51 cmd.RequiredArgs.StackName = stackName 52 }) 53 54 JustBeforeEach(func() { 55 executeErr = cmd.Execute(nil) 56 }) 57 58 Context("When the environment is not setup correctly", func() { 59 When("checking target fails", func() { 60 BeforeEach(func() { 61 fakeSharedActor.CheckTargetReturns(actionerror.NotLoggedInError{BinaryName: binaryName}) 62 }) 63 64 It("returns an error", func() { 65 Expect(executeErr).To(MatchError(actionerror.NotLoggedInError{BinaryName: binaryName})) 66 67 Expect(fakeSharedActor.CheckTargetCallCount()).To(Equal(1)) 68 checkTargetedOrg, checkTargetedSpace := fakeSharedActor.CheckTargetArgsForCall(0) 69 Expect(fakeActor.GetStackByNameCallCount()).To(Equal(0)) 70 Expect(checkTargetedOrg).To(BeFalse()) 71 Expect(checkTargetedSpace).To(BeFalse()) 72 }) 73 }) 74 75 When("retrieving user information errors", func() { 76 var expectedErr error 77 78 BeforeEach(func() { 79 expectedErr = errors.New("some current user error") 80 fakeActor.GetCurrentUserReturns(configv3.User{}, expectedErr) 81 }) 82 83 It("return an error", func() { 84 Expect(executeErr).To(Equal(expectedErr)) 85 }) 86 }) 87 }) 88 89 Context("When the environment is setup correctly", func() { 90 BeforeEach(func() { 91 fakeConfig.TargetedSpaceReturns(configv3.Space{Name: "some-space", GUID: "some-space-guid"}) 92 fakeConfig.TargetedOrganizationReturns(configv3.Organization{Name: "some-org"}) 93 fakeActor.GetCurrentUserReturns(configv3.User{Name: "banana"}, nil) 94 }) 95 96 Context("When the stack exists", func() { 97 BeforeEach(func() { 98 stack := resources.Stack{ 99 Name: "some-stack-name", 100 GUID: "some-stack-guid", 101 Description: "some-stack-desc", 102 } 103 fakeActor.GetStackByNameReturns(stack, v7action.Warnings{"some-warning-1"}, nil) 104 }) 105 106 When("The --guid flag is not provided", func() { 107 It("Displays the stack information", func() { 108 Expect(executeErr).ToNot(HaveOccurred()) 109 Expect(fakeActor.GetStackByNameArgsForCall(0)).To(Equal("some-stack-name")) 110 Expect(fakeActor.GetStackByNameCallCount()).To(Equal(1)) 111 // NOTE: DISPLAY EXPECTS 112 Expect(testUI.Err).To(Say("some-warning-1")) 113 }) 114 }) 115 116 When("The --guid flag is provided", func() { 117 BeforeEach(func() { 118 cmd.GUID = true 119 }) 120 121 It("displays just the guid", func() { 122 Expect(executeErr).ToNot(HaveOccurred()) 123 Expect(fakeActor.GetStackByNameArgsForCall(0)).To(Equal("some-stack-name")) 124 Expect(fakeActor.GetStackByNameCallCount()).To(Equal(1)) 125 Expect(testUI.Err).To(Say("some-warning-1")) 126 }) 127 }) 128 }) 129 130 When("The Stack does not Exist", func() { 131 expectedError := actionerror.StackNotFoundError{Name: "some-stack-name"} 132 BeforeEach(func() { 133 fakeActor.GetStackByNameReturns( 134 resources.Stack{}, 135 v7action.Warnings{"some-warning-1"}, 136 expectedError, 137 ) 138 }) 139 140 It("Fails and returns a StackNotFoundError", func() { 141 Expect(fakeActor.GetStackByNameArgsForCall(0)).To(Equal("some-stack-name")) 142 Expect(fakeActor.GetStackByNameCallCount()).To(Equal(1)) 143 Expect(executeErr).To(Equal(expectedError)) 144 Expect(testUI.Err).To(Say("some-warning-1")) 145 }) 146 }) 147 148 When("There was an error in the actor", func() { 149 BeforeEach(func() { 150 fakeActor.GetStackByNameReturns( 151 resources.Stack{}, 152 v7action.Warnings{"some-warning-1"}, 153 errors.New("some-random-error"), 154 ) 155 }) 156 157 It("Fails and returns a StackNotFoundError", func() { 158 Expect(fakeActor.GetStackByNameArgsForCall(0)).To(Equal("some-stack-name")) 159 Expect(fakeActor.GetStackByNameCallCount()).To(Equal(1)) 160 Expect(executeErr).To(MatchError(errors.New("some-random-error"))) 161 Expect(testUI.Err).To(Say("some-warning-1")) 162 }) 163 }) 164 165 }) 166 167 })