github.com/franc20/ayesa_sap@v7.0.0-beta.28.0.20200124003224-302d4d52fa6c+incompatible/command/v6/delete_orphaned_routes_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/command/commandfakes" 8 v6 "code.cloudfoundry.org/cli/command/v6" 9 "code.cloudfoundry.org/cli/command/v6/v6fakes" 10 "code.cloudfoundry.org/cli/util/configv3" 11 "code.cloudfoundry.org/cli/util/ui" 12 . "github.com/onsi/ginkgo" 13 . "github.com/onsi/gomega" 14 . "github.com/onsi/gomega/gbytes" 15 ) 16 17 var _ = Describe("deleted-orphaned-routes Command", func() { 18 var ( 19 cmd v6.DeleteOrphanedRoutesCommand 20 testUI *ui.UI 21 fakeConfig *commandfakes.FakeConfig 22 fakeSharedActor *commandfakes.FakeSharedActor 23 fakeActor *v6fakes.FakeDeleteOrphanedRoutesActor 24 input *Buffer 25 binaryName string 26 executeErr error 27 ) 28 29 BeforeEach(func() { 30 input = NewBuffer() 31 testUI = ui.NewTestUI(input, NewBuffer(), NewBuffer()) 32 fakeConfig = new(commandfakes.FakeConfig) 33 fakeSharedActor = new(commandfakes.FakeSharedActor) 34 fakeActor = new(v6fakes.FakeDeleteOrphanedRoutesActor) 35 36 cmd = v6.DeleteOrphanedRoutesCommand{ 37 UI: testUI, 38 Config: fakeConfig, 39 SharedActor: fakeSharedActor, 40 Actor: fakeActor, 41 } 42 43 binaryName = "faceman" 44 fakeConfig.BinaryNameReturns(binaryName) 45 }) 46 47 JustBeforeEach(func() { 48 executeErr = cmd.Execute(nil) 49 }) 50 51 When("a cloud controller API endpoint is set", func() { 52 BeforeEach(func() { 53 fakeConfig.TargetReturns("some-url") 54 }) 55 56 When("checking target fails", func() { 57 BeforeEach(func() { 58 fakeSharedActor.CheckTargetReturns(actionerror.NotLoggedInError{BinaryName: binaryName}) 59 }) 60 61 It("returns an error", func() { 62 Expect(executeErr).To(MatchError(actionerror.NotLoggedInError{BinaryName: "faceman"})) 63 64 Expect(fakeSharedActor.CheckTargetCallCount()).To(Equal(1)) 65 checkTargetedOrg, checkTargetedSpace := fakeSharedActor.CheckTargetArgsForCall(0) 66 Expect(checkTargetedOrg).To(BeTrue()) 67 Expect(checkTargetedSpace).To(BeTrue()) 68 }) 69 }) 70 71 When("the user is logged in, and org and space are targeted", func() { 72 BeforeEach(func() { 73 fakeConfig.HasTargetedOrganizationReturns(true) 74 fakeConfig.HasTargetedSpaceReturns(true) 75 fakeConfig.TargetedSpaceReturns(configv3.Space{ 76 GUID: "some-space-guid", 77 Name: "some-space", 78 }) 79 }) 80 81 When("getting the current user returns an error", func() { 82 var expectedErr error 83 84 BeforeEach(func() { 85 expectedErr = errors.New("getting current user error") 86 fakeConfig.CurrentUserReturns( 87 configv3.User{}, 88 expectedErr) 89 }) 90 91 It("returns the error", func() { 92 Expect(executeErr).To(MatchError(expectedErr)) 93 }) 94 }) 95 96 When("getting the current user does not return an error", func() { 97 BeforeEach(func() { 98 fakeConfig.CurrentUserReturns( 99 configv3.User{Name: "some-user"}, 100 nil) 101 }) 102 103 When("the '-f' flag is provided", func() { 104 BeforeEach(func() { 105 cmd.Force = true 106 }) 107 108 It("does not prompt for user confirmation", func() { 109 Expect(executeErr).ToNot(HaveOccurred()) 110 111 Expect(testUI.Out).ToNot(Say(`Really delete orphaned routes\? \[yN\]:`)) 112 }) 113 }) 114 115 When("the '-f' flag is not provided", func() { 116 When("user is prompted for confirmation", func() { 117 BeforeEach(func() { 118 _, err := input.Write([]byte("\n")) 119 Expect(err).NotTo(HaveOccurred()) 120 }) 121 122 It("displays the interactive prompt", func() { 123 Expect(executeErr).ToNot(HaveOccurred()) 124 125 Expect(testUI.Out).To(Say(`Really delete orphaned routes\? \[yN\]:`)) 126 }) 127 }) 128 129 When("the user inputs no", func() { 130 BeforeEach(func() { 131 _, err := input.Write([]byte("n\n")) 132 Expect(err).NotTo(HaveOccurred()) 133 }) 134 135 It("does not delete orphaned routes", func() { 136 Expect(executeErr).ToNot(HaveOccurred()) 137 138 Expect(fakeActor.DeleteUnmappedRoutesCallCount()).To(Equal(0)) 139 }) 140 }) 141 142 When("the user input is invalid", func() { 143 BeforeEach(func() { 144 _, err := input.Write([]byte("e\n")) 145 Expect(err).NotTo(HaveOccurred()) 146 }) 147 148 It("returns an error", func() { 149 Expect(executeErr).To(HaveOccurred()) 150 Expect(fakeActor.DeleteUnmappedRoutesCallCount()).To(Equal(0)) 151 }) 152 }) 153 154 When("the user inputs yes", func() { 155 BeforeEach(func() { 156 _, err := input.Write([]byte("y\n")) 157 Expect(err).NotTo(HaveOccurred()) 158 }) 159 160 It("displays a message showing what user is deleting the routes", func() { 161 Expect(executeErr).ToNot(HaveOccurred()) 162 163 Expect(testUI.Out).To(Say("Deleting routes as some-user ...\n")) 164 }) 165 166 When("there are warnings", func() { 167 BeforeEach(func() { 168 fakeActor.DeleteUnmappedRoutesReturns([]string{"foo"}, nil) 169 }) 170 171 It("displays the warnings", func() { 172 Expect(executeErr).ToNot(HaveOccurred()) 173 174 Expect(testUI.Err).To(Say("foo")) 175 }) 176 }) 177 178 It("deletes the routes", func() { 179 Expect(fakeActor.DeleteUnmappedRoutesCallCount()).To(Equal(1)) 180 Expect(testUI.Out).To(Say("OK")) 181 }) 182 183 When("deleting routes returns an error", func() { 184 var expectedErr error 185 186 BeforeEach(func() { 187 expectedErr = errors.New("deleting unmapped routes error") 188 fakeActor.DeleteUnmappedRoutesReturns(nil, expectedErr) 189 }) 190 191 It("returns the error", func() { 192 Expect(executeErr).To(MatchError(expectedErr)) 193 }) 194 }) 195 }) 196 }) 197 }) 198 }) 199 }) 200 })