@@ -0,0 +1,105 @@
1+package main
2+
3+import (
4+ "net/http"
5+ "net/http/httptest"
6+ "testing"
7+
8+ "github.com/stretchr/testify/assert"
9+)
10+
11+func TestGCPHealthcheckLiveness(t *testing.T) {
12+ handler := func(w http.ResponseWriter, req *http.Request) {
13+ w.Write([]byte("test"))
14+ }
15+
16+ h := gcpHealthcheck(http.HandlerFunc(handler))
17+ rw := httptest.NewRecorder()
18+ r, _ := http.NewRequest("GET", "/liveness_check", nil)
19+ r.RemoteAddr = "127.0.0.1"
20+ r.Host = "test-server"
21+ h.ServeHTTP(rw, r)
22+
23+ assert.Equal(t, 200, rw.Code)
24+ assert.Equal(t, "OK", rw.Body.String())
25+}
26+
27+func TestGCPHealthcheckReadiness(t *testing.T) {
28+ handler := func(w http.ResponseWriter, req *http.Request) {
29+ w.Write([]byte("test"))
30+ }
31+
32+ h := gcpHealthcheck(http.HandlerFunc(handler))
33+ rw := httptest.NewRecorder()
34+ r, _ := http.NewRequest("GET", "/readiness_check", nil)
35+ r.RemoteAddr = "127.0.0.1"
36+ r.Host = "test-server"
37+ h.ServeHTTP(rw, r)
38+
39+ assert.Equal(t, 200, rw.Code)
40+ assert.Equal(t, "OK", rw.Body.String())
41+}
42+
43+func TestGCPHealthcheckNotHealthcheck(t *testing.T) {
44+ handler := func(w http.ResponseWriter, req *http.Request) {
45+ w.Write([]byte("test"))
46+ }
47+
48+ h := gcpHealthcheck(http.HandlerFunc(handler))
49+ rw := httptest.NewRecorder()
50+ r, _ := http.NewRequest("GET", "/not_any_check", nil)
51+ r.RemoteAddr = "127.0.0.1"
52+ r.Host = "test-server"
53+ h.ServeHTTP(rw, r)
54+
55+ assert.Equal(t, "test", rw.Body.String())
56+}
57+
58+func TestGCPHealthcheckIngress(t *testing.T) {
59+ handler := func(w http.ResponseWriter, req *http.Request) {
60+ w.Write([]byte("test"))
61+ }
62+
63+ h := gcpHealthcheck(http.HandlerFunc(handler))
64+ rw := httptest.NewRecorder()
65+ r, _ := http.NewRequest("GET", "/", nil)
66+ r.RemoteAddr = "127.0.0.1"
67+ r.Host = "test-server"
68+ r.Header.Set(userAgentHeader, googleHealthCheckUserAgent)
69+ h.ServeHTTP(rw, r)
70+
71+ assert.Equal(t, 200, rw.Code)
72+ assert.Equal(t, "", rw.Body.String())
73+}
74+
75+func TestGCPHealthcheckNotIngress(t *testing.T) {
76+ handler := func(w http.ResponseWriter, req *http.Request) {
77+ w.Write([]byte("test"))
78+ }
79+
80+ h := gcpHealthcheck(http.HandlerFunc(handler))
81+ rw := httptest.NewRecorder()
82+ r, _ := http.NewRequest("GET", "/foo", nil)
83+ r.RemoteAddr = "127.0.0.1"
84+ r.Host = "test-server"
85+ r.Header.Set(userAgentHeader, googleHealthCheckUserAgent)
86+ h.ServeHTTP(rw, r)
87+
88+ assert.Equal(t, "test", rw.Body.String())
89+}
90+
91+func TestGCPHealthcheckNotIngressPut(t *testing.T) {
92+ handler := func(w http.ResponseWriter, req *http.Request) {
93+ w.Write([]byte("test"))
94+ }
95+
96+ h := gcpHealthcheck(http.HandlerFunc(handler))
97+ rw := httptest.NewRecorder()
98+ r, _ := http.NewRequest("PUT", "/", nil)
99+ r.RemoteAddr = "127.0.0.1"
100+ r.Host = "test-server"
101+ r.Header.Set(userAgentHeader, googleHealthCheckUserAgent)
102+ h.ServeHTTP(rw, r)
103+
104+ assert.Equal(t, "test", rw.Body.String())
105+}