github.com/orange-cloudfoundry/cli@v7.1.0+incompatible/command/v7/disable_service_access_command_test.go (about)

     1  package v7_test
     2  
     3  import (
     4  	"errors"
     5  
     6  	"code.cloudfoundry.org/cli/actor/v7action"
     7  	"code.cloudfoundry.org/cli/command/commandfakes"
     8  	. "code.cloudfoundry.org/cli/command/v7"
     9  	"code.cloudfoundry.org/cli/command/v7/v7fakes"
    10  	"code.cloudfoundry.org/cli/util/configv3"
    11  	"code.cloudfoundry.org/cli/util/ui"
    12  	. "github.com/onsi/ginkgo"
    13  	. "github.com/onsi/ginkgo/extensions/table"
    14  	. "github.com/onsi/gomega"
    15  	. "github.com/onsi/gomega/gbytes"
    16  )
    17  
    18  var _ = Describe("disable-service-access Command", func() {
    19  	var (
    20  		cmd             DisableServiceAccessCommand
    21  		testUI          *ui.UI
    22  		fakeConfig      *commandfakes.FakeConfig
    23  		fakeSharedActor *commandfakes.FakeSharedActor
    24  		fakeActor       *v7fakes.FakeActor
    25  	)
    26  
    27  	BeforeEach(func() {
    28  		testUI = ui.NewTestUI(nil, NewBuffer(), NewBuffer())
    29  		fakeConfig = new(commandfakes.FakeConfig)
    30  		fakeSharedActor = new(commandfakes.FakeSharedActor)
    31  		fakeActor = new(v7fakes.FakeActor)
    32  
    33  		cmd = DisableServiceAccessCommand{
    34  			BaseCommand: BaseCommand{
    35  				UI:          testUI,
    36  				Config:      fakeConfig,
    37  				SharedActor: fakeSharedActor,
    38  				Actor:       fakeActor,
    39  			},
    40  		}
    41  
    42  		setPositionalFlags(&cmd, "some-service")
    43  
    44  		fakeActor.DisableServiceAccessReturns(nil, v7action.Warnings{"a warning"}, nil)
    45  	})
    46  
    47  	It("checks the target", func() {
    48  		err := cmd.Execute(nil)
    49  		Expect(err).NotTo(HaveOccurred())
    50  
    51  		Expect(fakeSharedActor.CheckTargetCallCount()).To(Equal(1))
    52  		org, space := fakeSharedActor.CheckTargetArgsForCall(0)
    53  		Expect(org).To(BeFalse())
    54  		Expect(space).To(BeFalse())
    55  	})
    56  
    57  	DescribeTable(
    58  		"message text",
    59  		func(plan, org, broker, expected string) {
    60  			setPositionalFlags(&cmd, "fake-service")
    61  			fakeConfig.CurrentUserReturns(configv3.User{Name: "fake-user"}, nil)
    62  
    63  			setFlag(&cmd, "-o", org)
    64  			setFlag(&cmd, "-p", plan)
    65  			setFlag(&cmd, "-b", broker)
    66  
    67  			err := cmd.Execute(nil)
    68  			Expect(err).NotTo(HaveOccurred())
    69  
    70  			Expect(testUI.Out).To(Say(expected))
    71  		},
    72  		Entry("no flags", "", "", "",
    73  			`Disabling access to all plans of service offering fake-service for all orgs as fake-user\.\.\.`),
    74  		Entry("plan", "fake-plan", "", "",
    75  			`Disabling access to plan fake-plan of service offering fake-service for all orgs as fake-user\.\.\.`),
    76  		Entry("org", "", "fake-org", "",
    77  			`Disabling access to all plans of service offering fake-service for org fake-org as fake-user\.\.\.`),
    78  		Entry("broker", "", "", "fake-broker",
    79  			`Disabling access to all plans of service offering fake-service from broker fake-broker for all orgs as fake-user\.\.\.`),
    80  		Entry("plan and org", "fake-plan", "fake-org", "",
    81  			`Disabling access to plan fake-plan of service offering fake-service for org fake-org as fake-user\.\.\.`),
    82  		Entry("plan and broker", "fake-plan", "", "fake-broker",
    83  			`Disabling access to plan fake-plan of service offering fake-service from broker fake-broker for all orgs as fake-user\.\.\.`),
    84  		Entry("plan, org and broker", "fake-plan", "fake-org", "fake-broker",
    85  			`Disabling access to plan fake-plan of service offering fake-service from broker fake-broker for org fake-org as fake-user\.\.\.`),
    86  		Entry("broker and org", "", "fake-org", "fake-broker",
    87  			`Disabling access to all plans of service offering fake-service from broker fake-broker for org fake-org as fake-user\.\.\.`),
    88  	)
    89  
    90  	It("passes the right parameters to the actor", func() {
    91  		const (
    92  			offering = "myoffering"
    93  			broker   = "mybroker"
    94  			plan     = "myplan"
    95  			org      = "myorg"
    96  		)
    97  
    98  		setFlag(&cmd, "-b", broker)
    99  		setFlag(&cmd, "-o", org)
   100  		setFlag(&cmd, "-p", plan)
   101  		setPositionalFlags(&cmd, offering)
   102  
   103  		err := cmd.Execute(nil)
   104  		Expect(err).NotTo(HaveOccurred())
   105  		Expect(fakeActor.DisableServiceAccessCallCount()).To(Equal(1))
   106  		actualOffering, actualBroker, actualOrg, actualPlan := fakeActor.DisableServiceAccessArgsForCall(0)
   107  		Expect(actualOffering).To(Equal(offering))
   108  		Expect(actualPlan).To(Equal(plan))
   109  		Expect(actualOrg).To(Equal(org))
   110  		Expect(actualBroker).To(Equal(broker))
   111  	})
   112  
   113  	It("says OK and reports warnings", func() {
   114  		err := cmd.Execute(nil)
   115  		Expect(err).NotTo(HaveOccurred())
   116  		Expect(testUI.Out).To(Say("OK"))
   117  		Expect(testUI.Err).To(Say("a warning"))
   118  	})
   119  
   120  	When("some plans were skipped", func() {
   121  		BeforeEach(func() {
   122  			fakeActor.DisableServiceAccessReturns(v7action.SkippedPlans{"skipped_1", "skipped_2"}, nil, nil)
   123  		})
   124  
   125  		It("reports them", func() {
   126  			err := cmd.Execute(nil)
   127  			Expect(err).NotTo(HaveOccurred())
   128  			Expect(testUI.Out).To(Say("Did not update plan skipped_1 as it already has visibility none\\."))
   129  			Expect(testUI.Out).To(Say("Did not update plan skipped_2 as it already has visibility none\\."))
   130  			Expect(testUI.Out).To(Say("OK"))
   131  		})
   132  	})
   133  
   134  	When("the actor return an error", func() {
   135  		BeforeEach(func() {
   136  			fakeActor.DisableServiceAccessReturns(nil, v7action.Warnings{"careful"}, errors.New("badness"))
   137  		})
   138  
   139  		It("fails with warnings", func() {
   140  			err := cmd.Execute(nil)
   141  			Expect(err).To(MatchError("badness"))
   142  			Expect(testUI.Err).To(Say("careful"))
   143  		})
   144  	})
   145  
   146  	When("not logged in", func() {
   147  		BeforeEach(func() {
   148  			fakeSharedActor.CheckTargetReturns(errors.New("not logged in"))
   149  		})
   150  
   151  		It("fails", func() {
   152  			err := cmd.Execute(nil)
   153  			Expect(err).To(MatchError("not logged in"))
   154  		})
   155  	})
   156  })