github.com/loafoe/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 })