github.com/loafoe/cli@v7.1.0+incompatible/integration/v6/push/health_check_test.go (about) 1 package push 2 3 import ( 4 "fmt" 5 "path/filepath" 6 7 "code.cloudfoundry.org/cli/integration/helpers" 8 . "github.com/onsi/ginkgo" 9 . "github.com/onsi/gomega" 10 . "github.com/onsi/gomega/gbytes" 11 . "github.com/onsi/gomega/gexec" 12 ) 13 14 var _ = Describe("push/update an app using health check type", func() { 15 var ( 16 appName string 17 username string 18 ) 19 20 BeforeEach(func() { 21 appName = helpers.NewAppName() 22 username, _ = helpers.GetCredentials() 23 }) 24 25 Context("updating the application", func() { 26 BeforeEach(func() { 27 helpers.WithHelloWorldApp(func(dir string) { 28 session := helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir}, PushCommandName, appName, "-u", "http", "--no-start") 29 Eventually(session).Should(Say(`Pushing app %s to org %s / space %s as %s\.\.\.`, appName, organization, space, username)) 30 Eventually(session).Should(Exit(0)) 31 32 Eventually(helpers.CF("set-health-check", appName, "http", "--endpoint", "/some-endpoint")).Should(Exit(0)) 33 }) 34 }) 35 36 When("setting the app to http health check type", func() { 37 It("should keep the health check http endpoint", func() { 38 helpers.WithHelloWorldApp(func(dir string) { 39 session := helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir}, PushCommandName, appName, "-u", "http", "--no-start") 40 Eventually(session).Should(Say(`Pushing app %s to org %s / space %s as %s\.\.\.`, appName, organization, space, username)) 41 Eventually(session).ShouldNot(Say(`\-\s+health check http endpoint:\s+/some-endpoint`)) 42 Eventually(session).ShouldNot(Say(`\+\s+health check http endpoint:\s+/`)) 43 Eventually(session).Should(Exit(0)) 44 }) 45 46 session := helpers.CF("curl", fmt.Sprintf("/v2/apps/%s", helpers.AppGUID(appName))) 47 Eventually(session).Should(Say(`"health_check_type":\s+"http"`)) 48 Eventually(session).Should(Say(`"health_check_http_endpoint":\s+"/"`)) 49 }) 50 }) 51 52 When("setting the app to port health check type", func() { 53 It("should reset the health check http endpoint", func() { 54 helpers.WithHelloWorldApp(func(dir string) { 55 session := helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir}, PushCommandName, appName, "-u", "port", "--no-start") 56 Eventually(session).Should(Say(`Pushing app %s to org %s / space %s as %s\.\.\.`, appName, organization, space, username)) 57 Eventually(session).Should(Say(`\-\s+health check http endpoint:\s+/some-endpoint`)) 58 Eventually(session).Should(Say(`\-\s+health check type:\s+http`)) 59 Eventually(session).Should(Say(`\+\s+health check type:\s+port`)) 60 Eventually(session).Should(Exit(0)) 61 }) 62 63 session := helpers.CF("curl", fmt.Sprintf("/v2/apps/%s", helpers.AppGUID(appName))) 64 Eventually(session).Should(Say(`"health_check_type":\s+"port"`)) 65 Eventually(session).Should(Say(`"health_check_http_endpoint":\s+""`)) 66 }) 67 }) 68 69 When("setting the app to process health check type", func() { 70 It("should reset the health check http endpoint", func() { 71 helpers.WithHelloWorldApp(func(dir string) { 72 session := helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir}, PushCommandName, appName, "-u", "process", "--no-start") 73 Eventually(session).Should(Say(`Pushing app %s to org %s / space %s as %s\.\.\.`, appName, organization, space, username)) 74 Eventually(session).Should(Say(`\-\s+health check http endpoint:\s+/some-endpoint`)) 75 Eventually(session).Should(Say(`\-\s+health check type:\s+http`)) 76 Eventually(session).Should(Say(`\+\s+health check type:\s+process`)) 77 Eventually(session).Should(Exit(0)) 78 }) 79 80 session := helpers.CF("curl", fmt.Sprintf("/v2/apps/%s", helpers.AppGUID(appName))) 81 Eventually(session).Should(Say(`"health_check_type":\s+"process"`)) 82 Eventually(session).Should(Say(`"health_check_http_endpoint":\s+""`)) 83 }) 84 }) 85 }) 86 87 Context("creating the application", func() { 88 When("setting a http health check type", func() { 89 It("should set the health check type to http and use the default health check endpoint", func() { 90 helpers.WithHelloWorldApp(func(dir string) { 91 session := helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir}, PushCommandName, appName, "-u", "http", "--no-start") 92 93 Eventually(session).Should(Say(`Pushing app %s to org %s / space %s as %s\.\.\.`, appName, organization, space, username)) 94 Eventually(session).Should(Say(`\+\s+health check http endpoint:\s+/`)) 95 Eventually(session).Should(Say(`\+\s+health check type:\s+http`)) 96 Eventually(session).Should(Exit(0)) 97 }) 98 99 session := helpers.CF("curl", fmt.Sprintf("/v2/apps/%s", helpers.AppGUID(appName))) 100 Eventually(session).Should(Say(`"health_check_type":\s+"http"`)) 101 Eventually(session).Should(Say(`"health_check_http_endpoint":\s+"/"`)) 102 }) 103 104 When("setting a health check endpoint", func() { 105 It("should use the provided endpoint", func() { 106 helpers.WithHelloWorldApp(func(dir string) { 107 helpers.WriteManifest(filepath.Join(dir, "manifest.yml"), map[string]interface{}{ 108 "applications": []map[string]interface{}{ 109 { 110 "name": appName, 111 "health-check-type": "http", 112 "health-check-http-endpoint": "/some-endpoint", 113 }, 114 }, 115 }) 116 117 session := helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir}, PushCommandName, "--no-start") 118 Eventually(session).Should(Say(`Pushing from manifest to org %s / space %s as %s\.\.\.`, organization, space, username)) 119 Eventually(session).Should(Say(`\s+health check http endpoint:\s+/some-endpoint`)) 120 Eventually(session).Should(Say(`\s+health check type:\s+http`)) 121 Eventually(session).Should(Exit(0)) 122 }) 123 124 session := helpers.CF("curl", fmt.Sprintf("/v2/apps/%s", helpers.AppGUID(appName))) 125 Eventually(session).Should(Say(`"health_check_type":\s+"http"`)) 126 Eventually(session).Should(Say(`"health_check_http_endpoint":\s+"/some-endpoint"`)) 127 }) 128 }) 129 }) 130 131 When("setting a port health check type", func() { 132 It("it should set the health check type to port", func() { 133 helpers.WithHelloWorldApp(func(dir string) { 134 session := helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir}, PushCommandName, appName, "-u", "port", "--no-start") 135 136 Eventually(session).Should(Say(`Pushing app %s to org %s / space %s as %s\.\.\.`, appName, organization, space, username)) 137 Eventually(session).Should(Say(`\+\s+health check type:\s+port`)) 138 Eventually(session).Should(Exit(0)) 139 }) 140 141 session := helpers.CF("curl", fmt.Sprintf("/v2/apps/%s", helpers.AppGUID(appName))) 142 Eventually(session).Should(Say(`"health_check_type":\s+"port"`)) 143 Eventually(session).Should(Say(`"health_check_http_endpoint":\s+""`)) 144 }) 145 146 When("setting an health check endpoint", func() { 147 It("should return an error", func() { 148 helpers.WithHelloWorldApp(func(dir string) { 149 helpers.WriteManifest(filepath.Join(dir, "manifest.yml"), map[string]interface{}{ 150 "applications": []map[string]interface{}{ 151 { 152 "name": appName, 153 "health-check-type": "port", 154 "health-check-http-endpoint": "/some-endpoint", 155 }, 156 }, 157 }) 158 159 session := helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir}, PushCommandName, "--no-start") 160 Eventually(session).Should(Say(`Pushing from manifest to org %s / space %s as %s\.\.\.`, organization, space, username)) 161 Eventually(session.Err).Should(Say("Health check type must be 'http' to set a health check HTTP endpoint.")) 162 163 Eventually(session).Should(Exit(1)) 164 }) 165 }) 166 }) 167 }) 168 169 When("setting a process health check type", func() { 170 It("it should set the health check type to process", func() { 171 helpers.WithHelloWorldApp(func(dir string) { 172 session := helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir}, PushCommandName, appName, "-u", "process", "--no-start") 173 174 Eventually(session).Should(Say(`Pushing app %s to org %s / space %s as %s\.\.\.`, appName, organization, space, username)) 175 Eventually(session).Should(Say(`\+\s+health check type:\s+process`)) 176 Eventually(session).Should(Exit(0)) 177 }) 178 179 session := helpers.CF("curl", fmt.Sprintf("/v2/apps/%s", helpers.AppGUID(appName))) 180 Eventually(session).Should(Say(`"health_check_type":\s+"process"`)) 181 Eventually(session).Should(Say(`"health_check_http_endpoint":\s+""`)) 182 }) 183 184 When("setting a health check endpoint", func() { 185 It("should return an error", func() { 186 helpers.WithHelloWorldApp(func(dir string) { 187 helpers.WriteManifest(filepath.Join(dir, "manifest.yml"), map[string]interface{}{ 188 "applications": []map[string]interface{}{ 189 { 190 "name": appName, 191 "health-check-type": "process", 192 "health-check-http-endpoint": "/some-endpoint", 193 }, 194 }, 195 }) 196 197 session := helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir}, PushCommandName, "--no-start") 198 Eventually(session).Should(Say(`Pushing from manifest to org %s / space %s as %s\.\.\.`, organization, space, username)) 199 Eventually(session.Err).Should(Say("Health check type must be 'http' to set a health check HTTP endpoint.")) 200 201 Eventually(session).Should(Exit(1)) 202 }) 203 }) 204 }) 205 }) 206 }) 207 })