github.com/loggregator/cli@v6.33.1-0.20180224010324-82334f081791+incompatible/integration/push/name_only_test.go (about)

     1  package push
     2  
     3  import (
     4  	"fmt"
     5  	"regexp"
     6  	"strings"
     7  
     8  	"code.cloudfoundry.org/cli/integration/helpers"
     9  
    10  	. "github.com/onsi/ginkgo"
    11  	. "github.com/onsi/gomega"
    12  	. "github.com/onsi/gomega/gbytes"
    13  	. "github.com/onsi/gomega/gexec"
    14  )
    15  
    16  var _ = Describe("push with only an app name", func() {
    17  	var (
    18  		appName  string
    19  		username string
    20  	)
    21  
    22  	BeforeEach(func() {
    23  		appName = helpers.NewAppName()
    24  		username, _ = helpers.GetCredentials()
    25  	})
    26  
    27  	Describe("app existence", func() {
    28  		Context("when the app does not exist", func() {
    29  			It("creates the app", func() {
    30  				helpers.WithHelloWorldApp(func(dir string) {
    31  					session := helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir}, PushCommandName, appName)
    32  					Eventually(session).Should(Say("Pushing app %s to org %s / space %s as %s\\.\\.\\.", appName, organization, space, username))
    33  					Eventually(session).Should(Say("Getting app info\\.\\.\\."))
    34  					Eventually(session).Should(Say("Creating app with these attributes\\.\\.\\."))
    35  					Eventually(session).Should(Say("\\+\\s+name:\\s+%s", appName))
    36  					Eventually(session).Should(Say("\\s+routes:"))
    37  					Eventually(session).Should(Say("(?i)\\+\\s+%s.%s", appName, defaultSharedDomain()))
    38  					Eventually(session).Should(Say("Mapping routes\\.\\.\\."))
    39  					Eventually(session).Should(Say("Comparing local files to remote cache\\.\\.\\."))
    40  					Eventually(session).Should(Say("Packaging files to upload\\.\\.\\."))
    41  					Eventually(session).Should(Say("Uploading files\\.\\.\\."))
    42  					Eventually(session).Should(Say("100.00%"))
    43  					Eventually(session).Should(Say("Waiting for API to complete processing files\\.\\.\\."))
    44  					helpers.ConfirmStagingLogs(session)
    45  					Eventually(session).Should(Say("Waiting for app to start\\.\\.\\."))
    46  					Eventually(session).Should(Say("requested state:\\s+started"))
    47  					Eventually(session).Should(Exit(0))
    48  				})
    49  
    50  				session := helpers.CF("app", appName)
    51  				Eventually(session).Should(Say("name:\\s+%s", appName))
    52  				Eventually(session).Should(Exit(0))
    53  			})
    54  
    55  			Context("when the app has a non-standard name", func() {
    56  				BeforeEach(func() {
    57  					appName = helpers.PrefixedRandomName("App Name One$")
    58  				})
    59  
    60  				It("sanitizes the name and creates the app", func() {
    61  					sanitizedName := fmt.Sprintf("app-name-one-%s", strings.SplitN(appName, "-", 2)[1])
    62  
    63  					helpers.WithHelloWorldApp(func(dir string) {
    64  						session := helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir}, PushCommandName, appName)
    65  						Eventually(session).Should(Say("Pushing app %s to org %s / space %s as %s\\.\\.\\.", regexp.QuoteMeta(appName), organization, space, username))
    66  						Eventually(session).Should(Say("Getting app info\\.\\.\\."))
    67  						Eventually(session).Should(Say("Creating app with these attributes\\.\\.\\."))
    68  						Eventually(session).Should(Say("\\+\\s+name:\\s+%s", regexp.QuoteMeta(appName)))
    69  						Eventually(session).Should(Say("\\s+routes:"))
    70  						Eventually(session).Should(Say("(?i)\\+\\s+%s.%s", regexp.QuoteMeta(sanitizedName), defaultSharedDomain()))
    71  						Eventually(session).Should(Say("Mapping routes\\.\\.\\."))
    72  						Eventually(session).Should(Say("Comparing local files to remote cache\\.\\.\\."))
    73  						Eventually(session).Should(Say("Packaging files to upload\\.\\.\\."))
    74  						Eventually(session).Should(Say("Uploading files\\.\\.\\."))
    75  						Eventually(session).Should(Say("100.00%"))
    76  						Eventually(session).Should(Say("Waiting for API to complete processing files\\.\\.\\."))
    77  						helpers.ConfirmStagingLogs(session)
    78  						Eventually(session).Should(Say("Waiting for app to start\\.\\.\\."))
    79  						Eventually(session).Should(Say("requested state:\\s+started"))
    80  						Eventually(session).Should(Exit(0))
    81  					})
    82  
    83  					session := helpers.CF("app", appName)
    84  					Eventually(session).Should(Say("name:\\s+%s", regexp.QuoteMeta(appName)))
    85  					Eventually(session).Should(Exit(0))
    86  				})
    87  			})
    88  		})
    89  
    90  		Context("when the app exists", func() {
    91  			BeforeEach(func() {
    92  				helpers.WithHelloWorldApp(func(dir string) {
    93  					Eventually(helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir}, "push", appName)).Should(Exit(0))
    94  				})
    95  			})
    96  
    97  			It("updates the app", func() {
    98  				helpers.WithHelloWorldApp(func(dir string) {
    99  					session := helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir}, PushCommandName, appName)
   100  					Eventually(session).Should(Say("Getting app info\\.\\.\\."))
   101  					Eventually(session).Should(Say("Updating app with these attributes\\.\\.\\."))
   102  					Eventually(session).Should(Say("(?m)^\\s+name:\\s+%s$", appName))
   103  					Eventually(session).Should(Say("\\s+routes:"))
   104  					Eventually(session).Should(Say("(?mi)^\\s+%s.%s$", strings.ToLower(appName), defaultSharedDomain()))
   105  					Eventually(session).Should(Say("Mapping routes\\.\\.\\."))
   106  					Eventually(session).Should(Say("Uploading files\\.\\.\\."))
   107  					Eventually(session).Should(Say("100.00%"))
   108  					Eventually(session).Should(Say("Waiting for API to complete processing files\\.\\.\\."))
   109  					Eventually(session).Should(Say("Stopping app\\.\\.\\."))
   110  					helpers.ConfirmStagingLogs(session)
   111  					Eventually(session).Should(Say("Waiting for app to start\\.\\.\\."))
   112  					Eventually(session).Should(Say("requested state:\\s+started"))
   113  					Eventually(session).Should(Exit(0))
   114  				})
   115  
   116  				session := helpers.CF("app", appName)
   117  				Eventually(session).Should(Say("name:\\s+%s", appName))
   118  				Eventually(session).Should(Exit(0))
   119  			})
   120  		})
   121  	})
   122  })