github.com/mook-as/cf-cli@v7.0.0-beta.28.0.20200120190804-b91c115fae48+incompatible/integration/v7/isolated/create_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("create-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("create-route", "ROUTES", "Create a route for later use")) 18 }) 19 20 It("displays the help information", func() { 21 session := helpers.CF("create-route", "--help") 22 Eventually(session).Should(Say(`NAME:`)) 23 Eventually(session).Should(Say(`create-route - Create a route for later use\n`)) 24 Eventually(session).Should(Say(`\n`)) 25 26 Eventually(session).Should(Say(`USAGE:`)) 27 Eventually(session).Should(Say(`cf create-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 create-route example.com\s+# example.com`)) 32 Eventually(session).Should(Say(`cf create-route example.com --hostname myapp\s+# myapp.example.com`)) 33 Eventually(session).Should(Say(`cf create-route example.com --hostname myapp --path foo\s+# myapp.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 for the HTTP route \(required for shared domains\)`)) 38 Eventually(session).Should(Say(`--path\s+Path for the HTTP route`)) 39 Eventually(session).Should(Say(`\n`)) 40 41 Eventually(session).Should(Say(`SEE ALSO:`)) 42 Eventually(session).Should(Say(`check-route, domains, map-route, routes, unmap-route`)) 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, "create-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 space and domain exist", func() { 72 var ( 73 userName string 74 domainName string 75 ) 76 77 BeforeEach(func() { 78 domainName = helpers.NewDomainName() 79 userName, _ = helpers.GetCredentials() 80 }) 81 82 When("the route already exists", func() { 83 var ( 84 domain helpers.Domain 85 hostname string 86 ) 87 88 BeforeEach(func() { 89 domain = helpers.NewDomain(orgName, domainName) 90 hostname = "key-lime-pie" 91 domain.CreatePrivate() 92 Eventually(helpers.CF("create-route", domainName, "--hostname", hostname)).Should(Exit(0)) 93 }) 94 95 AfterEach(func() { 96 domain.Delete() 97 }) 98 99 It("warns the user that it has already been created and runs to completion without failing", func() { 100 session := helpers.CF("create-route", domainName, "--hostname", hostname) 101 Eventually(session).Should(Say(`Creating route %s\.%s for org %s / space %s as %s\.\.\.`, hostname, domainName, orgName, spaceName, userName)) 102 Eventually(session.Err).Should(Say(`Route already exists with host '%s' for domain '%s'\.`, hostname, domainName)) 103 Eventually(session).Should(Say(`OK`)) 104 Eventually(session).Should(Exit(0)) 105 }) 106 }) 107 108 When("the route does not already exist", func() { 109 When("the domain is private", func() { 110 var domain helpers.Domain 111 112 BeforeEach(func() { 113 domain = helpers.NewDomain(orgName, domainName) 114 domain.Create() 115 }) 116 117 AfterEach(func() { 118 domain.Delete() 119 }) 120 121 When("no flags are used", func() { 122 It("creates the route", func() { 123 session := helpers.CF("create-route", domainName) 124 Eventually(session).Should(Say(`Creating route %s for org %s / space %s as %s\.\.\.`, domainName, orgName, spaceName, userName)) 125 Eventually(session).Should(Say(`Route %s has been created\.`, domainName)) 126 Eventually(session).Should(Exit(0)) 127 }) 128 }) 129 130 When("passing in a hostname", func() { 131 It("creates the route with the hostname", func() { 132 hostname := "tiramisu" 133 session := helpers.CF("create-route", domainName, "-n", hostname) 134 Eventually(session).Should(Say(`Creating route %s\.%s for org %s / space %s as %s\.\.\.`, hostname, domainName, orgName, spaceName, userName)) 135 Eventually(session).Should(Say(`Route %s\.%s has been created\.`, hostname, domainName)) 136 Eventually(session).Should(Exit(0)) 137 }) 138 }) 139 140 When("passing in hostname and path with a leading '/'", func() { 141 It("creates the route with hostname and path", func() { 142 hostname := "tiramisu" 143 pathString := "/recipes" 144 session := helpers.CF("create-route", domainName, "-n", hostname, "--path", pathString) 145 Eventually(session).Should(Say(`Creating route %s\.%s%s for org %s / space %s as %s\.\.\.`, hostname, domainName, pathString, orgName, spaceName, userName)) 146 Eventually(session).Should(Say(`Route %s\.%s%s has been created\.`, hostname, domainName, pathString)) 147 Eventually(session).Should(Exit(0)) 148 }) 149 }) 150 151 When("passing in hostname and path without a leading '/'", func() { 152 It("creates the route with hostname and path", func() { 153 hostname := "tiramisu" 154 pathString := "more-recipes" 155 session := helpers.CF("create-route", domainName, "-n", hostname, "--path", pathString) 156 Eventually(session).Should(Say(`Creating route %s\.%s\/%s for org %s / space %s as %s\.\.\.`, hostname, domainName, pathString, orgName, spaceName, userName)) 157 Eventually(session).Should(Say(`Route %s\.%s\/%s has been created\.`, hostname, domainName, pathString)) 158 Eventually(session).Should(Exit(0)) 159 }) 160 }) 161 }) 162 163 When("the domain is shared", func() { 164 var domain helpers.Domain 165 166 BeforeEach(func() { 167 domain = helpers.NewDomain("", domainName) 168 domain.CreateShared() 169 }) 170 171 AfterEach(func() { 172 domain.DeleteShared() 173 }) 174 175 When("no flags are used", func() { 176 It("errors indicating that hostname is missing", func() { 177 session := helpers.CF("create-route", domainName) 178 Eventually(session).Should(Say(`Creating route %s for org %s / space %s as %s\.\.\.`, domainName, orgName, spaceName, userName)) 179 Eventually(session.Out).Should(Say(`FAILED`)) 180 Eventually(session.Err).Should(Say(`Missing host. Routes in shared domains must have a host defined.`)) 181 Eventually(session).Should(Exit(1)) 182 }) 183 }) 184 185 When("passing in a hostname", func() { 186 It("creates the route with the hostname", func() { 187 hostname := "tiramisu" 188 session := helpers.CF("create-route", domainName, "-n", hostname) 189 Eventually(session).Should(Say(`Creating route %s\.%s for org %s / space %s as %s\.\.\.`, hostname, domainName, orgName, spaceName, userName)) 190 Eventually(session).Should(Say(`Route %s\.%s has been created\.`, hostname, domainName)) 191 Eventually(session).Should(Exit(0)) 192 }) 193 }) 194 195 When("passing in a hostname and path", func() { 196 It("creates the route with the hostname", func() { 197 hostname := "tiramisu" 198 path := "lion" 199 session := helpers.CF("create-route", domainName, "-n", hostname, "--path", path) 200 Eventually(session).Should(Say(`Creating route %s\.%s\/%s for org %s / space %s as %s\.\.\.`, hostname, domainName, path, orgName, spaceName, userName)) 201 Eventually(session).Should(Say(`Route %s\.%s\/%s has been created\.`, hostname, domainName, path)) 202 Eventually(session).Should(Exit(0)) 203 }) 204 }) 205 }) 206 }) 207 }) 208 209 When("the domain does not exist", func() { 210 It("displays error and exits 1", func() { 211 session := helpers.CF("create-route", "some-domain") 212 Eventually(session).Should(Say(`FAILED`)) 213 Eventually(session.Err).Should(Say(`Domain 'some-domain' not found.`)) 214 Eventually(session).Should(Exit(1)) 215 }) 216 }) 217 218 When("the domain is not specified", func() { 219 It("displays error and exits 1", func() { 220 session := helpers.CF("create-route") 221 Eventually(session.Err).Should(Say("Incorrect Usage: the required argument `DOMAIN` was not provided\n")) 222 Eventually(session.Err).Should(Say("\n")) 223 Eventually(session).Should(Say("NAME:\n")) 224 Eventually(session).Should(Exit(1)) 225 }) 226 }) 227 }) 228 })