github.com/mook-as/cf-cli@v7.0.0-beta.28.0.20200120190804-b91c115fae48+incompatible/integration/v7/isolated/check_route_command_test.go (about)

     1  package isolated
     2  
     3  import (
     4  	. "code.cloudfoundry.org/cli/cf/util/testhelpers/matchers"
     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("check-route command", func() {
    13  	Context("Help", func() {
    14  		It("appears in cf help -a", func() {
    15  			session := helpers.CF("help", "-a")
    16  			Eventually(session).Should(Exit(0))
    17  			Expect(session).To(HaveCommandInCategoryWithDescription("check-route", "ROUTES", "Perform a check to determine whether a route currently exists or not"))
    18  		})
    19  
    20  		It("displays the help information", func() {
    21  			session := helpers.CF("check-route", "--help")
    22  			Eventually(session).Should(Say(`NAME:`))
    23  			Eventually(session).Should(Say(`check-route - Perform a check to determine whether a route currently exists or not\n`))
    24  			Eventually(session).Should(Say(`\n`))
    25  
    26  			Eventually(session).Should(Say(`USAGE:`))
    27  			Eventually(session).Should(Say(`cf check-route DOMAIN \[--hostname HOSTNAME\] \[--path PATH\]\n`))
    28  			Eventually(session).Should(Say(`\n`))
    29  
    30  			Eventually(session).Should(Say(`EXAMPLES:`))
    31  			Eventually(session).Should(Say(`cf check-route example.com                      # example.com`))
    32  			Eventually(session).Should(Say(`cf check-route example.com -n myhost --path foo # myhost.example.com/foo`))
    33  			Eventually(session).Should(Say(`cf check-route example.com --path foo           # example.com/foo`))
    34  			Eventually(session).Should(Say(`\n`))
    35  
    36  			Eventually(session).Should(Say(`OPTIONS:`))
    37  			Eventually(session).Should(Say(`--hostname, -n\s+Hostname used to identify the HTTP route`))
    38  			Eventually(session).Should(Say(`--path\s+Path for the route`))
    39  			Eventually(session).Should(Say(`\n`))
    40  
    41  			Eventually(session).Should(Say(`SEE ALSO:`))
    42  			Eventually(session).Should(Say(`create-route, delete-route, routes`))
    43  
    44  			Eventually(session).Should(Exit(0))
    45  		})
    46  	})
    47  
    48  	When("the environment is not setup correctly", func() {
    49  		It("fails with the appropriate errors", func() {
    50  			helpers.CheckEnvironmentTargetedCorrectly(true, false, ReadOnlyOrg, "check-route", "some-domain")
    51  		})
    52  	})
    53  
    54  	When("the environment is set up correctly", func() {
    55  		var (
    56  			orgName   string
    57  			spaceName string
    58  		)
    59  
    60  		BeforeEach(func() {
    61  			orgName = helpers.NewOrgName()
    62  			spaceName = helpers.NewSpaceName()
    63  
    64  			helpers.SetupCF(orgName, spaceName)
    65  		})
    66  
    67  		AfterEach(func() {
    68  			helpers.QuickDeleteOrg(orgName)
    69  		})
    70  
    71  		When("the domain exists", func() {
    72  			var (
    73  				domainName string
    74  			)
    75  
    76  			BeforeEach(func() {
    77  				domainName = helpers.NewDomainName()
    78  			})
    79  
    80  			When("the route exists", func() {
    81  				var (
    82  					domain   helpers.Domain
    83  					hostname string
    84  				)
    85  
    86  				BeforeEach(func() {
    87  					domain = helpers.NewDomain(orgName, domainName)
    88  					hostname = "key-lime-pie"
    89  					domain.CreatePrivate()
    90  					Eventually(helpers.CF("create-route", domainName, "--hostname", hostname)).Should(Exit(0))
    91  				})
    92  
    93  				AfterEach(func() {
    94  					domain.Delete()
    95  				})
    96  
    97  				It("tells the user the route exists and exits without failing", func() {
    98  					session := helpers.CF("check-route", domainName, "--hostname", hostname)
    99  					Eventually(session).Should(Say(`Checking for route\.\.\.`))
   100  					Eventually(session).Should(Say(`Route '%s\.%s' does exist\.`, hostname, domainName))
   101  					Eventually(session).Should(Say(`OK`))
   102  					Eventually(session).Should(Exit(0))
   103  				})
   104  			})
   105  
   106  			When("the route does not already exist", func() {
   107  				var domain helpers.Domain
   108  
   109  				BeforeEach(func() {
   110  					domain = helpers.NewDomain(orgName, domainName)
   111  					domain.Create()
   112  				})
   113  
   114  				AfterEach(func() {
   115  					domain.Delete()
   116  				})
   117  
   118  				When("no flags are used", func() {
   119  					It("checks the route", func() {
   120  						session := helpers.CF("check-route", domainName)
   121  						Eventually(session).Should(Say(`Checking for route\.\.\.`))
   122  						Eventually(session).Should(Say(`Route '%s' does not exist\.`, domainName))
   123  						Eventually(session).Should(Exit(0))
   124  					})
   125  				})
   126  
   127  				When("passing in a hostname", func() {
   128  					It("checks the route with the hostname", func() {
   129  						hostname := "tiramisu"
   130  						session := helpers.CF("check-route", domainName, "-n", hostname)
   131  						Eventually(session).Should(Say(`Checking for route\.\.\.`))
   132  						Eventually(session).Should(Say(`Route '%s\.%s' does not exist\.`, hostname, domainName))
   133  						Eventually(session).Should(Exit(0))
   134  					})
   135  				})
   136  
   137  				When("passing in hostname and path with a leading '/'", func() {
   138  					It("checks the route with hostname and path", func() {
   139  						hostname := "tiramisu"
   140  						pathString := "/recipes"
   141  						session := helpers.CF("check-route", domainName, "-n", hostname, "--path", pathString)
   142  						Eventually(session).Should(Say(`Checking for route\.\.\.`))
   143  						Eventually(session).Should(Say(`Route '%s\.%s%s' does not exist\.`, hostname, domainName, pathString))
   144  						Eventually(session).Should(Exit(0))
   145  					})
   146  				})
   147  
   148  				When("passing in hostname and path without a leading '/'", func() {
   149  					It("checks the route with hostname and path", func() {
   150  						hostname := "tiramisu"
   151  						pathString := "more-recipes"
   152  						session := helpers.CF("check-route", domainName, "-n", hostname, "--path", pathString)
   153  						Eventually(session).Should(Say(`Checking for route\.\.\.`))
   154  						Eventually(session).Should(Say(`Route '%s\.%s\/%s' does not exist\.`, hostname, domainName, pathString))
   155  						Eventually(session).Should(Exit(0))
   156  					})
   157  				})
   158  			})
   159  		})
   160  
   161  		When("the domain does not exist", func() {
   162  			It("displays error and exits 1", func() {
   163  				session := helpers.CF("check-route", "some-domain")
   164  				Eventually(session).Should(Say(`FAILED`))
   165  				Eventually(session.Err).Should(Say(`Domain 'some-domain' not found.`))
   166  				Eventually(session).Should(Exit(1))
   167  			})
   168  		})
   169  
   170  		When("the domain is not specified", func() {
   171  			It("displays error and exits 1", func() {
   172  				session := helpers.CF("check-route")
   173  				Eventually(session.Err).Should(Say("Incorrect Usage: the required argument `DOMAIN` was not provided\n"))
   174  				Eventually(session.Err).Should(Say("\n"))
   175  				Eventually(session).Should(Say("NAME:\n"))
   176  				Eventually(session).Should(Exit(1))
   177  			})
   178  		})
   179  	})
   180  })