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