github.com/sleungcy-sap/cli@v7.1.0+incompatible/integration/v7/isolated/purge_service_offering_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("purge-service-offering command", func() { 13 Describe("help", func() { 14 When("the --help flag is set", func() { 15 It("displays command usage to output", func() { 16 session := helpers.CF("purge-service-offering", "--help") 17 18 Eventually(session).Should(Exit(0)) 19 Expect(session).To(Say("NAME:")) 20 Expect(session).To(Say("purge-service-offering - Recursively remove a service offering and child objects from Cloud Foundry database without making requests to a service broker")) 21 Expect(session).To(Say("USAGE:")) 22 Expect(session).To(Say(`cf purge-service-offering SERVICE \[-b BROKER\] \[-f\]`)) 23 Expect(session).To(Say("WARNING: This operation assumes that the service broker responsible for this service offering is no longer available, and all service instances have been deleted, leaving orphan records in Cloud Foundry's database\\. All knowledge of the service offering will be removed from Cloud Foundry, including service instances and service bindings\\. No attempt will be made to contact the service broker; running this command without destroying the service broker will cause orphan service instances\\. After running this command you may want to run either delete-service-auth-token or delete-service-broker to complete the cleanup\\.")) 24 Expect(session).To(Say("OPTIONS:")) 25 Expect(session).To(Say("-b\\s+Purge a service offering from a particular service broker. Required when service offering name is ambiguous")) 26 Expect(session).To(Say("-f\\s+Force deletion without confirmation")) 27 Expect(session).To(Say("SEE ALSO:")) 28 Expect(session).To(Say("marketplace, purge-service-instance, service-brokers")) 29 }) 30 }) 31 32 When("no args are passed", func() { 33 It("displays an error message with help text", func() { 34 session := helpers.CF("purge-service-offering") 35 36 Eventually(session).Should(Exit(1)) 37 38 Expect(session.Err).To(Say("Incorrect Usage: the required argument `SERVICE` was not provided")) 39 Expect(session).To(Say("NAME:")) 40 Expect(session).To(Say("purge-service-offering - Recursively remove a service offering and child objects from Cloud Foundry database without making requests to a service broker")) 41 Expect(session).To(Say("USAGE:")) 42 Expect(session).To(Say(`cf purge-service-offering SERVICE \[-b BROKER\] \[-f\]`)) 43 Expect(session).To(Say("WARNING: This operation assumes that the service broker responsible for this service offering is no longer available, and all service instances have been deleted, leaving orphan records in Cloud Foundry's database\\. All knowledge of the service offering will be removed from Cloud Foundry, including service instances and service bindings\\. No attempt will be made to contact the service broker; running this command without destroying the service broker will cause orphan service instances\\. After running this command you may want to run either delete-service-auth-token or delete-service-broker to complete the cleanup\\.")) 44 Expect(session).To(Say("OPTIONS:")) 45 Expect(session).To(Say("-b\\s+Purge a service offering from a particular service broker. Required when service offering name is ambiguous")) 46 Expect(session).To(Say("-f\\s+Force deletion without confirmation")) 47 Expect(session).To(Say("SEE ALSO:")) 48 Expect(session).To(Say("marketplace, purge-service-instance, service-brokers")) 49 }) 50 }) 51 52 When("more than required number of args are passed", func() { 53 It("displays an error message with help text and exits 1", func() { 54 session := helpers.CF("purge-service-offering", "service-name", "extra") 55 56 Eventually(session).Should(Exit(1)) 57 Expect(session.Err).To(Say(`Incorrect Usage: unexpected argument "extra"`)) 58 Expect(session).To(Say("NAME:")) 59 Expect(session).To(Say("purge-service-offering - Recursively remove a service offering and child objects from Cloud Foundry database without making requests to a service broker")) 60 Expect(session).To(Say("USAGE:")) 61 Expect(session).To(Say(`cf purge-service-offering SERVICE \[-b BROKER\] \[-f\]`)) 62 Expect(session).To(Say("WARNING: This operation assumes that the service broker responsible for this service offering is no longer available, and all service instances have been deleted, leaving orphan records in Cloud Foundry's database\\. All knowledge of the service offering will be removed from Cloud Foundry, including service instances and service bindings\\. No attempt will be made to contact the service broker; running this command without destroying the service broker will cause orphan service instances\\. After running this command you may want to run either delete-service-auth-token or delete-service-broker to complete the cleanup\\.")) 63 Expect(session).To(Say("OPTIONS:")) 64 Expect(session).To(Say("-b\\s+Purge a service offering from a particular service broker. Required when service offering name is ambiguous")) 65 Expect(session).To(Say("-f\\s+Force deletion without confirmation")) 66 Expect(session).To(Say("SEE ALSO:")) 67 Expect(session).To(Say("marketplace, purge-service-instance, service-brokers")) 68 }) 69 }) 70 }) 71 72 When("logged in", func() { 73 var orgName, spaceName string 74 75 BeforeEach(func() { 76 orgName = helpers.NewOrgName() 77 spaceName = helpers.NewSpaceName() 78 helpers.SetupCF(orgName, spaceName) 79 }) 80 81 AfterEach(func() { 82 helpers.QuickDeleteOrg(orgName) 83 }) 84 85 When("the service exists", func() { 86 var broker *servicebrokerstub.ServiceBrokerStub 87 88 BeforeEach(func() { 89 broker = servicebrokerstub.EnableServiceAccess() 90 }) 91 92 AfterEach(func() { 93 broker.Forget() 94 }) 95 96 It("purges the service offering and plans", func() { 97 session := helpers.CF("purge-service-offering", broker.FirstServiceOfferingName(), "-f") 98 Eventually(session).Should(Exit(0)) 99 100 Expect(session).To(Say(`Purging service offering %s\.\.\.`, broker.FirstServiceOfferingName())) 101 Expect(session).To(Say(`OK`)) 102 103 session = helpers.CF("marketplace") 104 Eventually(session).Should(Exit(0)) 105 Expect(session).NotTo(Say(broker.FirstServiceOfferingName())) 106 Expect(session).NotTo(Say(broker.FirstServicePlanName())) 107 }) 108 109 When("the service name is ambiguous", func() { 110 var secondBroker *servicebrokerstub.ServiceBrokerStub 111 112 BeforeEach(func() { 113 secondBroker = servicebrokerstub.New() 114 secondBroker.Services[0].Name = broker.FirstServiceOfferingName() 115 secondBroker.Create().Register().EnableServiceAccess() 116 }) 117 118 AfterEach(func() { 119 secondBroker.Forget() 120 }) 121 122 It("fails, asking the user to disambiguate", func() { 123 session := helpers.CF("purge-service-offering", broker.FirstServiceOfferingName(), "-f") 124 Eventually(session).Should(Exit(1)) 125 Expect(session.Err).To(Say(`Service '%s' is provided by multiple service brokers: %s, %s`, broker.FirstServiceOfferingName(), broker.Name, secondBroker.Name)) 126 Expect(session.Err).To(Say(`Specify a broker by using the '-b' flag.`)) 127 }) 128 }) 129 }) 130 131 When("the service does not exist", func() { 132 It("succeeds, printing a message", func() { 133 session := helpers.CF("purge-service-offering", "no-such-service", "-f") 134 135 Eventually(session).Should(Exit(0)) 136 Expect(session.Out).To(Say(`Service offering 'no-such-service' not found.`)) 137 Expect(session.Out).To(Say(`OK`)) 138 }) 139 }) 140 }) 141 142 When("the environment is not targeted correctly", func() { 143 It("fails with the appropriate errors", func() { 144 helpers.CheckEnvironmentTargetedCorrectly(false, false, ReadOnlyOrg, "purge-service-offering", "-f", "foo") 145 }) 146 }) 147 })