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