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 })