github.com/sleungcy/cli@v7.1.0+incompatible/integration/v7/isolated/disable_service_access_command_test.go (about) 1 package isolated 2 3 import ( 4 "code.cloudfoundry.org/cli/integration/helpers" 5 "code.cloudfoundry.org/cli/integration/helpers/servicebrokerstub" 6 . "github.com/onsi/ginkgo" 7 . "github.com/onsi/gomega" 8 . "github.com/onsi/gomega/gbytes" 9 . "github.com/onsi/gomega/gexec" 10 ) 11 12 var _ = Describe("disable service access command", func() { 13 Describe("help", func() { 14 When("--help flag is set", func() { 15 It("displays command usage to output", func() { 16 session := helpers.CF("disable-service-access", "--help") 17 Eventually(session).Should(Exit(0)) 18 Expect(session).To(Say("NAME:")) 19 Expect(session).To(Say("\\s+disable-service-access - Disable access to a service offering or service plan for one or all orgs")) 20 Expect(session).To(Say("USAGE:")) 21 Expect(session).To(Say("\\s+cf disable-service-access SERVICE \\[-b BROKER\\] \\[-p PLAN\\] \\[-o ORG\\]")) 22 Expect(session).To(Say("OPTIONS:")) 23 Expect(session).To(Say("\\s+\\-b\\s+Disable access to a service offering from a particular service broker. Required when service offering name is ambiguous")) 24 Expect(session).To(Say("\\s+\\-o\\s+Disable access for a specified organization")) 25 Expect(session).To(Say("\\s+\\-p\\s+Disable access to a specified service plan")) 26 Expect(session).To(Say("SEE ALSO:")) 27 Expect(session).To(Say("\\s+enable-service-access, marketplace, service-access, service-brokers")) 28 }) 29 }) 30 31 When("no service argument was provided", func() { 32 It("displays a warning, the help text, and exits 1", func() { 33 session := helpers.CF("disable-service-access") 34 Eventually(session).Should(Exit(1)) 35 Expect(session.Err).To(Say("Incorrect Usage: the required argument `SERVICE` was not provided")) 36 Expect(session).To(Say("NAME:")) 37 Expect(session).To(Say("\\s+disable-service-access - Disable access to a service offering or service plan for one or all orgs")) 38 Expect(session).To(Say("USAGE:")) 39 Expect(session).To(Say("\\s+cf disable-service-access SERVICE \\[-b BROKER\\] \\[-p PLAN\\] \\[-o ORG\\]")) 40 Expect(session).To(Say("OPTIONS:")) 41 Expect(session).To(Say("\\s+\\-b\\s+Disable access to a service offering from a particular service broker. Required when service offering name is ambiguous")) 42 Expect(session).To(Say("\\s+\\-o\\s+Disable access for a specified organization")) 43 Expect(session).To(Say("\\s+\\-p\\s+Disable access to a specified service plan")) 44 Expect(session).To(Say("SEE ALSO:")) 45 Expect(session).To(Say("\\s+enable-service-access, marketplace, service-access, service-brokers")) 46 }) 47 }) 48 49 When("an extra argument is provided", func() { 50 It("displays an error, and exits 1", func() { 51 session := helpers.CF("disable-service-access", "a-service", "extra-arg") 52 Eventually(session).Should(Exit(1)) 53 Expect(session).To(Say("FAILED")) 54 Expect(session.Err).To(Say(`Incorrect Usage: unexpected argument "extra-arg"`)) 55 Expect(session).To(Say("NAME:")) 56 Expect(session).To(Say("\\s+disable-service-access - Disable access to a service offering or service plan for one or all orgs")) 57 Expect(session).To(Say("USAGE:")) 58 Expect(session).To(Say("\\s+cf disable-service-access SERVICE \\[-b BROKER\\] \\[-p PLAN\\] \\[-o ORG\\]")) 59 Expect(session).To(Say("OPTIONS:")) 60 Expect(session).To(Say("\\s+\\-b\\s+Disable access to a service offering from a particular service broker. Required when service offering name is ambiguous")) 61 Expect(session).To(Say("\\s+\\-o\\s+Disable access for a specified organization")) 62 Expect(session).To(Say("\\s+\\-p\\s+Disable access to a specified service plan")) 63 Expect(session).To(Say("SEE ALSO:")) 64 Expect(session).To(Say("\\s+enable-service-access, marketplace, service-access, service-brokers")) 65 }) 66 }) 67 }) 68 69 Context("not logged in", func() { 70 BeforeEach(func() { 71 helpers.LogoutCF() 72 }) 73 74 It("displays FAILED, an informative error message, and exits 1", func() { 75 session := helpers.CF("disable-service-access", "does-not-matter") 76 Eventually(session).Should(Exit(1)) 77 Expect(session).To(Say("FAILED")) 78 Expect(session.Err).To(Say("Not logged in. Use 'cf login' or 'cf login --sso' to log in.")) 79 }) 80 }) 81 82 Context("logged in", func() { 83 var username string 84 85 BeforeEach(func() { 86 username, _ = helpers.GetCredentials() 87 helpers.LoginCF() 88 }) 89 90 When("service does not exist", func() { 91 It("displays FAILED, an informative error message, and exits 1", func() { 92 session := helpers.CF("disable-service-access", "some-service") 93 Eventually(session).Should(Exit(1)) 94 Expect(session).To(Say("Disabling access to all plans of service offering some-service for all orgs as %s\\.\\.\\.", username)) 95 Expect(session.Err).To(Say("Service offering 'some-service' not found")) 96 Expect(session).To(Say("FAILED")) 97 }) 98 }) 99 100 Context("a service broker is registered", func() { 101 var ( 102 orgName string 103 spaceName string 104 broker *servicebrokerstub.ServiceBrokerStub 105 ) 106 107 BeforeEach(func() { 108 orgName = helpers.NewOrgName() 109 spaceName = helpers.NewSpaceName() 110 helpers.SetupCF(orgName, spaceName) 111 112 broker = servicebrokerstub.New().WithPlans(2).Create().Register() 113 }) 114 115 AfterEach(func() { 116 helpers.QuickDeleteOrg(orgName) 117 broker.Forget() 118 }) 119 120 When("plans are public", func() { 121 BeforeEach(func() { 122 session := helpers.CF("enable-service-access", broker.FirstServiceOfferingName()) 123 Eventually(session).Should(Exit(0)) 124 }) 125 126 When("a service name is provided", func() { 127 It("displays an informative message, exits 0, and disables the service for all orgs", func() { 128 session := helpers.CF("disable-service-access", broker.FirstServiceOfferingName()) 129 Eventually(session).Should(Exit(0)) 130 Expect(session).To(Say("Disabling access to all plans of service offering %s for all orgs as %s...", broker.FirstServiceOfferingName(), username)) 131 Expect(session).To(Say("OK")) 132 133 session = helpers.CF("service-access", "-e", broker.FirstServiceOfferingName()) 134 Eventually(session).Should(Exit(0)) 135 Expect(session).To(Say("broker:\\s+%s", broker.Name)) 136 Expect(session).To(Say("%s\\s+%s\\s+none", 137 broker.FirstServiceOfferingName(), 138 broker.FirstServicePlanName(), 139 )) 140 }) 141 }) 142 143 When("a service name and plan name are provided", func() { 144 It("displays an informative message, exits 0, and disables the plan for all orgs", func() { 145 session := helpers.CF("disable-service-access", broker.FirstServiceOfferingName(), "-p", broker.FirstServicePlanName()) 146 Eventually(session).Should(Exit(0)) 147 Expect(session).To(Say("Disabling access to plan %s of service offering %s for all orgs as %s...", broker.FirstServicePlanName(), broker.FirstServiceOfferingName(), username)) 148 Expect(session).To(Say("OK")) 149 150 session = helpers.CF("service-access", "-e", broker.FirstServiceOfferingName()) 151 Eventually(session).Should(Exit(0)) 152 153 Expect(string(session.Out.Contents())).To(MatchRegexp( 154 `%s\s+%s\s+none`, 155 broker.FirstServiceOfferingName(), 156 broker.FirstServicePlanName(), 157 )) 158 159 Expect(string(session.Out.Contents())).To(MatchRegexp( 160 `%s\s+%s\s+all`, 161 broker.FirstServiceOfferingName(), 162 broker.Services[0].Plans[1].Name, 163 )) 164 }) 165 }) 166 167 When("an org name is provided", func() { 168 It("fails", func() { 169 session := helpers.CF("disable-service-access", broker.FirstServiceOfferingName(), "-o", orgName) 170 Eventually(session).Should(Exit(1)) 171 Expect(session).To(Say("Disabling access to all plans of service offering %s for org %s as %s...", broker.FirstServiceOfferingName(), orgName, username)) 172 Expect(session).To(Say("FAILED")) 173 Expect(session.Err).To(Say("Cannot remove organization level access for public plans\\.")) 174 }) 175 }) 176 }) 177 178 When("a plan is enabled for multiple orgs", func() { 179 var orgName2 string 180 181 BeforeEach(func() { 182 orgName2 = helpers.NewOrgName() 183 spaceName2 := helpers.NewSpaceName() 184 helpers.CreateOrgAndSpace(orgName2, spaceName2) 185 Eventually(helpers.CF("enable-service-access", broker.FirstServiceOfferingName(), "-o", orgName, "-p", broker.FirstServicePlanName())).Should(Exit(0)) 186 Eventually(helpers.CF("enable-service-access", broker.FirstServiceOfferingName(), "-o", orgName2, "-p", broker.FirstServicePlanName())).Should(Exit(0)) 187 }) 188 189 AfterEach(func() { 190 helpers.QuickDeleteOrg(orgName2) 191 }) 192 193 When("a service name and org is provided", func() { 194 It("displays an informative message, and exits 0, and disables the service for the given org", func() { 195 session := helpers.CF("disable-service-access", broker.FirstServiceOfferingName(), "-o", orgName) 196 Eventually(session).Should(Exit(0)) 197 Expect(session).To(Say("Disabling access to all plans of service offering %s for org %s as %s...", broker.FirstServiceOfferingName(), orgName, username)) 198 Expect(session).To(Say("Did not update plan %s as it already has visibility none\\.", broker.Services[0].Plans[1].Name)) 199 Expect(session).To(Say("OK")) 200 201 session = helpers.CF("service-access", "-e", broker.FirstServiceOfferingName()) 202 Eventually(session).Should(Exit(0)) 203 Expect(session).To(Say("broker:\\s+%s", broker.Name)) 204 Expect(session).To(Say("%s\\s+%s\\s+limited\\s+%s", 205 broker.FirstServiceOfferingName(), 206 broker.FirstServicePlanName(), 207 orgName2, 208 )) 209 }) 210 }) 211 212 When("a service name, plan name and org is provided", func() { 213 It("displays an informative message, and exits 0, disables the service for the given org and plan", func() { 214 session := helpers.CF("disable-service-access", broker.FirstServiceOfferingName(), "-p", broker.FirstServicePlanName(), "-o", orgName) 215 Eventually(session).Should(Exit(0)) 216 Expect(session).To(Say("Disabling access to plan %s of service offering %s for org %s as %s...", broker.FirstServicePlanName(), broker.FirstServiceOfferingName(), orgName, username)) 217 Expect(session).To(Say("OK")) 218 219 session = helpers.CF("service-access", "-e", broker.FirstServiceOfferingName()) 220 Eventually(session).Should(Exit(0)) 221 Expect(session).To(Say("broker:\\s+%s", broker.Name)) 222 Expect(session).To(Say("%s\\s+%s\\s+limited\\s+%s", 223 broker.FirstServiceOfferingName(), 224 broker.FirstServicePlanName(), 225 orgName2, 226 )) 227 }) 228 }) 229 }) 230 231 When("the org does not exist", func() { 232 It("displays FAILED, an informative error message, and exits 1", func() { 233 session := helpers.CF("disable-service-access", broker.FirstServiceOfferingName(), "-o", "not-a-real-org") 234 Eventually(session).Should(Exit(1)) 235 Expect(session).To(Say("Disabling access to all plans of service offering %s for org not-a-real-org as %s...", broker.FirstServiceOfferingName(), username)) 236 Expect(session).To(Say("FAILED")) 237 Expect(session.Err).To(Say("Organization 'not-a-real-org' not found")) 238 }) 239 }) 240 241 When("the plan does not exist", func() { 242 It("displays FAILED, an informative error message, and exits 1", func() { 243 session := helpers.CF("disable-service-access", broker.FirstServiceOfferingName(), "-p", "plan-does-not-exist") 244 Eventually(session).Should(Exit(1)) 245 Expect(session).To(Say("Disabling access to plan plan-does-not-exist of service offering %s for all orgs as %s...", broker.FirstServiceOfferingName(), username)) 246 Expect(session).To(Say("FAILED")) 247 Expect(session.Err).To(Say("The plan plan-does-not-exist could not be found for service %s", broker.FirstServiceOfferingName())) 248 }) 249 }) 250 251 When("two services with the same name are enabled", func() { 252 var secondBroker *servicebrokerstub.ServiceBrokerStub 253 254 BeforeEach(func() { 255 secondBroker = servicebrokerstub.New() 256 secondBroker.Services[0].Name = broker.FirstServiceOfferingName() 257 secondBroker.Create().Register() 258 Eventually(helpers.CF("enable-service-access", broker.FirstServiceOfferingName(), "-b", broker.Name)).Should(Exit(0)) 259 Eventually(helpers.CF("enable-service-access", secondBroker.FirstServiceOfferingName(), "-b", secondBroker.Name)).Should(Exit(0)) 260 }) 261 262 AfterEach(func() { 263 secondBroker.Forget() 264 }) 265 266 When("no broker name is provided", func() { 267 It("fails and asks for disambiguation", func() { 268 session := helpers.CF("disable-service-access", broker.FirstServiceOfferingName()) 269 Eventually(session).Should(Exit(1)) 270 Expect(session).To(Say("Disabling access to all plans of service offering %s for all orgs as %s...", broker.FirstServiceOfferingName(), username)) 271 Expect(session.Err).To(Say( 272 "Service '%s' is provided by multiple service brokers: %s, %s\nSpecify a broker by using the '-b' flag.", 273 broker.FirstServiceOfferingName(), 274 broker.Name, 275 secondBroker.Name, 276 )) 277 }) 278 }) 279 280 When("a broker name is provided", func() { 281 It("displays an informative message, exits 0, and disables access to the service", func() { 282 session := helpers.CF("disable-service-access", broker.FirstServiceOfferingName(), "-b", secondBroker.Name) 283 Eventually(session).Should(Exit(0)) 284 Expect(session).To(Say("Disabling access to all plans of service offering %s from broker %s for all orgs as %s...", broker.FirstServiceOfferingName(), secondBroker.Name, username)) 285 Expect(session).To(Say("OK")) 286 287 session = helpers.CF("service-access", "-b", secondBroker.Name) 288 Eventually(session).Should(Exit(0)) 289 Expect(session).To(Say("broker:\\s+%s", secondBroker.Name)) 290 Expect(session).To(Say("%s\\s+%s\\s+none", 291 secondBroker.FirstServiceOfferingName(), 292 secondBroker.FirstServicePlanName(), 293 )) 294 }) 295 }) 296 }) 297 }) 298 }) 299 })