github.com/mook-as/cf-cli@v7.0.0-beta.28.0.20200120190804-b91c115fae48+incompatible/integration/v6/isolated/set_health_check_command_test.go (about) 1 package isolated 2 3 import ( 4 "code.cloudfoundry.org/cli/integration/helpers" 5 . "github.com/onsi/ginkgo" 6 . "github.com/onsi/ginkgo/extensions/table" 7 . "github.com/onsi/gomega" 8 . "github.com/onsi/gomega/gbytes" 9 . "github.com/onsi/gomega/gexec" 10 ) 11 12 var _ = Describe("set-health-check command", func() { 13 Describe("help", func() { 14 When("--help flag is set", func() { 15 It("Displays command usage to output", func() { 16 session := helpers.CF("set-health-check", "--help") 17 Eventually(session).Should(Say("NAME:")) 18 Eventually(session).Should(Say("set-health-check - Change type of health check performed on an app")) 19 Eventually(session).Should(Say("USAGE:")) 20 Eventually(session).Should(Say("cf set-health-check APP_NAME \\(process \\| port \\| http \\[--endpoint PATH\\]\\)")) 21 Eventually(session).Should(Say("TIP: 'none' has been deprecated but is accepted for 'process'.")) 22 Eventually(session).Should(Say("EXAMPLES:")) 23 Eventually(session).Should(Say(" cf set-health-check worker-app process")) 24 Eventually(session).Should(Say(" cf set-health-check my-web-app http --endpoint /foo")) 25 Eventually(session).Should(Say("OPTIONS:")) 26 Eventually(session).Should(Say(" --endpoint Path on the app \\(Default: /\\)")) 27 Eventually(session).Should(Exit(0)) 28 }) 29 }) 30 }) 31 32 When("the environment is not setup correctly", func() { 33 It("fails with the appropriate errors", func() { 34 helpers.CheckEnvironmentTargetedCorrectly(true, true, ReadOnlyOrg, "set-health-check", "app-name", "port") 35 }) 36 }) 37 38 When("the input is invalid", func() { 39 DescribeTable("fails with incorrect usage method", 40 func(args ...string) { 41 cmd := append([]string{"set-health-check"}, args...) 42 session := helpers.CF(cmd...) 43 Eventually(session.Err).Should(Say("Incorrect Usage:")) 44 Eventually(session).Should(Say("NAME:")) 45 Eventually(session).Should(Exit(1)) 46 }, 47 Entry("when app-name and health-check-type are not passed in"), 48 Entry("when health-check-type is not passed in", "some-app"), 49 Entry("when health-check-type is invalid", "some-app", "wut"), 50 ) 51 }) 52 53 When("the environment is set up correctly", func() { 54 var ( 55 orgName string 56 spaceName string 57 ) 58 59 BeforeEach(func() { 60 orgName = helpers.NewOrgName() 61 spaceName = helpers.NewSpaceName() 62 63 helpers.SetupCF(orgName, spaceName) 64 }) 65 66 AfterEach(func() { 67 helpers.QuickDeleteOrg(orgName) 68 }) 69 70 When("the app does not exist", func() { 71 It("tells the user that the app is not found and exits 1", func() { 72 appName := helpers.PrefixedRandomName("app") 73 session := helpers.CF("set-health-check", appName, "port") 74 75 Eventually(session).Should(Say("FAILED")) 76 Eventually(session.Err).Should(Say("App '%s' not found", appName)) 77 Eventually(session).Should(Exit(1)) 78 }) 79 }) 80 81 When("the app exists", func() { 82 var appName string 83 84 BeforeEach(func() { 85 appName = helpers.PrefixedRandomName("app") 86 helpers.WithHelloWorldApp(func(appDir string) { 87 Eventually(helpers.CF("push", appName, "-p", appDir, "-b", "staticfile_buildpack", "--no-start")).Should(Exit(0)) 88 }) 89 }) 90 91 DescribeTable("Updates health-check-type and exits 0", 92 func(settingType string) { 93 session := helpers.CF("set-health-check", appName, settingType) 94 95 username, _ := helpers.GetCredentials() 96 Eventually(session).Should(Say("Updating health check type for app %s in org %s / space %s as %s", appName, orgName, spaceName, username)) 97 Eventually(session).Should(Say("OK")) 98 Eventually(session).Should(Exit(0)) 99 100 getSession := helpers.CF("get-health-check", appName) 101 Eventually(getSession).Should(Say("health check type:\\s+%s", settingType)) 102 Eventually(getSession).Should(Exit(0)) 103 }, 104 Entry("when setting the health-check-type to 'none'", "none"), 105 Entry("when setting the health-check-type to 'process'", "process"), 106 Entry("when setting the health-check-type to 'port'", "port"), 107 Entry("when setting the health-check-type to 'http'", "http"), 108 ) 109 110 When("no http health check endpoint is given", func() { 111 BeforeEach(func() { 112 Eventually(helpers.CF("set-health-check", appName, "http")).Should(Exit(0)) 113 }) 114 115 It("sets the http health check endpoint to /", func() { 116 session := helpers.CF("get-health-check", appName) 117 Eventually(session).Should(Say("endpoint \\(for http type\\):\\s+/")) 118 Eventually(session).Should(Exit(0)) 119 }) 120 }) 121 122 When("a valid http health check endpoint is given", func() { 123 BeforeEach(func() { 124 Eventually(helpers.CF("set-health-check", appName, "http", "--endpoint", "/foo")).Should(Exit(0)) 125 }) 126 127 It("sets the http health check endpoint to the given endpoint", func() { 128 session := helpers.CF("get-health-check", appName) 129 Eventually(session).Should(Say("endpoint \\(for http type\\):\\s+/foo")) 130 Eventually(session).Should(Exit(0)) 131 }) 132 }) 133 134 When("an invalid http health check endpoint is given", func() { 135 It("outputs an error and exits 1", func() { 136 session := helpers.CF("set-health-check", appName, "http", "--endpoint", "invalid") 137 Eventually(session.Err).Should(Say("The app is invalid: health_check_http_endpoint HTTP health check endpoint is not a valid URI path: invalid")) 138 Eventually(session).Should(Exit(1)) 139 }) 140 }) 141 142 When("an endpoint is given with a non-http health check type", func() { 143 It("outputs an error and exits 1", func() { 144 session := helpers.CF("set-health-check", appName, "port", "--endpoint", "/foo") 145 Eventually(session.Err).Should(Say("Health check type must be 'http' to set a health check HTTP endpoint\\.")) 146 Eventually(session).Should(Exit(1)) 147 }) 148 }) 149 150 When("the app is started", func() { 151 BeforeEach(func() { 152 appName = helpers.PrefixedRandomName("app") 153 helpers.WithHelloWorldApp(func(appDir string) { 154 Eventually(helpers.CF("push", appName, "-p", appDir, "-b", "staticfile_buildpack")).Should(Exit(0)) 155 }) 156 }) 157 158 It("displays tip to restart the app", func() { 159 session := helpers.CF("set-health-check", appName, "port") 160 Eventually(session).Should(Say("TIP: An app restart is required for the change to take effect\\.")) 161 Eventually(session).Should(Exit(0)) 162 }) 163 }) 164 }) 165 }) 166 })