github.com/sleungcy/cli@v7.1.0+incompatible/integration/v6/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(Say("NAME:")) 18 Eventually(session).Should(Say("\\s+disable-service-access - Disable access to a service or service plan for one or all orgs")) 19 Eventually(session).Should(Say("USAGE:")) 20 Eventually(session).Should(Say("\\s+cf disable-service-access SERVICE \\[-b BROKER\\] \\[-p PLAN\\] \\[-o ORG\\]")) 21 Eventually(session).Should(Say("OPTIONS:")) 22 Eventually(session).Should(Say("\\s+\\-b\\s+Disable access to a service from a particular service broker. Required when service name is ambiguous")) 23 Eventually(session).Should(Say("\\s+\\-o\\s+Disable access for a specified organization")) 24 Eventually(session).Should(Say("\\s+\\-p\\s+Disable access to a specified service plan")) 25 Eventually(session).Should(Say("SEE ALSO:")) 26 Eventually(session).Should(Say("\\s+marketplace, service-access, service-brokers")) 27 Eventually(session).Should(Exit(0)) 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.Err).Should(Say("Incorrect Usage: the required argument `SERVICE` was not provided")) 35 Eventually(session).Should(Say("NAME:")) 36 Eventually(session).Should(Say("\\s+disable-service-access - Disable access to a service or service plan for one or all orgs")) 37 Eventually(session).Should(Say("USAGE:")) 38 Eventually(session).Should(Say("\\s+cf disable-service-access SERVICE \\[-b BROKER\\] \\[-p PLAN\\] \\[-o ORG\\]")) 39 Eventually(session).Should(Say("OPTIONS:")) 40 Eventually(session).Should(Say("\\s+\\-b\\s+Disable access to a service from a particular service broker. Required when service name is ambiguous")) 41 Eventually(session).Should(Say("\\s+\\-o\\s+Disable access for a specified organization")) 42 Eventually(session).Should(Say("\\s+\\-p\\s+Disable access to a specified service plan")) 43 Eventually(session).Should(Say("SEE ALSO:")) 44 Eventually(session).Should(Say("\\s+marketplace, service-access, service-brokers")) 45 Eventually(session).Should(Exit(1)) 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(Say("FAILED")) 53 Eventually(session.Err).Should(Say(`Incorrect Usage: unexpected argument "extra-arg"`)) 54 Eventually(session).Should(Say("NAME:")) 55 Eventually(session).Should(Say("\\s+disable-service-access - Disable access to a service or service plan for one or all orgs")) 56 Eventually(session).Should(Say("USAGE:")) 57 Eventually(session).Should(Say("\\s+cf disable-service-access SERVICE \\[-b BROKER\\] \\[-p PLAN\\] \\[-o ORG\\]")) 58 Eventually(session).Should(Say("OPTIONS:")) 59 Eventually(session).Should(Say("\\s+\\-b\\s+Disable access to a service from a particular service broker. Required when service name is ambiguous")) 60 Eventually(session).Should(Say("\\s+\\-o\\s+Disable access for a specified organization")) 61 Eventually(session).Should(Say("\\s+\\-p\\s+Disable access to a specified service plan")) 62 Eventually(session).Should(Say("SEE ALSO:")) 63 Eventually(session).Should(Say("\\s+marketplace, service-access, service-brokers")) 64 Eventually(session).Should(Exit(1)) 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(Say("FAILED")) 77 Eventually(session.Err).Should(Say("Not logged in. Use 'cf login' or 'cf login --sso' to log in.")) 78 Eventually(session).Should(Exit(1)) 79 }) 80 }) 81 82 Context("logged in", func() { 83 84 var username string 85 86 BeforeEach(func() { 87 username, _ = helpers.GetCredentials() 88 helpers.LoginCF() 89 }) 90 91 Context("the service does not exist", func() { 92 When("only the service is specified", func() { 93 It("displays FAILED, an informative error message, and exits 1", func() { 94 session := helpers.CF("disable-service-access", "some-service") 95 Eventually(session).Should(Say("Disabling access to all plans of service some-service for all orgs as %s\\.\\.\\.", username)) 96 Eventually(session.Err).Should(Say("Service offering 'some-service' not found")) 97 Eventually(session).Should(Say("FAILED")) 98 Eventually(session).Should(Exit(1)) 99 }) 100 }) 101 }) 102 103 Context("a service broker is registered", func() { 104 var ( 105 orgName string 106 spaceName string 107 broker *servicebrokerstub.ServiceBrokerStub 108 ) 109 110 BeforeEach(func() { 111 orgName = helpers.NewOrgName() 112 spaceName = helpers.NewSpaceName() 113 helpers.SetupCF(orgName, spaceName) 114 115 broker = servicebrokerstub.New().WithPlans(2).Create().Register() 116 }) 117 118 AfterEach(func() { 119 helpers.TargetOrgAndSpace(orgName, spaceName) 120 broker.Forget() 121 helpers.QuickDeleteOrg(orgName) 122 }) 123 124 When("a service has access enabled for all orgs and plans", func() { 125 BeforeEach(func() { 126 session := helpers.CF("enable-service-access", broker.FirstServiceOfferingName()) 127 Eventually(session).Should(Exit(0)) 128 }) 129 130 When("a service name is provided", func() { 131 It("displays an informative message, exits 0, and disables the service for all orgs", func() { 132 session := helpers.CF("disable-service-access", broker.FirstServiceOfferingName()) 133 Eventually(session).Should(Say("Disabling access to all plans of service %s for all orgs as %s...", broker.FirstServiceOfferingName(), username)) 134 Eventually(session).Should(Say("OK")) 135 Eventually(session).Should(Exit(0)) 136 137 session = helpers.CF("service-access", "-e", broker.FirstServiceOfferingName()) 138 Eventually(session).Should(Exit(0)) 139 Eventually(session).Should(Say("broker:\\s+%s", broker.Name)) 140 Eventually(session).Should(Say("%s\\s+%s\\s+none", 141 broker.FirstServiceOfferingName(), 142 broker.FirstServicePlanName(), 143 )) 144 }) 145 }) 146 147 When("a service name and plan name are provided", func() { 148 It("displays an informative message, exits 0, and disables the plan for all orgs", func() { 149 session := helpers.CF("disable-service-access", broker.FirstServiceOfferingName(), "-p", broker.FirstServicePlanName()) 150 Eventually(session).Should(Say("Disabling access of plan %s for service %s as %s...", broker.FirstServicePlanName(), broker.FirstServiceOfferingName(), username)) 151 Eventually(session).Should(Say("OK")) 152 Eventually(session).Should(Exit(0)) 153 154 session = helpers.CF("service-access", "-e", broker.FirstServiceOfferingName()) 155 Eventually(session).Should(Exit(0)) 156 157 Expect(string(session.Out.Contents())).To(MatchRegexp( 158 `%s\s+%s\s+none`, 159 broker.FirstServiceOfferingName(), 160 broker.FirstServicePlanName(), 161 )) 162 163 Expect(string(session.Out.Contents())).To(MatchRegexp( 164 `%s\s+%s\s+all`, 165 broker.FirstServiceOfferingName(), 166 broker.Services[0].Plans[1].Name, 167 )) 168 }) 169 }) 170 }) 171 172 When("a service has access enabled for multiple orgs and a specific plan", func() { 173 var orgName2 string 174 175 BeforeEach(func() { 176 orgName2 = helpers.NewOrgName() 177 spaceName2 := helpers.NewSpaceName() 178 helpers.CreateOrgAndSpace(orgName2, spaceName2) 179 Eventually(helpers.CF("enable-service-access", broker.FirstServiceOfferingName(), "-o", orgName, "-p", broker.FirstServicePlanName())).Should(Exit(0)) 180 Eventually(helpers.CF("enable-service-access", broker.FirstServiceOfferingName(), "-o", orgName2, "-p", broker.FirstServicePlanName())).Should(Exit(0)) 181 }) 182 183 AfterEach(func() { 184 helpers.QuickDeleteOrg(orgName2) 185 }) 186 187 When("a service name and org is provided", func() { 188 It("displays an informative message, and exits 0, and disables the service for the given org", func() { 189 session := helpers.CF("disable-service-access", broker.FirstServiceOfferingName(), "-o", orgName) 190 Eventually(session).Should(Say("Disabling access to all plans of service %s for the org %s as %s...", broker.FirstServiceOfferingName(), orgName, username)) 191 Eventually(session).Should(Say("OK")) 192 Eventually(session).Should(Exit(0)) 193 194 session = helpers.CF("service-access", "-e", broker.FirstServiceOfferingName()) 195 Eventually(session).Should(Exit(0)) 196 Eventually(session).Should(Say("broker:\\s+%s", broker.Name)) 197 Eventually(session).Should(Say("%s\\s+%s\\s+limited\\s+%s", 198 broker.FirstServiceOfferingName(), 199 broker.FirstServicePlanName(), 200 orgName2, 201 )) 202 }) 203 }) 204 205 When("a service name, plan name and org is provided", func() { 206 It("displays an informative message, and exits 0, disables the service for the given org and plan", func() { 207 session := helpers.CF("disable-service-access", broker.FirstServiceOfferingName(), "-p", broker.FirstServicePlanName(), "-o", orgName) 208 Eventually(session).Should(Say("Disabling access to plan %s of service %s for org %s as %s...", broker.FirstServicePlanName(), broker.FirstServiceOfferingName(), orgName, username)) 209 Eventually(session).Should(Say("OK")) 210 Eventually(session).Should(Exit(0)) 211 212 session = helpers.CF("service-access", "-e", broker.FirstServiceOfferingName()) 213 Eventually(session).Should(Exit(0)) 214 Eventually(session).Should(Say("broker:\\s+%s", broker.Name)) 215 Eventually(session).Should(Say("%s\\s+%s\\s+limited\\s+%s", 216 broker.FirstServiceOfferingName(), 217 broker.FirstServicePlanName(), 218 orgName2, 219 )) 220 }) 221 }) 222 }) 223 224 When("the org does not exist", func() { 225 It("displays FAILED, an informative error message, and exits 1", func() { 226 session := helpers.CF("disable-service-access", broker.FirstServiceOfferingName(), "-o", "not-a-real-org") 227 Eventually(session).Should(Say("Disabling access to all plans of service %s for the org not-a-real-org as %s...", broker.FirstServiceOfferingName(), username)) 228 Eventually(session).Should(Say("FAILED")) 229 Eventually(session.Err).Should(Say("Organization 'not-a-real-org' not found")) 230 Eventually(session).Should(Exit(1)) 231 }) 232 }) 233 234 When("the plan does not exist", func() { 235 It("displays FAILED, an informative error message, and exits 1", func() { 236 session := helpers.CF("disable-service-access", broker.FirstServiceOfferingName(), "-p", "plan-does-not-exist") 237 Eventually(session).Should(Say("Disabling access of plan plan-does-not-exist for service %s as %s...", broker.FirstServiceOfferingName(), username)) 238 Eventually(session).Should(Say("FAILED")) 239 Eventually(session.Err).Should(Say("The plan plan-does-not-exist could not be found for service %s", broker.FirstServiceOfferingName())) 240 Eventually(session).Should(Exit(1)) 241 }) 242 }) 243 244 When("two services with the same name are enabled", func() { 245 var secondBroker *servicebrokerstub.ServiceBrokerStub 246 247 BeforeEach(func() { 248 secondBroker = servicebrokerstub.New() 249 secondBroker.Services[0].Name = broker.FirstServiceOfferingName() 250 secondBroker.Create().Register() 251 Eventually(helpers.CF("enable-service-access", broker.FirstServiceOfferingName(), "-b", broker.Name)).Should(Exit(0)) 252 Eventually(helpers.CF("enable-service-access", secondBroker.FirstServiceOfferingName(), "-b", secondBroker.Name)).Should(Exit(0)) 253 }) 254 255 AfterEach(func() { 256 secondBroker.Forget() 257 }) 258 259 When("a service name and broker name are provided", func() { 260 It("displays an informative message, exits 0, and disables access to the service", func() { 261 session := helpers.CF("disable-service-access", broker.FirstServiceOfferingName(), "-b", secondBroker.Name) 262 Eventually(session).Should(Say("Disabling access to all plans of service %s from broker %s for all orgs as %s...", broker.FirstServiceOfferingName(), secondBroker.Name, username)) 263 Eventually(session).Should(Say("OK")) 264 Eventually(session).Should(Exit(0)) 265 266 session = helpers.CF("service-access", "-b", secondBroker.Name) 267 Eventually(session).Should(Exit(0)) 268 Eventually(session).Should(Say("broker:\\s+%s", secondBroker.Name)) 269 Eventually(session).Should(Say("%s\\s+%s\\s+none", 270 secondBroker.FirstServiceOfferingName(), 271 secondBroker.FirstServicePlanName(), 272 )) 273 }) 274 }) 275 }) 276 }) 277 278 Context("multiple service brokers are registered", func() { 279 var ( 280 orgName string 281 spaceName string 282 broker1 *servicebrokerstub.ServiceBrokerStub 283 broker2 *servicebrokerstub.ServiceBrokerStub 284 ) 285 286 BeforeEach(func() { 287 orgName = helpers.NewOrgName() 288 spaceName = helpers.NewSpaceName() 289 helpers.SetupCF(orgName, spaceName) 290 291 broker1 = servicebrokerstub.Register() 292 broker2 = servicebrokerstub.New() 293 broker2.Services[0].Name = broker1.FirstServiceOfferingName() 294 broker2.Services[0].Plans[0].Name = broker1.FirstServicePlanName() 295 broker2.Create().Register() 296 }) 297 298 AfterEach(func() { 299 helpers.TargetOrgAndSpace(orgName, spaceName) 300 broker1.Forget() 301 broker2.Forget() 302 helpers.QuickDeleteOrg(orgName) 303 }) 304 305 When("two services have access enabled in the same org", func() { 306 BeforeEach(func() { 307 session := helpers.CF("enable-service-access", broker1.FirstServiceOfferingName(), "-b", broker1.Name, "-o", orgName) 308 Eventually(session).Should(Exit(0)) 309 session = helpers.CF("enable-service-access", broker1.FirstServiceOfferingName(), "-b", broker2.Name, "-o", orgName) 310 Eventually(session).Should(Exit(0)) 311 }) 312 313 It("fails to disable access when no broker is specified", func() { 314 session := helpers.CF("disable-service-access", broker1.FirstServiceOfferingName(), "-o", orgName) 315 Eventually(session.Err).Should(Say("Service '%s' is provided by multiple service brokers. Specify a broker by using the '-b' flag.", broker1.FirstServiceOfferingName())) 316 Eventually(session).Should(Exit(1)) 317 }) 318 319 It("successfully disables access when the broker is specified", func() { 320 session := helpers.CF("disable-service-access", broker1.FirstServiceOfferingName(), "-o", orgName, "-b", broker1.Name) 321 Eventually(session).Should(Exit(0)) 322 323 session = helpers.CF("marketplace") 324 Consistently(session.Out).ShouldNot(Say("%s/s+%s/.+%s", broker1.FirstServiceOfferingName(), broker1.FirstServicePlanName(), broker1.Name)) 325 Eventually(session).Should(Exit(0)) 326 }) 327 }) 328 329 When("two services have access enabled in different orgs", func() { 330 var otherOrgName string 331 332 BeforeEach(func() { 333 otherOrgName = helpers.NewOrgName() 334 helpers.SetupCF(otherOrgName, spaceName) 335 336 session := helpers.CF("enable-service-access", broker1.FirstServiceOfferingName(), "-b", broker1.Name, "-o", otherOrgName) 337 Eventually(session).Should(Exit(0)) 338 session = helpers.CF("enable-service-access", broker1.FirstServiceOfferingName(), "-b", broker2.Name, "-o", orgName) 339 Eventually(session).Should(Exit(0)) 340 }) 341 342 It("fails to disable access when no broker is specified", func() { 343 session := helpers.CF("disable-service-access", broker1.FirstServiceOfferingName(), "-o", orgName) 344 Eventually(session.Err).Should(Say("Service '%s' is provided by multiple service brokers. Specify a broker by using the '-b' flag.", broker1.FirstServiceOfferingName())) 345 Eventually(session).Should(Exit(1)) 346 347 session = helpers.CF("disable-service-access", broker1.FirstServiceOfferingName(), "-o", otherOrgName) 348 Eventually(session.Err).Should(Say("Service '%s' is provided by multiple service brokers. Specify a broker by using the '-b' flag.", broker1.FirstServiceOfferingName())) 349 Eventually(session).Should(Exit(1)) 350 }) 351 352 It("successfully disables access when the broker is specified", func() { 353 session := helpers.CF("disable-service-access", broker1.FirstServiceOfferingName(), "-o", orgName, "-b", broker1.Name) 354 Eventually(session).Should(Exit(0)) 355 356 session = helpers.CF("marketplace") 357 Consistently(session.Out).ShouldNot(Say("%s/s+%s/.+%s", broker1.FirstServiceOfferingName(), broker1.FirstServicePlanName(), broker1.Name)) 358 Eventually(session).Should(Exit(0)) 359 }) 360 }) 361 362 When("two services have plan enabeled in different orgs", func() { 363 var otherOrgName string 364 365 BeforeEach(func() { 366 otherOrgName = helpers.NewOrgName() 367 helpers.SetupCF(otherOrgName, spaceName) 368 369 session := helpers.CF("enable-service-access", broker1.FirstServiceOfferingName(), "-b", broker1.Name, "-p", broker1.FirstServicePlanName(), "-o", otherOrgName) 370 Eventually(session).Should(Exit(0)) 371 session = helpers.CF("enable-service-access", broker1.FirstServiceOfferingName(), "-b", broker2.Name, "-p", broker1.FirstServicePlanName(), "-o", orgName) 372 Eventually(session).Should(Exit(0)) 373 }) 374 375 It("fails to disable access when no broker is specified", func() { 376 session := helpers.CF("disable-service-access", broker1.FirstServiceOfferingName(), "-p", broker1.FirstServicePlanName(), "-o", orgName) 377 Eventually(session.Err).Should(Say("Service '%s' is provided by multiple service brokers. Specify a broker by using the '-b' flag.", broker1.FirstServiceOfferingName())) 378 Eventually(session).Should(Exit(1)) 379 380 session = helpers.CF("disable-service-access", broker1.FirstServiceOfferingName(), "-p", broker1.FirstServicePlanName(), "-o", otherOrgName) 381 Eventually(session.Err).Should(Say("Service '%s' is provided by multiple service brokers. Specify a broker by using the '-b' flag.", broker1.FirstServiceOfferingName())) 382 Eventually(session).Should(Exit(1)) 383 }) 384 385 It("successfully disables access when the broker is specified", func() { 386 session := helpers.CF("disable-service-access", broker1.FirstServiceOfferingName(), "-p", broker1.FirstServicePlanName(), "-o", orgName, "-b", broker1.Name) 387 Eventually(session).Should(Exit(0)) 388 389 session = helpers.CF("marketplace") 390 Consistently(session.Out).ShouldNot(Say("%s/s+%s/.+%s", broker1.FirstServiceOfferingName(), broker1.FirstServicePlanName(), broker1.Name)) 391 Eventually(session).Should(Exit(0)) 392 }) 393 }) 394 }) 395 }) 396 })