github.com/LukasHeimann/cloudfoundrycli/v8@v8.4.4/command/v7/enable_service_access_command_test.go (about)

     1  package v7_test
     2  
     3  import (
     4  	"errors"
     5  
     6  	"github.com/LukasHeimann/cloudfoundrycli/v8/actor/v7action"
     7  	"github.com/LukasHeimann/cloudfoundrycli/v8/command/commandfakes"
     8  	. "github.com/LukasHeimann/cloudfoundrycli/v8/command/v7"
     9  	"github.com/LukasHeimann/cloudfoundrycli/v8/command/v7/v7fakes"
    10  	"github.com/LukasHeimann/cloudfoundrycli/v8/util/configv3"
    11  	"github.com/LukasHeimann/cloudfoundrycli/v8/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("enable-service-access command", func() {
    19  	var (
    20  		cmd             EnableServiceAccessCommand
    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 = EnableServiceAccessCommand{
    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  
    45  	It("checks the target", func() {
    46  		err := cmd.Execute(nil)
    47  		Expect(err).NotTo(HaveOccurred())
    48  
    49  		Expect(fakeSharedActor.CheckTargetCallCount()).To(Equal(1))
    50  		org, space := fakeSharedActor.CheckTargetArgsForCall(0)
    51  		Expect(org).To(BeFalse())
    52  		Expect(space).To(BeFalse())
    53  	})
    54  
    55  	DescribeTable(
    56  		"message text",
    57  		func(plan, org, broker, expected string) {
    58  			fakeActor.GetCurrentUserReturns(configv3.User{Name: "fake-user"}, nil)
    59  
    60  			setPositionalFlags(&cmd, "fake-service")
    61  			setFlag(&cmd, "-p", plan)
    62  			setFlag(&cmd, "-o", org)
    63  			setFlag(&cmd, "-b", broker)
    64  
    65  			err := cmd.Execute(nil)
    66  			Expect(err).NotTo(HaveOccurred())
    67  
    68  			Expect(testUI.Out).To(Say(expected))
    69  		},
    70  		Entry("no flags", "", "", "",
    71  			`Enabling access to all plans of service offering fake-service for all orgs as fake-user\.\.\.`),
    72  		Entry("plan", "fake-plan", "", "",
    73  			`Enabling access to plan fake-plan of service offering fake-service for all orgs as fake-user\.\.\.`),
    74  		Entry("org", "", "fake-org", "",
    75  			`Enabling access to all plans of service offering fake-service for org fake-org as fake-user\.\.\.`),
    76  		Entry("broker", "", "", "fake-broker",
    77  			`Enabling access to all plans of service offering fake-service from broker fake-broker for all orgs as fake-user\.\.\.`),
    78  		Entry("plan and org", "fake-plan", "fake-org", "",
    79  			`Enabling access to plan fake-plan of service offering fake-service for org fake-org as fake-user\.\.\.`),
    80  		Entry("plan and broker", "fake-plan", "", "fake-broker",
    81  			`Enabling access to plan fake-plan of service offering fake-service from broker fake-broker for all orgs as fake-user\.\.\.`),
    82  		Entry("plan, org and broker", "fake-plan", "fake-org", "fake-broker",
    83  			`Enabling access to plan fake-plan of service offering fake-service from broker fake-broker for org fake-org as fake-user\.\.\.`),
    84  		Entry("broker and org", "", "fake-org", "fake-broker",
    85  			`Enabling access to all plans of service offering fake-service from broker fake-broker for org fake-org as fake-user\.\.\.`),
    86  	)
    87  
    88  	It("calls the actor with the right arguments", func() {
    89  		const (
    90  			offeringName = "some-offering"
    91  			planName     = "some-plan"
    92  			orgName      = "some-org"
    93  			brokerName   = "some-broker"
    94  		)
    95  
    96  		setFlag(&cmd, "-b", brokerName)
    97  		setFlag(&cmd, "-o", orgName)
    98  		setFlag(&cmd, "-p", planName)
    99  		setPositionalFlags(&cmd, offeringName)
   100  
   101  		fakeActor.EnableServiceAccessReturns(v7action.SkippedPlans{}, v7action.Warnings{"a warning"}, nil)
   102  
   103  		err := cmd.Execute(nil)
   104  
   105  		Expect(err).NotTo(HaveOccurred())
   106  		Expect(testUI.Out).To(Say("OK"))
   107  		Expect(testUI.Err).To(Say("a warning"))
   108  
   109  		Expect(fakeActor.EnableServiceAccessCallCount()).To(Equal(1))
   110  
   111  		actualOfferingName, actualBrokerName, actualOrgName, actualPlanName := fakeActor.EnableServiceAccessArgsForCall(0)
   112  		Expect(actualOfferingName).To(Equal(offeringName))
   113  		Expect(actualPlanName).To(Equal(planName))
   114  		Expect(actualOrgName).To(Equal(orgName))
   115  		Expect(actualBrokerName).To(Equal(brokerName))
   116  	})
   117  
   118  	It("reports on skipped plans", func() {
   119  		const offeringName = "some-offering"
   120  		setPositionalFlags(&cmd, offeringName)
   121  
   122  		fakeActor.EnableServiceAccessReturns(
   123  			v7action.SkippedPlans{"skipped_1", "skipped_2"},
   124  			v7action.Warnings{"a warning"},
   125  			nil,
   126  		)
   127  
   128  		err := cmd.Execute(nil)
   129  
   130  		Expect(err).NotTo(HaveOccurred())
   131  		Expect(testUI.Out).To(Say("Did not update plan skipped_1 as it already has visibility all\\."))
   132  		Expect(testUI.Out).To(Say("Did not update plan skipped_2 as it already has visibility all\\."))
   133  		Expect(testUI.Out).To(Say("OK"))
   134  	})
   135  
   136  	When("the actor fails", func() {
   137  		It("prints the error", func() {
   138  			fakeActor.EnableServiceAccessReturns(v7action.SkippedPlans{}, v7action.Warnings{"a warning"}, errors.New("access error"))
   139  
   140  			err := cmd.Execute(nil)
   141  			Expect(err).To(MatchError("access error"))
   142  			Expect(testUI.Err).To(Say("a warning"))
   143  		})
   144  	})
   145  
   146  	When("checking the target fails", func() {
   147  		BeforeEach(func() {
   148  			fakeSharedActor.CheckTargetReturns(errors.New("unable to check target"))
   149  		})
   150  
   151  		It("returns an error", func() {
   152  			err := cmd.Execute(nil)
   153  			Expect(err).To(MatchError("unable to check target"))
   154  		})
   155  	})
   156  })