gitlab-org--gitlab-foss/workhorse/internal/badgateway/roundtripper_test.go

57 lines
1.3 KiB
Go

package badgateway
import (
"errors"
"io"
"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 := io.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)
})
}
}