github.com/sleungcy-sap/cli@v7.1.0+incompatible/integration/v7/isolated/stacks_command_test.go (about)

     1  package isolated
     2  
     3  import (
     4  	"regexp"
     5  
     6  	. "code.cloudfoundry.org/cli/cf/util/testhelpers/matchers"
     7  	"code.cloudfoundry.org/cli/integration/helpers"
     8  	. "github.com/onsi/ginkgo"
     9  	. "github.com/onsi/gomega"
    10  	. "github.com/onsi/gomega/gbytes"
    11  	. "github.com/onsi/gomega/gexec"
    12  )
    13  
    14  var _ = Describe("stacks command", func() {
    15  	When("--help flag is set", func() {
    16  		It("appears in cf help -a", func() {
    17  			session := helpers.CF("help", "-a")
    18  			Eventually(session).Should(Exit(0))
    19  			Expect(session).To(HaveCommandInCategoryWithDescription("stacks", "APPS", "List all stacks (a stack is a pre-built file system, including an operating system, that can run apps)"))
    20  		})
    21  
    22  		It("Displays command usage to output", func() {
    23  			session := helpers.CF("stacks", "--help")
    24  
    25  			Eventually(session).Should(Say("NAME:"))
    26  			Eventually(session).Should(Say(regexp.QuoteMeta("stacks - List all stacks (a stack is a pre-built file system, including an operating system, that can run apps)")))
    27  			Eventually(session).Should(Say("USAGE:"))
    28  			Eventually(session).Should(Say(regexp.QuoteMeta("cf stacks [--labels SELECTOR]")))
    29  			Eventually(session).Should(Say("EXAMPLES:"))
    30  			Eventually(session).Should(Say("cf stacks"))
    31  			Eventually(session).Should(Say(regexp.QuoteMeta("cf stacks --labels 'environment in (production,staging),tier in (backend)'")))
    32  			Eventually(session).Should(Say(regexp.QuoteMeta("cf stacks --labels 'env=dev,!chargeback-code,tier in (backend,worker)'")))
    33  			Eventually(session).Should(Say("OPTIONS:"))
    34  			Eventually(session).Should(Say(`--labels\s+Selector to filter stacks by labels`))
    35  			Eventually(session).Should(Say("SEE ALSO:"))
    36  			Eventually(session).Should(Say("create-buildpack, delete-buildpack, rename-buildpack, stack, update-buildpack"))
    37  			Eventually(session).Should(Exit(0))
    38  		})
    39  	})
    40  
    41  	When("environment is not set up correctly", func() {
    42  		It("displays an error and exits 1", func() {
    43  			helpers.CheckEnvironmentTargetedCorrectly(false, false, ReadOnlyOrg, "stacks")
    44  		})
    45  	})
    46  
    47  	When("environment is set up correctly", func() {
    48  		var stackName string
    49  		var userName string
    50  
    51  		BeforeEach(func() {
    52  			helpers.SetupCF(ReadOnlyOrg, ReadOnlySpace)
    53  			stackName = helpers.NewStackName()
    54  			helpers.CreateStack(stackName)
    55  			helperSession := helpers.CF("set-label", "stack", stackName, "cool=ranch")
    56  
    57  			Eventually(helperSession).Should(Exit(0))
    58  			userName, _ = helpers.GetCredentials()
    59  		})
    60  
    61  		When("--labels flag is set", func() {
    62  
    63  			It("lists the filtered stacks by the flag", func() {
    64  				session := helpers.CF("stacks", "--labels", "cool in (ranch)")
    65  
    66  				Eventually(session).Should(Exit(0))
    67  
    68  				Expect(session).Should(Say(`Getting stacks as %s\.\.\.`, userName))
    69  				Expect(session).Should(Say(`name\s+description`))
    70  				Expect(session).Should(Say(`%s\s+CF CLI integration test stack, please delete`, stackName))
    71  
    72  				Expect(session).ShouldNot(Say(`cflinuxfs\d+\s+Cloud Foundry Linux`))
    73  
    74  			})
    75  		})
    76  
    77  		It("lists the stacks", func() {
    78  			session := helpers.CF("stacks")
    79  
    80  			Eventually(session).Should(Exit(0))
    81  
    82  			Expect(session).Should(Say(`Getting stacks as %s\.\.\.`, userName))
    83  			Expect(session).Should(Say(`name\s+description`))
    84  			Expect(session).Should(Say(`cflinuxfs\d+\s+Cloud Foundry Linux`))
    85  			Expect(session).Should(Say(`%s\s+CF CLI integration test stack, please delete`, stackName))
    86  		})
    87  	})
    88  })