Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'workhorse/internal/badgateway/roundtripper_test.go')
-rw-r--r--workhorse/internal/badgateway/roundtripper_test.go56
1 files changed, 56 insertions, 0 deletions
diff --git a/workhorse/internal/badgateway/roundtripper_test.go b/workhorse/internal/badgateway/roundtripper_test.go
new file mode 100644
index 00000000000..fc7132f9bd7
--- /dev/null
+++ b/workhorse/internal/badgateway/roundtripper_test.go
@@ -0,0 +1,56 @@
+package badgateway
+
+import (
+ "errors"
+ "io/ioutil"
+ "net/http"
+ "testing"
+
+ "github.com/stretchr/testify/require"
+)
+
+type roundtrip502 struct{}
+
+func (roundtrip502) RoundTrip(*http.Request) (*http.Response, error) {
+ return nil, errors.New("something went wrong")
+}
+
+func TestErrorPage502(t *testing.T) {
+ tests := []struct {
+ name string
+ devMode bool
+ contentType string
+ responseSnippet string
+ }{
+ {
+ name: "production mode",
+ contentType: "text/plain",
+ responseSnippet: "GitLab is not responding",
+ },
+ {
+ name: "development mode",
+ devMode: true,
+ contentType: "text/html",
+ responseSnippet: "This page will automatically reload",
+ },
+ }
+
+ for _, tc := range tests {
+ t.Run(tc.name, func(t *testing.T) {
+ req, err := http.NewRequest("GET", "/", nil)
+ require.NoError(t, err, "build request")
+
+ rt := NewRoundTripper(tc.devMode, roundtrip502{})
+ response, err := rt.RoundTrip(req)
+ require.NoError(t, err, "perform roundtrip")
+ defer response.Body.Close()
+
+ body, err := ioutil.ReadAll(response.Body)
+ require.NoError(t, err)
+
+ require.Equal(t, tc.contentType, response.Header.Get("content-type"), "content type")
+ require.Equal(t, 502, response.StatusCode, "response status")
+ require.Contains(t, string(body), tc.responseSnippet)
+ })
+ }
+}