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  })