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

     1  package experimental
     2  
     3  import (
     4  	"fmt"
     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("v3-unset-env command", func() {
    14  	var (
    15  		orgName    string
    16  		spaceName  string
    17  		appName    string
    18  		envVarName string
    19  	)
    20  
    21  	BeforeEach(func() {
    22  		orgName = helpers.NewOrgName()
    23  		spaceName = helpers.NewSpaceName()
    24  		appName = helpers.PrefixedRandomName("app")
    25  		envVarName = "SOME_ENV_VAR"
    26  	})
    27  
    28  	Describe("help", func() {
    29  		When("--help flag is set", func() {
    30  			It("displays command usage to output", func() {
    31  				session := helpers.CF("v3-unset-env", "--help")
    32  
    33  				Eventually(session).Should(Say("NAME:"))
    34  				Eventually(session).Should(Say("v3-unset-env - Remove an env variable from an app"))
    35  				Eventually(session).Should(Say("USAGE:"))
    36  				Eventually(session).Should(Say("cf v3-unset-env APP_NAME ENV_VAR_NAME"))
    37  				Eventually(session).Should(Say("SEE ALSO:"))
    38  				Eventually(session).Should(Say("v3-apps, v3-env, v3-restart, v3-set-env, v3-stage"))
    39  				Eventually(session).Should(Exit(0))
    40  			})
    41  		})
    42  	})
    43  
    44  	When("the app name is not provided", func() {
    45  		It("tells the user that the app name is required, prints help text, and exits 1", func() {
    46  			session := helpers.CF("v3-unset-env")
    47  
    48  			Eventually(session.Err).Should(Say("Incorrect Usage: the required arguments `APP_NAME` and `ENV_VAR_NAME` were not provided"))
    49  			Eventually(session).Should(Say("NAME:"))
    50  			Eventually(session).Should(Exit(1))
    51  		})
    52  	})
    53  
    54  	When("ENV_VAR_NAME is not provided", func() {
    55  		It("tells the user that ENV_VAR_NAME is required, prints help text, and exits 1", func() {
    56  			session := helpers.CF("v3-unset-env", appName)
    57  
    58  			Eventually(session.Err).Should(Say("Incorrect Usage: the required argument `ENV_VAR_NAME` was not provided"))
    59  			Eventually(session).Should(Say("NAME:"))
    60  			Eventually(session).Should(Exit(1))
    61  		})
    62  	})
    63  
    64  	It("displays the experimental warning", func() {
    65  		session := helpers.CF("v3-unset-env", appName, envVarName)
    66  		Eventually(session.Err).Should(Say("This command is in EXPERIMENTAL stage and may change without notice"))
    67  		Eventually(session).Should(Exit())
    68  	})
    69  
    70  	When("the environment is not setup correctly", func() {
    71  		When("no API endpoint is set", func() {
    72  			BeforeEach(func() {
    73  				helpers.UnsetAPI()
    74  			})
    75  
    76  			It("fails with no API endpoint set message", func() {
    77  				session := helpers.CF("v3-unset-env", appName, envVarName)
    78  				Eventually(session).Should(Say("FAILED"))
    79  				Eventually(session.Err).Should(Say(`No API endpoint set\. Use 'cf login' or 'cf api' to target an endpoint\.`))
    80  				Eventually(session).Should(Exit(1))
    81  			})
    82  		})
    83  
    84  		When("not logged in", func() {
    85  			BeforeEach(func() {
    86  				helpers.LogoutCF()
    87  			})
    88  
    89  			It("fails with not logged in message", func() {
    90  				session := helpers.CF("v3-unset-env", appName, envVarName)
    91  				Eventually(session).Should(Say("FAILED"))
    92  				Eventually(session.Err).Should(Say(`Not logged in\. Use 'cf login' or 'cf login --sso' to log in\.`))
    93  				Eventually(session).Should(Exit(1))
    94  			})
    95  		})
    96  
    97  		When("there is no org set", func() {
    98  			BeforeEach(func() {
    99  				helpers.LogoutCF()
   100  				helpers.LoginCF()
   101  			})
   102  
   103  			It("fails with no org targeted error message", func() {
   104  				session := helpers.CF("v3-unset-env", appName, envVarName)
   105  				Eventually(session).Should(Say("FAILED"))
   106  				Eventually(session.Err).Should(Say(`No org targeted, use 'cf target -o ORG' to target an org\.`))
   107  				Eventually(session).Should(Exit(1))
   108  			})
   109  		})
   110  
   111  		When("there is no space set", func() {
   112  			BeforeEach(func() {
   113  				helpers.LogoutCF()
   114  				helpers.LoginCF()
   115  				helpers.TargetOrg(ReadOnlyOrg)
   116  			})
   117  
   118  			It("fails with no space targeted error message", func() {
   119  				session := helpers.CF("v3-unset-env", appName, envVarName)
   120  				Eventually(session).Should(Say("FAILED"))
   121  				Eventually(session.Err).Should(Say(`No space targeted, use 'cf target -s SPACE' to target a space\.`))
   122  				Eventually(session).Should(Exit(1))
   123  			})
   124  		})
   125  	})
   126  
   127  	When("the environment is set up correctly", func() {
   128  		var userName string
   129  
   130  		BeforeEach(func() {
   131  			helpers.SetupCF(orgName, spaceName)
   132  			userName, _ = helpers.GetCredentials()
   133  		})
   134  
   135  		When("the app does not exist", func() {
   136  			It("displays app not found and exits 1", func() {
   137  				invalidAppName := "invalid-app-name"
   138  				session := helpers.CF("v3-unset-env", invalidAppName, envVarName)
   139  
   140  				Eventually(session).Should(Say(`Removing env variable %s from app %s in org %s / space %s as %s\.\.\.`, envVarName, invalidAppName, orgName, spaceName, userName))
   141  				Eventually(session.Err).Should(Say("App '%s' not found", invalidAppName))
   142  				Eventually(session).Should(Say("FAILED"))
   143  				Eventually(session).Should(Exit(1))
   144  			})
   145  		})
   146  
   147  		When("the app exists", func() {
   148  			BeforeEach(func() {
   149  				helpers.WithHelloWorldApp(func(appDir string) {
   150  					Eventually(helpers.CF("v3-push", appName, "-p", appDir)).Should(Exit(0))
   151  				})
   152  			})
   153  
   154  			When("the environment variable has not been previously set", func() {
   155  				It("returns a warning indicating variable was not set", func() {
   156  					session := helpers.CF("v3-unset-env", appName, envVarName)
   157  
   158  					Eventually(session).Should(Say(`Removing env variable %s from app %s in org %s / space %s as %s\.\.\.`, envVarName, appName, orgName, spaceName, userName))
   159  					Eventually(session).Should(Say("Env variable %s was not set.", envVarName))
   160  					Eventually(session).Should(Say("OK"))
   161  					Eventually(session).Should(Exit(0))
   162  				})
   163  			})
   164  
   165  			When("the environment variable has been previously set", func() {
   166  				BeforeEach(func() {
   167  					Eventually(helpers.CF("v3-set-env", appName, envVarName, "some-value")).Should(Exit(0))
   168  				})
   169  
   170  				It("overrides the value of the existing environment variable", func() {
   171  					session := helpers.CF("v3-unset-env", appName, envVarName)
   172  
   173  					Eventually(session).Should(Say(`Removing env variable %s from app %s in org %s / space %s as %s\.\.\.`, envVarName, appName, orgName, spaceName, userName))
   174  					Eventually(session).Should(Say("OK"))
   175  					Eventually(session).Should(Say(`TIP: Use 'cf v3-stage %s' to ensure your env variable changes take effect\.`, appName))
   176  
   177  					session = helpers.CF("curl", fmt.Sprintf("v3/apps/%s/environment_variables", helpers.AppGUID(appName)))
   178  					Eventually(session).ShouldNot(Say(`"%s"`, envVarName))
   179  					Eventually(session).Should(Exit(0))
   180  				})
   181  			})
   182  		})
   183  	})
   184  })