github.com/cloudfoundry-community/cloudfoundry-cli@v6.44.1-0.20240130060226-cda5ed8e89a5+incompatible/integration/shared/isolated/services_command_test.go (about)

     1  package isolated
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/api/cloudcontroller/ccversion"
     5  	"code.cloudfoundry.org/cli/integration/helpers"
     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("services command", func() {
    13  	var (
    14  		userName string
    15  	)
    16  
    17  	BeforeEach(func() {
    18  		userName, _ = helpers.GetCredentials()
    19  	})
    20  
    21  	Describe("help", func() {
    22  		When("--help flag is set", func() {
    23  			It("Displays command usage to output", func() {
    24  				session := helpers.CF("services", "--help")
    25  
    26  				Eventually(session).Should(Say("NAME:"))
    27  				Eventually(session).Should(Say("services - List all service instances in the target space"))
    28  				Eventually(session).Should(Say("USAGE:"))
    29  				Eventually(session).Should(Say("cf services"))
    30  				Eventually(session).Should(Say("ALIAS:"))
    31  				Eventually(session).Should(Say("s"))
    32  				Eventually(session).Should(Say("SEE ALSO:"))
    33  				Eventually(session).Should(Say("create-service, marketplace"))
    34  
    35  				Eventually(session).Should(Exit(0))
    36  			})
    37  		})
    38  	})
    39  
    40  	Context("has no services", func() {
    41  		BeforeEach(func() {
    42  			helpers.LoginCF()
    43  			helpers.TargetOrgAndSpace(ReadOnlyOrg, ReadOnlySpace)
    44  		})
    45  
    46  		It("tells the user 'no services found'", func() {
    47  			session := helpers.CF("services")
    48  
    49  			Eventually(session).Should(Say("Getting services in org %s / space %s as %s...", ReadOnlyOrg, ReadOnlySpace, userName))
    50  			Eventually(session).Should(Say("No services found"))
    51  			Eventually(session).Should(Exit(0))
    52  		})
    53  	})
    54  
    55  	Context("has services", func() {
    56  		var (
    57  			orgName   string
    58  			spaceName string
    59  
    60  			service     string
    61  			servicePlan string
    62  			broker      helpers.ServiceBroker
    63  
    64  			managedService1      string
    65  			managedService2      string
    66  			userProvidedService1 string
    67  			userProvidedService2 string
    68  			appName1             string
    69  			appName2             string
    70  		)
    71  
    72  		BeforeEach(func() {
    73  			orgName = helpers.NewOrgName()
    74  			spaceName = helpers.NewSpaceName()
    75  			helpers.SetupCF(orgName, spaceName)
    76  
    77  			userProvidedService1 = helpers.PrefixedRandomName("UPS1")
    78  			userProvidedService2 = helpers.PrefixedRandomName("UPS2")
    79  
    80  			Eventually(helpers.CF("cups", userProvidedService1, "-p", `{"username": "admin", "password": "admin"}`)).Should(Exit(0))
    81  			Eventually(helpers.CF("cups", userProvidedService2, "-p", `{"username": "admin", "password": "admin"}`)).Should(Exit(0))
    82  
    83  			domain := helpers.DefaultSharedDomain()
    84  			service = helpers.PrefixedRandomName("SERVICE")
    85  			servicePlan = helpers.PrefixedRandomName("SERVICE-PLAN")
    86  			broker = helpers.CreateBroker(domain, service, servicePlan)
    87  			Eventually(helpers.CF("enable-service-access", service)).Should(Exit(0))
    88  
    89  			managedService1 = helpers.PrefixedRandomName("MANAGED1")
    90  			managedService2 = helpers.PrefixedRandomName("MANAGED2")
    91  			Eventually(helpers.CF("create-service", service, servicePlan, managedService1)).Should(Exit(0))
    92  			Eventually(helpers.CF("create-service", service, servicePlan, managedService2)).Should(Exit(0))
    93  
    94  			appName1 = helpers.PrefixedRandomName("APP1")
    95  			appName2 = helpers.PrefixedRandomName("APP2")
    96  			helpers.WithHelloWorldApp(func(appDir string) {
    97  				Eventually(helpers.CF("push", appName1, "--no-start", "-p", appDir, "-b", "staticfile_buildpack", "--no-route")).Should(Exit(0))
    98  				Eventually(helpers.CF("push", appName2, "--no-start", "-p", appDir, "-b", "staticfile_buildpack", "--no-route")).Should(Exit(0))
    99  			})
   100  			Eventually(helpers.CF("bind-service", appName1, managedService1)).Should(Exit(0))
   101  			Eventually(helpers.CF("bind-service", appName1, managedService2)).Should(Exit(0))
   102  			Eventually(helpers.CF("bind-service", appName1, userProvidedService1)).Should(Exit(0))
   103  			Eventually(helpers.CF("bind-service", appName1, userProvidedService2)).Should(Exit(0))
   104  			Eventually(helpers.CF("bind-service", appName2, managedService2)).Should(Exit(0))
   105  			Eventually(helpers.CF("bind-service", appName2, userProvidedService2)).Should(Exit(0))
   106  		})
   107  
   108  		AfterEach(func() {
   109  			Eventually(helpers.CF("unbind-service", appName1, managedService1)).Should(Exit(0))
   110  			Eventually(helpers.CF("unbind-service", appName1, managedService2)).Should(Exit(0))
   111  			Eventually(helpers.CF("unbind-service", appName1, userProvidedService1)).Should(Exit(0))
   112  			Eventually(helpers.CF("unbind-service", appName1, userProvidedService2)).Should(Exit(0))
   113  			Eventually(helpers.CF("unbind-service", appName2, managedService2)).Should(Exit(0))
   114  			Eventually(helpers.CF("unbind-service", appName2, userProvidedService2)).Should(Exit(0))
   115  			Eventually(helpers.CF("delete-service", managedService1, "-f")).Should(Exit(0))
   116  			Eventually(helpers.CF("delete-service", managedService2, "-f")).Should(Exit(0))
   117  			broker.Destroy()
   118  			helpers.QuickDeleteOrg(orgName)
   119  		})
   120  
   121  		When("CAPI version is < 2.125.0", func() {
   122  			BeforeEach(func() {
   123  				helpers.SkipIfVersionAtLeast(ccversion.MinVersionMultiServiceRegistrationV2)
   124  			})
   125  
   126  			It("displays all service information", func() {
   127  				session := helpers.CF("services")
   128  				Eventually(session).Should(Say("Getting services in org %s / space %s as %s...", orgName, spaceName, userName))
   129  				Eventually(session).Should(Say(`name\s+service\s+plan\s+bound apps\s+last operation\s+broker`))
   130  				Eventually(session).Should(Say(`%s\s+%s\s+%s\s+%s\s+%s\s`, managedService1, service, servicePlan, appName1, "create succeeded"))
   131  				Eventually(session).Should(Say(`%s\s+%s\s+%s\s+%s, %s\s+%s\s`, managedService2, service, servicePlan, appName1, appName2, "create succeeded"))
   132  				Eventually(session).Should(Say(`%s\s+%s\s+%s`, userProvidedService1, "user-provided", appName1))
   133  				Eventually(session).Should(Say(`%s\s+%s\s+%s, %s`, userProvidedService2, "user-provided", appName1, appName2))
   134  				Eventually(session).Should(Exit(0))
   135  			})
   136  		})
   137  
   138  		When("CAPI version is => 2.125.0", func() {
   139  			BeforeEach(func() {
   140  				helpers.SkipIfVersionLessThan(ccversion.MinVersionMultiServiceRegistrationV2)
   141  			})
   142  
   143  			It("displays all service information", func() {
   144  				session := helpers.CF("services")
   145  				Eventually(session).Should(Say("Getting services in org %s / space %s as %s...", orgName, spaceName, userName))
   146  				Eventually(session).Should(Say(`name\s+service\s+plan\s+bound apps\s+last operation\s+broker`))
   147  				Eventually(session).Should(Say(`%s\s+%s\s+%s\s+%s\s+%s\s+%s`, managedService1, service, servicePlan, appName1, "create succeeded", broker.Name))
   148  				Eventually(session).Should(Say(`%s\s+%s\s+%s\s+%s, %s\s+%s\s+%s`, managedService2, service, servicePlan, appName1, appName2, "create succeeded", broker.Name))
   149  				Eventually(session).Should(Say(`%s\s+%s\s+%s`, userProvidedService1, "user-provided", appName1))
   150  				Eventually(session).Should(Say(`%s\s+%s\s+%s, %s`, userProvidedService2, "user-provided", appName1, appName2))
   151  				Eventually(session).Should(Exit(0))
   152  			})
   153  		})
   154  	})
   155  })