github.com/levb/mattermost-server@v5.3.1+incompatible/web/handlers_test.go (about) 1 // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. 2 // See License.txt for license information. 3 4 package web 5 6 import ( 7 "net/http" 8 "net/http/httptest" 9 "testing" 10 11 "github.com/mattermost/mattermost-server/app" 12 "github.com/mattermost/mattermost-server/model" 13 "github.com/stretchr/testify/assert" 14 ) 15 16 func handlerForTest(c *Context, w http.ResponseWriter, r *http.Request) { 17 c.Err = model.NewAppError("loginWithSaml", "api.user.saml.not_available.app_error", nil, "", http.StatusFound) 18 } 19 20 func TestHandlerServeHTTPErrors(t *testing.T) { 21 a, err := app.New(app.StoreOverride(testStore), app.DisableConfigWatch) 22 defer a.Shutdown() 23 24 web := NewWeb(a, a.Srv.Router) 25 if err != nil { 26 panic(err) 27 } 28 handler := web.NewHandler(handlerForTest) 29 30 var flagtests = []struct { 31 name string 32 url string 33 mobile bool 34 redirect bool 35 }{ 36 {"redirect on destkop non-api endpoint", "/login/sso/saml", false, true}, 37 {"not redirect on destkop api endpoint", "/api/v4/test", false, false}, 38 {"not redirect on mobile non-api endpoint", "/login/sso/saml", true, false}, 39 {"not redirect on mobile api endpoint", "/api/v4/test", true, false}, 40 } 41 42 for _, tt := range flagtests { 43 t.Run(tt.name, func(t *testing.T) { 44 request := httptest.NewRequest("GET", tt.url, nil) 45 if tt.mobile { 46 request.Header.Add("X-Mobile-App", "mattermost") 47 } 48 response := httptest.NewRecorder() 49 handler.ServeHTTP(response, request) 50 51 if tt.redirect { 52 assert.Contains(t, response.Body.String(), "/error?message=") 53 } else { 54 assert.NotContains(t, response.Body.String(), "/error?message=") 55 } 56 }) 57 } 58 }