github.com/loafoe/cli@v7.1.0+incompatible/command/v7/update_service_broker_command_test.go (about) 1 package v7_test 2 3 import ( 4 "code.cloudfoundry.org/cli/actor/actionerror" 5 "code.cloudfoundry.org/cli/actor/v7action" 6 "code.cloudfoundry.org/cli/cf/errors" 7 "code.cloudfoundry.org/cli/command/commandfakes" 8 v7 "code.cloudfoundry.org/cli/command/v7" 9 "code.cloudfoundry.org/cli/command/v7/v7fakes" 10 "code.cloudfoundry.org/cli/resources" 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("update-service-broker command", func() { 19 const ( 20 binaryName = "cf-command" 21 serviceBrokerName = "fake-service-broker-name" 22 username = "fake-username" 23 password = "fake-password" 24 url = "fake-url" 25 ) 26 27 var ( 28 cmd *v7.UpdateServiceBrokerCommand 29 fakeUpdateServiceBrokerActor *v7fakes.FakeActor 30 fakeSharedActor *commandfakes.FakeSharedActor 31 fakeConfig *commandfakes.FakeConfig 32 testUI *ui.UI 33 ) 34 35 BeforeEach(func() { 36 fakeUpdateServiceBrokerActor = &v7fakes.FakeActor{} 37 fakeSharedActor = &commandfakes.FakeSharedActor{} 38 testUI = ui.NewTestUI(NewBuffer(), NewBuffer(), NewBuffer()) 39 fakeConfig = &commandfakes.FakeConfig{} 40 cmd = &v7.UpdateServiceBrokerCommand{ 41 BaseCommand: v7.BaseCommand{ 42 Actor: fakeUpdateServiceBrokerActor, 43 SharedActor: fakeSharedActor, 44 UI: testUI, 45 Config: fakeConfig, 46 }, 47 } 48 49 setPositionalFlags(cmd, serviceBrokerName, username, password, url) 50 }) 51 52 When("logged in", func() { 53 const guid = "fake-service-broker-guid" 54 55 BeforeEach(func() { 56 fakeUpdateServiceBrokerActor.GetServiceBrokerByNameReturns( 57 resources.ServiceBroker{GUID: guid}, 58 v7action.Warnings{}, 59 nil, 60 ) 61 62 fakeConfig.CurrentUserReturns(configv3.User{Name: "user"}, nil) 63 }) 64 65 It("succeeds", func() { 66 fakeUpdateServiceBrokerActor.UpdateServiceBrokerReturns(v7action.Warnings{"update service broker warning"}, nil) 67 68 err := cmd.Execute(nil) 69 Expect(err).NotTo(HaveOccurred()) 70 71 Expect(fakeUpdateServiceBrokerActor.UpdateServiceBrokerCallCount()).To(Equal(1)) 72 serviceBrokerGUID, model := fakeUpdateServiceBrokerActor.UpdateServiceBrokerArgsForCall(0) 73 Expect(serviceBrokerGUID).To(Equal(guid)) 74 Expect(model.Username).To(Equal(username)) 75 Expect(model.Password).To(Equal(password)) 76 Expect(model.URL).To(Equal(url)) 77 78 Expect(testUI.Err).To(Say("update service broker warning")) 79 }) 80 81 When("the UpdateServiceBroker actor fails to get the broker name", func() { 82 BeforeEach(func() { 83 fakeUpdateServiceBrokerActor.GetServiceBrokerByNameReturns( 84 resources.ServiceBroker{}, 85 v7action.Warnings{"some-warning"}, 86 actionerror.ServiceBrokerNotFoundError{ 87 Name: serviceBrokerName, 88 }, 89 ) 90 }) 91 92 It("returns the error and displays all warnings", func() { 93 err := cmd.Execute(nil) 94 Expect(err).To(MatchError(actionerror.ServiceBrokerNotFoundError{Name: serviceBrokerName})) 95 Expect(testUI.Err).To(Say("some-warning")) 96 97 Expect(fakeUpdateServiceBrokerActor.GetServiceBrokerByNameCallCount()).To(Equal(1)) 98 Expect(fakeUpdateServiceBrokerActor.GetServiceBrokerByNameArgsForCall(0)).To(Equal(serviceBrokerName)) 99 }) 100 }) 101 102 When("the UpdateServiceBroker actor fails to update the broker", func() { 103 It("returns the error and displays any warnings", func() { 104 fakeUpdateServiceBrokerActor.UpdateServiceBrokerReturns(v7action.Warnings{"a-warning"}, errors.New("something went wrong")) 105 106 err := cmd.Execute(nil) 107 108 Expect(err).To(HaveOccurred()) 109 Expect(err.Error()).To(Equal("something went wrong")) 110 Expect(testUI.Err).To(Say("a-warning")) 111 }) 112 }) 113 114 When("it fails to get the current user", func() { 115 BeforeEach(func() { 116 fakeConfig.CurrentUserReturns(configv3.User{}, errors.New("no user found")) 117 }) 118 119 It("returns the error and displays all warnings", func() { 120 err := cmd.Execute(nil) 121 122 Expect(err).To(HaveOccurred()) 123 Expect(err).To(MatchError("no user found")) 124 }) 125 }) 126 }) 127 128 When("not logged in", func() { 129 BeforeEach(func() { 130 fakeSharedActor.CheckTargetReturns(actionerror.NotLoggedInError{ 131 BinaryName: binaryName, 132 }) 133 }) 134 135 It("returns an error", func() { 136 err := cmd.Execute(nil) 137 138 Expect(err).To(MatchError(actionerror.NotLoggedInError{BinaryName: binaryName})) 139 140 Expect(fakeSharedActor.CheckTargetCallCount()).To(Equal(1)) 141 checkTargetedOrg, checkTargetedSpace := fakeSharedActor.CheckTargetArgsForCall(0) 142 Expect(checkTargetedOrg).To(BeFalse()) 143 Expect(checkTargetedSpace).To(BeFalse()) 144 }) 145 }) 146 })