github.com/arunkumar7540/cli@v6.45.0+incompatible/integration/v7/isolated/create_route_command_test.go (about)

     1  package isolated
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/integration/helpers"
     5  	. "github.com/onsi/ginkgo"
     6  	. "github.com/onsi/gomega"
     7  	. "github.com/onsi/gomega/gbytes"
     8  	. "github.com/onsi/gomega/gexec"
     9  )
    10  
    11  var _ = Describe("create-route command", func() {
    12  	Context("Help", func() {
    13  		It("displays the help information", func() {
    14  			session := helpers.CF("create-route", "--help")
    15  			Eventually(session).Should(Say(`NAME:`))
    16  			Eventually(session).Should(Say(`create-route - Create a route for later use\n`))
    17  			Eventually(session).Should(Say(`\n`))
    18  
    19  			Eventually(session).Should(Say(`USAGE:`))
    20  			Eventually(session).Should(Say(`cf create-route DOMAIN \[--hostname HOSTNAME\] \[--path PATH\]\n`))
    21  			Eventually(session).Should(Say(`\n`))
    22  
    23  			Eventually(session).Should(Say(`EXAMPLES:`))
    24  			Eventually(session).Should(Say(`cf create-route example.com\s+# example.com`))
    25  			Eventually(session).Should(Say(`cf create-route example.com --hostname myapp\s+# myapp.example.com`))
    26  			Eventually(session).Should(Say(`cf create-route example.com --hostname myapp --path foo\s+# myapp.example.com/foo`))
    27  			Eventually(session).Should(Say(`\n`))
    28  
    29  			Eventually(session).Should(Say(`OPTIONS:`))
    30  			Eventually(session).Should(Say(`--hostname, -n\s+Hostname for the HTTP route \(required for shared domains\)`))
    31  			Eventually(session).Should(Say(`--path\s+Path for the HTTP route`))
    32  			Eventually(session).Should(Say(`\n`))
    33  
    34  			Eventually(session).Should(Say(`SEE ALSO:`))
    35  			Eventually(session).Should(Say(`check-route, domains, map-route, routes, unmap-route`))
    36  
    37  			Eventually(session).Should(Exit(0))
    38  		})
    39  	})
    40  
    41  	When("the environment is not setup correctly", func() {
    42  		It("fails with the appropriate errors", func() {
    43  			helpers.CheckEnvironmentTargetedCorrectly(true, false, ReadOnlyOrg, "create-route", "some-domain")
    44  		})
    45  	})
    46  
    47  	When("the environment is set up correctly", func() {
    48  		var (
    49  			orgName   string
    50  			spaceName string
    51  		)
    52  
    53  		BeforeEach(func() {
    54  			orgName = helpers.NewOrgName()
    55  			spaceName = helpers.NewSpaceName()
    56  
    57  			helpers.SetupCF(orgName, spaceName)
    58  		})
    59  
    60  		AfterEach(func() {
    61  			helpers.QuickDeleteOrg(orgName)
    62  		})
    63  
    64  		When("the space and domain exist", func() {
    65  			var (
    66  				userName   string
    67  				domainName string
    68  			)
    69  
    70  			BeforeEach(func() {
    71  				domainName = helpers.NewDomainName()
    72  				userName, _ = helpers.GetCredentials()
    73  			})
    74  
    75  			When("the route already exists", func() {
    76  				var (
    77  					domain   helpers.Domain
    78  					hostname string
    79  				)
    80  
    81  				BeforeEach(func() {
    82  					domain = helpers.NewDomain(orgName, domainName)
    83  					hostname = "key-lime-pie"
    84  					domain.CreatePrivate()
    85  					Eventually(helpers.CF("create-route", domainName, "--hostname", hostname)).Should(Exit(0))
    86  				})
    87  
    88  				AfterEach(func() {
    89  					domain.Delete()
    90  				})
    91  
    92  				It("warns the user that it has already been created and runs to completion without failing", func() {
    93  					session := helpers.CF("create-route", domainName, "--hostname", hostname)
    94  					Eventually(session).Should(Say(`Creating route %s\.%s for org %s / space %s as %s\.\.\.`, hostname, domainName, orgName, spaceName, userName))
    95  					Eventually(session).Should(Say(`Route already exists with host '%s' for domain '%s'\.`, hostname, domainName))
    96  					Eventually(session).Should(Say(`OK`))
    97  					Eventually(session).Should(Exit(0))
    98  				})
    99  			})
   100  
   101  			When("the route does not already exist", func() {
   102  				When("the domain is private", func() {
   103  					var domain helpers.Domain
   104  
   105  					BeforeEach(func() {
   106  						domain = helpers.NewDomain(orgName, domainName)
   107  						domain.Create()
   108  					})
   109  
   110  					AfterEach(func() {
   111  						domain.Delete()
   112  					})
   113  
   114  					When("no flags are used", func() {
   115  						It("creates the route", func() {
   116  							session := helpers.CF("create-route", domainName)
   117  							Eventually(session).Should(Say(`Creating route %s for org %s / space %s as %s\.\.\.`, domainName, orgName, spaceName, userName))
   118  							Eventually(session).Should(Say(`Route %s has been created\.`, domainName))
   119  							Eventually(session).Should(Exit(0))
   120  						})
   121  					})
   122  
   123  					When("passing in a hostname", func() {
   124  						It("creates the route with the hostname", func() {
   125  							hostname := "tiramisu"
   126  							session := helpers.CF("create-route", domainName, "-n", hostname)
   127  							Eventually(session).Should(Say(`Creating route %s\.%s for org %s / space %s as %s\.\.\.`, hostname, domainName, orgName, spaceName, userName))
   128  							Eventually(session).Should(Say(`Route %s\.%s has been created\.`, hostname, domainName))
   129  							Eventually(session).Should(Exit(0))
   130  						})
   131  					})
   132  
   133  					When("passing in hostname and path with a leading '/'", func() {
   134  						It("creates the route with hostname and path", func() {
   135  							hostname := "tiramisu"
   136  							pathString := "/recipes"
   137  							session := helpers.CF("create-route", domainName, "-n", hostname, "--path", pathString)
   138  							Eventually(session).Should(Say(`Creating route %s\.%s%s for org %s / space %s as %s\.\.\.`, hostname, domainName, pathString, orgName, spaceName, userName))
   139  							Eventually(session).Should(Say(`Route %s\.%s%s has been created\.`, hostname, domainName, pathString))
   140  							Eventually(session).Should(Exit(0))
   141  						})
   142  					})
   143  
   144  					When("passing in hostname and path without a leading '/'", func() {
   145  						It("creates the route with hostname and path", func() {
   146  							hostname := "tiramisu"
   147  							pathString := "more-recipes"
   148  							session := helpers.CF("create-route", domainName, "-n", hostname, "--path", pathString)
   149  							Eventually(session).Should(Say(`Creating route %s\.%s\/%s for org %s / space %s as %s\.\.\.`, hostname, domainName, pathString, orgName, spaceName, userName))
   150  							Eventually(session).Should(Say(`Route %s\.%s\/%s has been created\.`, hostname, domainName, pathString))
   151  							Eventually(session).Should(Exit(0))
   152  						})
   153  					})
   154  				})
   155  
   156  				When("the domain is shared", func() {
   157  					var domain helpers.Domain
   158  
   159  					BeforeEach(func() {
   160  						domain = helpers.NewDomain("", domainName)
   161  						domain.CreateShared()
   162  					})
   163  
   164  					AfterEach(func() {
   165  						domain.DeleteShared()
   166  					})
   167  
   168  					When("no flags are used", func() {
   169  						It("errors indicating that hostname is missing", func() {
   170  							session := helpers.CF("create-route", domainName)
   171  							Eventually(session).Should(Say(`Creating route %s for org %s / space %s as %s\.\.\.`, domainName, orgName, spaceName, userName))
   172  							Eventually(session.Out).Should(Say(`FAILED`))
   173  							Eventually(session.Err).Should(Say(`Missing host. Routes in shared domains must have a host defined.`))
   174  							Eventually(session).Should(Exit(1))
   175  						})
   176  					})
   177  
   178  					When("passing in a hostname", func() {
   179  						It("creates the route with the hostname", func() {
   180  							hostname := "tiramisu"
   181  							session := helpers.CF("create-route", domainName, "-n", hostname)
   182  							Eventually(session).Should(Say(`Creating route %s\.%s for org %s / space %s as %s\.\.\.`, hostname, domainName, orgName, spaceName, userName))
   183  							Eventually(session).Should(Say(`Route %s\.%s has been created\.`, hostname, domainName))
   184  							Eventually(session).Should(Exit(0))
   185  						})
   186  					})
   187  
   188  					When("passing in a hostname and path", func() {
   189  						It("creates the route with the hostname", func() {
   190  							hostname := "tiramisu"
   191  							path := "lion"
   192  							session := helpers.CF("create-route", domainName, "-n", hostname, "--path", path)
   193  							Eventually(session).Should(Say(`Creating route %s\.%s\/%s for org %s / space %s as %s\.\.\.`, hostname, domainName, path, orgName, spaceName, userName))
   194  							Eventually(session).Should(Say(`Route %s\.%s\/%s has been created\.`, hostname, domainName, path))
   195  							Eventually(session).Should(Exit(0))
   196  						})
   197  					})
   198  				})
   199  			})
   200  		})
   201  
   202  		When("the domain does not exist", func() {
   203  			It("displays error and exits 1", func() {
   204  				session := helpers.CF("create-route", "some-domain")
   205  				Eventually(session).Should(Say(`FAILED`))
   206  				Eventually(session.Err).Should(Say(`Domain 'some-domain' not found.`))
   207  				Eventually(session).Should(Exit(1))
   208  			})
   209  		})
   210  
   211  		When("the domain is not specified", func() {
   212  			It("displays error and exits 1", func() {
   213  				session := helpers.CF("create-route")
   214  				Eventually(session.Err).Should(Say("Incorrect Usage: the required argument `DOMAIN` was not provided\n"))
   215  				Eventually(session.Err).Should(Say("\n"))
   216  				Eventually(session).Should(Say("NAME:\n"))
   217  				Eventually(session).Should(Exit(1))
   218  			})
   219  		})
   220  	})
   221  })