github.com/loafoe/cli@v7.1.0+incompatible/integration/v6/push/http_random_route_test.go (about)

     1  package push
     2  
     3  import (
     4  	"path"
     5  
     6  	"code.cloudfoundry.org/cli/integration/helpers"
     7  	. "github.com/onsi/ginkgo"
     8  	. "github.com/onsi/gomega"
     9  	. "github.com/onsi/gomega/gbytes"
    10  	. "github.com/onsi/gomega/gexec"
    11  )
    12  
    13  var _ = Describe("HTTP random route", func() {
    14  
    15  	const randomRouteRegexp = `\+\s+%s-[\w]+-[\w]+-[a-z]{2}\.%s`
    16  
    17  	var (
    18  		appName string
    19  	)
    20  
    21  	BeforeEach(func() {
    22  		appName = "short-app-name" // used on purpose to fit route length requirement
    23  	})
    24  
    25  	When("passed the --random-route flag", func() {
    26  		When("the app does not already exist", func() {
    27  			It("generates a random route for the app", func() {
    28  				helpers.WithHelloWorldApp(func(dir string) {
    29  					session := helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir}, PushCommandName, appName, "--random-route", "--no-start")
    30  					Eventually(session).Should(Say("routes:"))
    31  					Eventually(session).Should(Say(randomRouteRegexp, appName, helpers.DefaultSharedDomain()))
    32  					Eventually(session).Should(Exit(0))
    33  				})
    34  
    35  				appSession := helpers.CF("app", appName)
    36  				Eventually(appSession).Should(Say(`name:\s+%s`, appName))
    37  				Eventually(appSession).Should(Say(`routes:\s+%s-[\w]+-[\w]+-[a-z]{2}\.%s`, appName, helpers.DefaultSharedDomain()))
    38  				Eventually(appSession).Should(Exit(0))
    39  			})
    40  		})
    41  
    42  		When("the app exists and has an existing route", func() {
    43  			It("does not generate a random route for the app", func() {
    44  				helpers.WithHelloWorldApp(func(dir string) {
    45  					session := helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir}, PushCommandName, appName, "--random-route", "--no-start")
    46  					Eventually(session).ShouldNot(Say(`\+\s+%s-[\w]+`, appName))
    47  					Eventually(session).Should(Exit(0))
    48  				})
    49  			})
    50  
    51  			When("also passed an http domain", func() {
    52  				var domain helpers.Domain
    53  
    54  				BeforeEach(func() {
    55  					domain = helpers.NewDomain(organization, helpers.NewDomainName("some-domain"))
    56  					domain.Create()
    57  				})
    58  
    59  				AfterEach(func() {
    60  					domain.Delete()
    61  				})
    62  
    63  				It("does not create a new route with the provided domain name", func() {
    64  					helpers.WithHelloWorldApp(func(dir string) {
    65  						session := helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir}, PushCommandName, appName, "--random-route", "-d", domain.Name, "--no-start")
    66  						Eventually(session).ShouldNot(Say(randomRouteRegexp, appName, domain.Name))
    67  						Eventually(session).Should(Exit(0))
    68  					})
    69  				})
    70  			})
    71  		})
    72  
    73  		When("also passed an http domain", func() {
    74  			var domain helpers.Domain
    75  
    76  			BeforeEach(func() {
    77  				domain = helpers.NewDomain(organization, helpers.NewDomainName("some-domain"))
    78  				domain.Create()
    79  			})
    80  
    81  			AfterEach(func() {
    82  				domain.Delete()
    83  			})
    84  
    85  			It("creates a new route with the provided domain", func() {
    86  				helpers.WithHelloWorldApp(func(dir string) {
    87  					session := helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir}, PushCommandName, appName, "--random-route", "-d", domain.Name, "--no-start")
    88  					Eventually(session).Should(Say(randomRouteRegexp, appName, domain.Name))
    89  					Eventually(session).Should(Exit(0))
    90  				})
    91  			})
    92  		})
    93  	})
    94  
    95  	When("passed the random-route manifest property", func() {
    96  		var manifest map[string]interface{}
    97  
    98  		BeforeEach(func() {
    99  			manifest = map[string]interface{}{
   100  				"applications": []map[string]interface{}{
   101  					{
   102  						"name":         appName,
   103  						"random-route": true,
   104  					},
   105  				},
   106  			}
   107  
   108  			helpers.WithHelloWorldApp(func(dir string) {
   109  				helpers.WriteManifest(path.Join(dir, "manifest.yml"), manifest)
   110  				session := helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir}, PushCommandName, appName, "--no-start")
   111  				Eventually(session).Should(Say("routes:"))
   112  				Eventually(session).Should(Say(randomRouteRegexp, appName, helpers.DefaultSharedDomain()))
   113  				Eventually(session).Should(Exit(0))
   114  			})
   115  		})
   116  
   117  		It("generates a random route for the app", func() {
   118  			session := helpers.CF("app", appName)
   119  			Eventually(session).Should(Say(`name:\s+%s`, appName))
   120  			Eventually(session).Should(Say(`routes:\s+%s-[\w]+-[\w]+-[a-z]{2}\.%s`, appName, helpers.DefaultSharedDomain()))
   121  			Eventually(session).Should(Exit(0))
   122  		})
   123  
   124  		When("the app has an existing route", func() {
   125  			It("does not generate a random route for the app", func() {
   126  				helpers.WithHelloWorldApp(func(dir string) {
   127  					helpers.WriteManifest(path.Join(dir, "manifest.yml"), manifest)
   128  
   129  					session := helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir}, PushCommandName, appName, "--no-start")
   130  					Eventually(session).ShouldNot(Say(`\+\s+%s-[\w]+`, appName))
   131  					Eventually(session).Should(Exit(0))
   132  				})
   133  			})
   134  		})
   135  	})
   136  })