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  }