mirror of
https://github.com/mattermost/mattermost.git
synced 2026-04-26 00:33:23 -04:00
th.InitBasic initializes users, channels, and teams. But a lot of tests don't use it at all, causing unncessary delays. A single InitBasic call takes around 400ms. This PR removes 71 of them, approximately shaving off 28 seconds. Arguably, this would be more because some tests run in loops.
74 lines
1.7 KiB
Go
74 lines
1.7 KiB
Go
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
package app
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
|
|
"github.com/mattermost/mattermost-server/v5/model"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestDownloadFromURL(t *testing.T) {
|
|
th := Setup(t)
|
|
defer th.TearDown()
|
|
|
|
app := th.App
|
|
app.Config().PluginSettings.AllowInsecureDownloadUrl = model.NewBool(true)
|
|
|
|
// To keep track of how many times an endpoint is retried. This needs to be reset
|
|
// for each test run.
|
|
retries := 0
|
|
|
|
mux := http.NewServeMux()
|
|
mux.HandleFunc("/succeeds-after-retry", func(w http.ResponseWriter, r *http.Request) {
|
|
if retries < 2 {
|
|
http.Error(w, "Request Timed out", http.StatusGatewayTimeout)
|
|
retries++
|
|
return
|
|
}
|
|
|
|
_, _ = w.Write([]byte("Your request is successful."))
|
|
})
|
|
|
|
mux.HandleFunc("/fails-forever", func(w http.ResponseWriter, r *http.Request) {
|
|
http.Error(w, "This would fail forever", http.StatusInternalServerError)
|
|
})
|
|
|
|
testServer := httptest.NewServer(mux)
|
|
|
|
tests := []struct {
|
|
name string
|
|
downloadURL string
|
|
wantErr bool
|
|
}{
|
|
{
|
|
name: "Should succeed after two retries",
|
|
downloadURL: fmt.Sprintf("%s/succeeds-after-retry", testServer.URL),
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "Should not retry forever",
|
|
downloadURL: fmt.Sprintf("%s/fails-forever", testServer.URL),
|
|
wantErr: true,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
retries = 0 // reset the retires
|
|
_, err := th.App.DownloadFromURL(tt.downloadURL)
|
|
|
|
if tt.wantErr {
|
|
require.Error(t, err)
|
|
} else {
|
|
require.NoError(t, err)
|
|
}
|
|
})
|
|
}
|
|
}
|