github.com/coincircle/mattermost-server@v4.8.1-0.20180321182714-9d701c704416+incompatible/app/server_test.go (about)

     1  // Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved.
     2  // See License.txt for license information.
     3  
     4  package app
     5  
     6  import (
     7  	"testing"
     8  
     9  	"github.com/mattermost/mattermost-server/model"
    10  	"github.com/stretchr/testify/require"
    11  )
    12  
    13  func TestStartServerSuccess(t *testing.T) {
    14  	a, err := New()
    15  	require.NoError(t, err)
    16  
    17  	a.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.ListenAddress = ":0" })
    18  	serverErr := a.StartServer()
    19  	a.Shutdown()
    20  	require.NoError(t, serverErr)
    21  }
    22  
    23  func TestStartServerRateLimiterCriticalError(t *testing.T) {
    24  	a, err := New()
    25  	require.NoError(t, err)
    26  
    27  	// Attempt to use Rate Limiter with an invalid config
    28  	a.UpdateConfig(func(cfg *model.Config) {
    29  		*cfg.RateLimitSettings.Enable = true
    30  		*cfg.RateLimitSettings.MaxBurst = -100
    31  	})
    32  
    33  	serverErr := a.StartServer()
    34  	a.Shutdown()
    35  	require.Error(t, serverErr)
    36  }
    37  
    38  func TestStartServerPortUnavailable(t *testing.T) {
    39  	a, err := New()
    40  	require.NoError(t, err)
    41  
    42  	// Attempt to listen on a system-reserved port
    43  	a.UpdateConfig(func(cfg *model.Config) {
    44  		*cfg.ServiceSettings.ListenAddress = ":21"
    45  	})
    46  
    47  	serverErr := a.StartServer()
    48  	a.Shutdown()
    49  	require.Error(t, serverErr)
    50  }