MM-46874: Change to 400 for failed to upgrade ws (#21492)

https://mattermost.atlassian.net/browse/MM-46874

```release-note
NONE
```
Этот коммит содержится в:
Agniva De Sarker
2022-10-26 13:15:16 +05:30
коммит произвёл GitHub
родитель 0fc1655cfc
Коммит 0323e40d3c
3 изменённых файлов: 22 добавлений и 1 удалений

Просмотреть файл

@@ -71,6 +71,7 @@ type TestHelper struct {
IncludeCacheLayer bool IncludeCacheLayer bool
LogBuffer *mlog.Buffer
TestLogger *mlog.Logger TestLogger *mlog.Logger
} }
@@ -119,11 +120,16 @@ func setupTestHelper(dbStore store.Store, searchEngine *searchengine.Broker, ent
options = append(options, app.StoreOverride(dbStore)) options = append(options, app.StoreOverride(dbStore))
} }
buffer := &mlog.Buffer{}
testLogger, _ := mlog.NewLogger() testLogger, _ := mlog.NewLogger()
logCfg, _ := config.MloggerConfigFromLoggerConfig(&memoryConfig.LogSettings, nil, config.GetLogFileLocation) logCfg, _ := config.MloggerConfigFromLoggerConfig(&memoryConfig.LogSettings, nil, config.GetLogFileLocation)
if errCfg := testLogger.ConfigureTargets(logCfg, nil); errCfg != nil { if errCfg := testLogger.ConfigureTargets(logCfg, nil); errCfg != nil {
panic("failed to configure test logger: " + errCfg.Error()) panic("failed to configure test logger: " + errCfg.Error())
} }
if errW := mlog.AddWriterTarget(testLogger, buffer, true, mlog.StdAll...); errW != nil {
panic("failed to add writer target to test logger: " + errW.Error())
}
// lock logger config so server init cannot override it during testing. // lock logger config so server init cannot override it during testing.
testLogger.LockConfiguration() testLogger.LockConfiguration()
options = append(options, app.SetLogger(testLogger)) options = append(options, app.SetLogger(testLogger))
@@ -140,6 +146,7 @@ func setupTestHelper(dbStore store.Store, searchEngine *searchengine.Broker, ent
IncludeCacheLayer: includeCache, IncludeCacheLayer: includeCache,
Context: request.EmptyContext(testLogger), Context: request.EmptyContext(testLogger),
TestLogger: testLogger, TestLogger: testLogger,
LogBuffer: buffer,
} }
th.Context.SetLogger(testLogger) th.Context.SetLogger(testLogger)

Просмотреть файл

@@ -32,7 +32,7 @@ func connectWebSocket(c *Context, w http.ResponseWriter, r *http.Request) {
ws, err := upgrader.Upgrade(w, r, nil) ws, err := upgrader.Upgrade(w, r, nil)
if err != nil { if err != nil {
c.Err = model.NewAppError("connect", "api.web_socket.connect.upgrade.app_error", nil, err.Error(), http.StatusInternalServerError) c.Err = model.NewAppError("connect", "api.web_socket.connect.upgrade.app_error", nil, err.Error(), http.StatusBadRequest)
return return
} }

Просмотреть файл

@@ -15,6 +15,8 @@ import (
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"github.com/mattermost/mattermost-server/v6/model" "github.com/mattermost/mattermost-server/v6/model"
"github.com/mattermost/mattermost-server/v6/shared/mlog"
"github.com/mattermost/mattermost-server/v6/testlib"
) )
func TestWebSocketTrailingSlash(t *testing.T) { func TestWebSocketTrailingSlash(t *testing.T) {
@@ -417,3 +419,15 @@ func TestWebSocketStatuses(t *testing.T) {
WebSocketClient.Close() WebSocketClient.Close()
} }
func TestWebSocketUpgrade(t *testing.T) {
th := Setup(t)
defer th.TearDown()
url := fmt.Sprintf("http://localhost:%v", th.App.Srv().ListenAddr.Port) + model.APIURLSuffix + "/websocket"
resp, err := http.Get(url)
require.NoError(t, err)
require.Equal(t, resp.StatusCode, http.StatusBadRequest)
require.NoError(t, th.TestLogger.Flush())
testlib.AssertLog(t, th.LogBuffer, mlog.LvlDebug.Name, "Failed to upgrade websocket connection.")
}