github.com/mook-as/cf-cli@v7.0.0-beta.28.0.20200120190804-b91c115fae48+incompatible/integration/v6/experimental/v3_create_app_command_test.go (about)

     1  package experimental
     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("v3-create-app command", func() {
    12  	var (
    13  		orgName   string
    14  		spaceName string
    15  		appName   string
    16  	)
    17  
    18  	BeforeEach(func() {
    19  		orgName = helpers.NewOrgName()
    20  		spaceName = helpers.NewSpaceName()
    21  		appName = helpers.PrefixedRandomName("app")
    22  	})
    23  
    24  	Describe("help", func() {
    25  		When("--help flag is set", func() {
    26  			It("Displays command usage to output", func() {
    27  				session := helpers.CF("v3-create-app", "--help")
    28  				Eventually(session).Should(Say("NAME:"))
    29  				Eventually(session).Should(Say("v3-create-app - Create a V3 App"))
    30  				Eventually(session).Should(Say("USAGE:"))
    31  				Eventually(session).Should(Say(`cf v3-create-app APP_NAME \[--app-type \(buildpack | docker\)\]`))
    32  				Eventually(session).Should(Say("OPTIONS:"))
    33  				Eventually(session).Should(Say(`--app-type\s+App lifecycle type to stage and run the app \(Default: buildpack\)`))
    34  				Eventually(session).Should(Exit(0))
    35  			})
    36  		})
    37  	})
    38  
    39  	When("the app name is not provided", func() {
    40  		It("tells the user that the app name is required, prints help text, and exits 1", func() {
    41  			session := helpers.CF("v3-create-app")
    42  
    43  			Eventually(session.Err).Should(Say("Incorrect Usage: the required argument `APP_NAME` was not provided"))
    44  			Eventually(session).Should(Say("NAME:"))
    45  			Eventually(session).Should(Exit(1))
    46  		})
    47  	})
    48  
    49  	It("displays the experimental warning", func() {
    50  		session := helpers.CF("v3-create-app", appName)
    51  		Eventually(session.Err).Should(Say("This command is in EXPERIMENTAL stage and may change without notice"))
    52  		Eventually(session).Should(Exit())
    53  	})
    54  
    55  	When("app type is not supported", func() {
    56  		It("tells the user that the app type is incorrect, prints help text, and exits 1", func() {
    57  			session := helpers.CF("v3-create-app", appName, "--app-type", "unknown-app-type")
    58  
    59  			Eventually(session.Err).Should(Say("Incorrect Usage: Invalid value `unknown-app-type' for option `--app-type'. Allowed values are: buildpack or docker"))
    60  			Eventually(session).Should(Say("NAME:"))
    61  			Eventually(session).Should(Exit(1))
    62  		})
    63  	})
    64  
    65  	When("the environment is not setup correctly", func() {
    66  		It("fails with the appropriate errors", func() {
    67  			helpers.CheckEnvironmentTargetedCorrectly(true, true, ReadOnlyOrg, "v3-create-app", appName)
    68  		})
    69  	})
    70  
    71  	When("the environment is set up correctly", func() {
    72  		BeforeEach(func() {
    73  			helpers.SetupCF(orgName, spaceName)
    74  		})
    75  
    76  		AfterEach(func() {
    77  			helpers.QuickDeleteOrg(orgName)
    78  		})
    79  
    80  		When("the app does not exist", func() {
    81  			It("creates the app with default app type buildpack", func() {
    82  				session := helpers.CF("v3-create-app", appName)
    83  				userName, _ := helpers.GetCredentials()
    84  				Eventually(session).Should(Say("Creating V3 app %s in org %s / space %s as %s...", appName, orgName, spaceName, userName))
    85  				Eventually(session).Should(Say("OK"))
    86  				Eventually(session).Should(Exit(0))
    87  
    88  				session = helpers.CF("app", appName)
    89  				Eventually(session).Should(Say("buildpacks:"))
    90  				Eventually(session).Should(Exit(0))
    91  			})
    92  
    93  			When("app type is specified", func() {
    94  				It("creates the app with the specified app type", func() {
    95  					session := helpers.CF("v3-create-app", appName, "--app-type", "docker")
    96  					userName, _ := helpers.GetCredentials()
    97  					Eventually(session).Should(Say("Creating V3 app %s in org %s / space %s as %s...", appName, orgName, spaceName, userName))
    98  					Eventually(session).Should(Say("OK"))
    99  					Eventually(session).Should(Exit(0))
   100  
   101  					session = helpers.CF("app", appName)
   102  					Eventually(session).Should(Say("docker image:"))
   103  					Eventually(session).Should(Exit(0))
   104  				})
   105  			})
   106  		})
   107  
   108  		When("the app already exists", func() {
   109  			BeforeEach(func() {
   110  				Eventually(helpers.CF("v3-create-app", appName)).Should(Exit(0))
   111  			})
   112  
   113  			It("fails to create the app", func() {
   114  				session := helpers.CF("v3-create-app", appName)
   115  				userName, _ := helpers.GetCredentials()
   116  				Eventually(session).Should(Say("Creating V3 app %s in org %s / space %s as %s...", appName, orgName, spaceName, userName))
   117  				Eventually(session.Err).Should(Say("App %s already exists", appName))
   118  				Eventually(session).Should(Say("OK"))
   119  				Eventually(session).Should(Exit(0))
   120  			})
   121  		})
   122  	})
   123  })