Replacing require.nil in api layer (#16906)

* Replacing require.nil in api layer

* Fixing some tests

* Fixing tests

* Addressing PR review comments

Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Этот коммит содержится в:
Jesús Espino
2021-02-17 09:52:18 +01:00
коммит произвёл GitHub
родитель 9992a27a90
Коммит 31a80a5351
22 изменённых файлов: 226 добавлений и 227 удалений

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

@@ -1231,10 +1231,10 @@ func TestSetBotIconImage(t *testing.T) {
defer th.App.PermanentDeleteBot(bot.UserId) defer th.App.PermanentDeleteBot(bot.UserId)
badData, err := testutils.ReadTestFile("test.png") badData, err := testutils.ReadTestFile("test.png")
require.Nil(t, err) require.NoError(t, err)
goodData, err := testutils.ReadTestFile("test.svg") goodData, err := testutils.ReadTestFile("test.svg")
require.Nil(t, err) require.NoError(t, err)
// SetBotIconImage only allowed for bots // SetBotIconImage only allowed for bots
_, resp = th.SystemAdminClient.SetBotIconImage(user.Id, goodData) _, resp = th.SystemAdminClient.SetBotIconImage(user.Id, goodData)
@@ -1268,14 +1268,14 @@ func TestSetBotIconImage(t *testing.T) {
CheckNoError(t, resp) CheckNoError(t, resp)
fpath := fmt.Sprintf("/bots/%v/icon.svg", bot.UserId) fpath := fmt.Sprintf("/bots/%v/icon.svg", bot.UserId)
actualData, err := th.App.ReadFile(fpath) actualData, appErr := th.App.ReadFile(fpath)
require.Nil(t, err) require.Nil(t, appErr)
require.NotNil(t, actualData) require.NotNil(t, actualData)
require.Equal(t, goodData, actualData) require.Equal(t, goodData, actualData)
info := &model.FileInfo{Path: fpath} info := &model.FileInfo{Path: fpath}
err = th.cleanupTestFile(info) err = th.cleanupTestFile(info)
require.Nil(t, err) require.NoError(t, err)
} }
func TestGetBotIconImage(t *testing.T) { func TestGetBotIconImage(t *testing.T) {
@@ -1315,8 +1315,8 @@ func TestGetBotIconImage(t *testing.T) {
svgFile.Seek(0, 0) svgFile.Seek(0, 0)
fpath := fmt.Sprintf("/bots/%v/icon.svg", bot.UserId) fpath := fmt.Sprintf("/bots/%v/icon.svg", bot.UserId)
_, err = th.App.WriteFile(svgFile, fpath) _, appErr := th.App.WriteFile(svgFile, fpath)
require.Nil(t, err) require.Nil(t, appErr)
data, resp = th.Client.GetBotIconImage(bot.UserId) data, resp = th.Client.GetBotIconImage(bot.UserId)
CheckNoError(t, resp) CheckNoError(t, resp)
@@ -1337,7 +1337,7 @@ func TestGetBotIconImage(t *testing.T) {
info := &model.FileInfo{Path: "/bots/" + bot.UserId + "/icon.svg"} info := &model.FileInfo{Path: "/bots/" + bot.UserId + "/icon.svg"}
err = th.cleanupTestFile(info) err = th.cleanupTestFile(info)
require.Nil(t, err) require.NoError(t, err)
} }
func TestDeleteBotIconImage(t *testing.T) { func TestDeleteBotIconImage(t *testing.T) {
@@ -1368,14 +1368,14 @@ func TestDeleteBotIconImage(t *testing.T) {
// Set an icon image // Set an icon image
svgData, err := testutils.ReadTestFile("test.svg") svgData, err := testutils.ReadTestFile("test.svg")
require.Nil(t, err) require.NoError(t, err)
_, resp = th.Client.SetBotIconImage(bot.UserId, svgData) _, resp = th.Client.SetBotIconImage(bot.UserId, svgData)
CheckNoError(t, resp) CheckNoError(t, resp)
fpath := fmt.Sprintf("/bots/%v/icon.svg", bot.UserId) fpath := fmt.Sprintf("/bots/%v/icon.svg", bot.UserId)
exists, err := th.App.FileExists(fpath) exists, appErr := th.App.FileExists(fpath)
require.Nil(t, err) require.Nil(t, appErr)
require.True(t, exists, "icon.svg needs to exist for the user") require.True(t, exists, "icon.svg needs to exist for the user")
data, resp = th.Client.GetBotIconImage(bot.UserId) data, resp = th.Client.GetBotIconImage(bot.UserId)
@@ -1399,8 +1399,8 @@ func TestDeleteBotIconImage(t *testing.T) {
CheckUnauthorizedStatus(t, resp) CheckUnauthorizedStatus(t, resp)
require.False(t, success) require.False(t, success)
exists, err = th.App.FileExists(fpath) exists, appErr = th.App.FileExists(fpath)
require.Nil(t, err) require.Nil(t, appErr)
require.False(t, exists, "icon.svg should not for the user") require.False(t, exists, "icon.svg should not for the user")
} }

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

@@ -34,7 +34,7 @@ func TestUploadBrandImage(t *testing.T) {
Client := th.Client Client := th.Client
data, err := testutils.ReadTestFile("test.png") data, err := testutils.ReadTestFile("test.png")
require.Nil(t, err) require.NoError(t, err)
_, resp := Client.UploadBrandImage(data) _, resp := Client.UploadBrandImage(data)
CheckForbiddenStatus(t, resp) CheckForbiddenStatus(t, resp)
@@ -60,7 +60,7 @@ func TestDeleteBrandImage(t *testing.T) {
defer th.TearDown() defer th.TearDown()
data, err := testutils.ReadTestFile("test.png") data, err := testutils.ReadTestFile("test.png")
require.Nil(t, err) require.NoError(t, err)
_, resp := th.SystemAdminClient.UploadBrandImage(data) _, resp := th.SystemAdminClient.UploadBrandImage(data)
CheckCreatedStatus(t, resp) CheckCreatedStatus(t, resp)

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

@@ -546,7 +546,7 @@ func TestGetCommand(t *testing.T) {
t.Run("InvalidId", func(t *testing.T) { t.Run("InvalidId", func(t *testing.T) {
_, resp := client.GetCommandById(strings.Repeat("z", len(newCmd.Id))) _, resp := client.GetCommandById(strings.Repeat("z", len(newCmd.Id)))
require.Error(t, resp.Error) require.NotNil(t, resp.Error)
}) })
}) })
t.Run("UserWithNoPermissionForCustomCommands", func(t *testing.T) { t.Run("UserWithNoPermissionForCustomCommands", func(t *testing.T) {

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

@@ -129,7 +129,7 @@ func TestCreateEmoji(t *testing.T) {
} }
newEmoji, resp = Client.CreateEmoji(emoji, utils.CreateTestGif(t, 10, app.MaxEmojiOriginalWidth+1), "image.gif") newEmoji, resp = Client.CreateEmoji(emoji, utils.CreateTestGif(t, 10, app.MaxEmojiOriginalWidth+1), "image.gif")
require.Error(t, resp.Error, "should fail - emoji is too wide") require.NotNil(t, resp.Error, "should fail - emoji is too wide")
// try to create an emoji that's too tall // try to create an emoji that's too tall
emoji = &model.Emoji{ emoji = &model.Emoji{
@@ -138,7 +138,7 @@ func TestCreateEmoji(t *testing.T) {
} }
newEmoji, resp = Client.CreateEmoji(emoji, utils.CreateTestGif(t, app.MaxEmojiOriginalHeight+1, 10), "image.gif") newEmoji, resp = Client.CreateEmoji(emoji, utils.CreateTestGif(t, app.MaxEmojiOriginalHeight+1, 10), "image.gif")
require.Error(t, resp.Error, "should fail - emoji is too tall") require.NotNil(t, resp.Error, "should fail - emoji is too tall")
// try to create an emoji that's too large // try to create an emoji that's too large
emoji = &model.Emoji{ emoji = &model.Emoji{
@@ -147,7 +147,7 @@ func TestCreateEmoji(t *testing.T) {
} }
_, resp = Client.CreateEmoji(emoji, utils.CreateTestAnimatedGif(t, 100, 100, 10000), "image.gif") _, resp = Client.CreateEmoji(emoji, utils.CreateTestAnimatedGif(t, 100, 100, 10000), "image.gif")
require.Error(t, resp.Error, "should fail - emoji is too big") require.NotNil(t, resp.Error, "should fail - emoji is too big")
// try to create an emoji with data that isn't an image // try to create an emoji with data that isn't an image
emoji = &model.Emoji{ emoji = &model.Emoji{
@@ -290,7 +290,7 @@ func TestDeleteEmoji(t *testing.T) {
_, resp = Client.GetEmoji(newEmoji.Id) _, resp = Client.GetEmoji(newEmoji.Id)
require.NotNil(t, resp, "nil response") require.NotNil(t, resp, "nil response")
require.Error(t, resp.Error, "expected error fetching deleted emoji") require.NotNil(t, resp.Error, "expected error fetching deleted emoji")
//Admin can delete other users emoji //Admin can delete other users emoji
newEmoji, resp = Client.CreateEmoji(emoji, utils.CreateTestGif(t, 10, 10), "image.gif") newEmoji, resp = Client.CreateEmoji(emoji, utils.CreateTestGif(t, 10, 10), "image.gif")
@@ -302,7 +302,7 @@ func TestDeleteEmoji(t *testing.T) {
_, resp = th.SystemAdminClient.GetEmoji(newEmoji.Id) _, resp = th.SystemAdminClient.GetEmoji(newEmoji.Id)
require.NotNil(t, resp, "nil response") require.NotNil(t, resp, "nil response")
require.Error(t, resp.Error, "expected error fetching deleted emoji") require.NotNil(t, resp.Error, "expected error fetching deleted emoji")
// Try to delete just deleted emoji // Try to delete just deleted emoji
_, resp = Client.DeleteEmoji(newEmoji.Id) _, resp = Client.DeleteEmoji(newEmoji.Id)

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

@@ -23,7 +23,7 @@ func TestListExports(t *testing.T) {
t.Run("no permissions", func(t *testing.T) { t.Run("no permissions", func(t *testing.T) {
exports, resp := th.Client.ListExports() exports, resp := th.Client.ListExports()
require.Error(t, resp.Error) require.NotNil(t, resp.Error)
require.Equal(t, "api.context.permissions.app_error", resp.Error.Id) require.Equal(t, "api.context.permissions.app_error", resp.Error.Id)
require.Nil(t, exports) require.Nil(t, exports)
}) })
@@ -40,11 +40,11 @@ func TestListExports(t *testing.T) {
th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) { th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) {
exportDir := filepath.Join(dataDir, *th.App.Config().ExportSettings.Directory) exportDir := filepath.Join(dataDir, *th.App.Config().ExportSettings.Directory)
err := os.Mkdir(exportDir, 0700) err := os.Mkdir(exportDir, 0700)
require.Nil(t, err) require.NoError(t, err)
defer os.RemoveAll(exportDir) defer os.RemoveAll(exportDir)
f, err := os.Create(filepath.Join(exportDir, "export.zip")) f, err := os.Create(filepath.Join(exportDir, "export.zip"))
require.Nil(t, err) require.NoError(t, err)
f.Close() f.Close()
exports, resp := c.ListExports() exports, resp := c.ListExports()
@@ -60,7 +60,7 @@ func TestListExports(t *testing.T) {
exportDir := filepath.Join(dataDir, value+"new") exportDir := filepath.Join(dataDir, value+"new")
err := os.Mkdir(exportDir, 0700) err := os.Mkdir(exportDir, 0700)
require.Nil(t, err) require.NoError(t, err)
defer os.RemoveAll(exportDir) defer os.RemoveAll(exportDir)
exports, resp := c.ListExports() exports, resp := c.ListExports()
@@ -68,7 +68,7 @@ func TestListExports(t *testing.T) {
require.Empty(t, exports) require.Empty(t, exports)
f, err := os.Create(filepath.Join(exportDir, "export.zip")) f, err := os.Create(filepath.Join(exportDir, "export.zip"))
require.Nil(t, err) require.NoError(t, err)
f.Close() f.Close()
exports, resp = c.ListExports() exports, resp = c.ListExports()
@@ -84,7 +84,7 @@ func TestDeleteExport(t *testing.T) {
t.Run("no permissions", func(t *testing.T) { t.Run("no permissions", func(t *testing.T) {
ok, resp := th.Client.DeleteExport("export.zip") ok, resp := th.Client.DeleteExport("export.zip")
require.Error(t, resp.Error) require.NotNil(t, resp.Error)
require.Equal(t, "api.context.permissions.app_error", resp.Error.Id) require.Equal(t, "api.context.permissions.app_error", resp.Error.Id)
require.False(t, ok) require.False(t, ok)
}) })
@@ -95,11 +95,11 @@ func TestDeleteExport(t *testing.T) {
th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) { th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) {
err := os.Mkdir(exportDir, 0700) err := os.Mkdir(exportDir, 0700)
require.Nil(t, err) require.NoError(t, err)
defer os.RemoveAll(exportDir) defer os.RemoveAll(exportDir)
exportName := "export.zip" exportName := "export.zip"
f, err := os.Create(filepath.Join(exportDir, exportName)) f, err := os.Create(filepath.Join(exportDir, exportName))
require.Nil(t, err) require.NoError(t, err)
f.Close() f.Close()
exports, resp := c.ListExports() exports, resp := c.ListExports()
@@ -129,7 +129,7 @@ func TestDownloadExport(t *testing.T) {
t.Run("no permissions", func(t *testing.T) { t.Run("no permissions", func(t *testing.T) {
var buf bytes.Buffer var buf bytes.Buffer
n, resp := th.Client.DownloadExport("export.zip", &buf, 0) n, resp := th.Client.DownloadExport("export.zip", &buf, 0)
require.Error(t, resp.Error) require.NotNil(t, resp.Error)
require.Equal(t, "api.context.permissions.app_error", resp.Error.Id) require.Equal(t, "api.context.permissions.app_error", resp.Error.Id)
require.Zero(t, n) require.Zero(t, n)
}) })
@@ -141,21 +141,21 @@ func TestDownloadExport(t *testing.T) {
th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) { th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) {
var buf bytes.Buffer var buf bytes.Buffer
n, resp := c.DownloadExport("export.zip", &buf, 0) n, resp := c.DownloadExport("export.zip", &buf, 0)
require.Error(t, resp.Error) require.NotNil(t, resp.Error)
require.Equal(t, "api.export.export_not_found.app_error", resp.Error.Id) require.Equal(t, "api.export.export_not_found.app_error", resp.Error.Id)
require.Zero(t, n) require.Zero(t, n)
}, "not found") }, "not found")
th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) { th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) {
err := os.Mkdir(exportDir, 0700) err := os.Mkdir(exportDir, 0700)
require.Nil(t, err) require.NoError(t, err)
defer os.RemoveAll(exportDir) defer os.RemoveAll(exportDir)
data := randomBytes(t, 1024*1024) data := randomBytes(t, 1024*1024)
var buf bytes.Buffer var buf bytes.Buffer
exportName := "export.zip" exportName := "export.zip"
err = ioutil.WriteFile(filepath.Join(exportDir, exportName), data, 0600) err = ioutil.WriteFile(filepath.Join(exportDir, exportName), data, 0600)
require.Nil(t, err) require.NoError(t, err)
n, resp := c.DownloadExport(exportName, &buf, 0) n, resp := c.DownloadExport(exportName, &buf, 0)
require.Nil(t, resp.Error) require.Nil(t, resp.Error)
@@ -165,14 +165,14 @@ func TestDownloadExport(t *testing.T) {
th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) { th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) {
err := os.Mkdir(exportDir, 0700) err := os.Mkdir(exportDir, 0700)
require.Nil(t, err) require.NoError(t, err)
defer os.RemoveAll(exportDir) defer os.RemoveAll(exportDir)
data := randomBytes(t, 1024*1024) data := randomBytes(t, 1024*1024)
var buf bytes.Buffer var buf bytes.Buffer
exportName := "export.zip" exportName := "export.zip"
err = ioutil.WriteFile(filepath.Join(exportDir, exportName), data, 0600) err = ioutil.WriteFile(filepath.Join(exportDir, exportName), data, 0600)
require.Nil(t, err) require.NoError(t, err)
offset := 1024 * 512 offset := 1024 * 512
n, resp := c.DownloadExport(exportName, &buf, int64(offset)) n, resp := c.DownloadExport(exportName, &buf, int64(offset))
@@ -191,16 +191,16 @@ func BenchmarkDownloadExport(b *testing.B) {
exportDir := filepath.Join(dataDir, *th.App.Config().ExportSettings.Directory) exportDir := filepath.Join(dataDir, *th.App.Config().ExportSettings.Directory)
err := os.Mkdir(exportDir, 0700) err := os.Mkdir(exportDir, 0700)
require.Nil(b, err) require.NoError(b, err)
defer os.RemoveAll(exportDir) defer os.RemoveAll(exportDir)
exportName := "export.zip" exportName := "export.zip"
f, err := os.Create(filepath.Join(exportDir, exportName)) f, err := os.Create(filepath.Join(exportDir, exportName))
require.Nil(b, err) require.NoError(b, err)
f.Close() f.Close()
err = os.Truncate(filepath.Join(exportDir, exportName), 1024*1024*1024) err = os.Truncate(filepath.Join(exportDir, exportName), 1024*1024*1024)
require.Nil(b, err) require.NoError(b, err)
b.ResetTimer() b.ResetTimer()
for i := 0; i < b.N; i++ { for i := 0; i < b.N; i++ {

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

@@ -61,7 +61,7 @@ func fileBytes(t *testing.T, path string) []byte {
func testDoUploadFileRequest(t testing.TB, c *model.Client4, url string, blob []byte, contentType string, func testDoUploadFileRequest(t testing.TB, c *model.Client4, url string, blob []byte, contentType string,
contentLength int64) (*model.FileUploadResponse, *model.Response) { contentLength int64) (*model.FileUploadResponse, *model.Response) {
req, err := http.NewRequest("POST", c.ApiUrl+c.GetFilesRoute()+url, bytes.NewReader(blob)) req, err := http.NewRequest("POST", c.ApiUrl+c.GetFilesRoute()+url, bytes.NewReader(blob))
require.Nil(t, err) require.NoError(t, err)
if contentLength != 0 { if contentLength != 0 {
req.ContentLength = contentLength req.ContentLength = contentLength
@@ -72,7 +72,7 @@ func testDoUploadFileRequest(t testing.TB, c *model.Client4, url string, blob []
} }
resp, err := c.HttpClient.Do(req) resp, err := c.HttpClient.Do(req)
require.Nil(t, err) require.NoError(t, err)
require.NotNil(t, resp) require.NotNil(t, resp)
defer closeBody(resp) defer closeBody(resp)
@@ -156,13 +156,13 @@ func testUploadFilesMultipart(
mw := multipart.NewWriter(mwBody) mw := multipart.NewWriter(mwBody)
err := mw.WriteField("channel_id", channelId) err := mw.WriteField("channel_id", channelId)
require.Nil(t, err) require.NoError(t, err)
for i, blob := range blobs { for i, blob := range blobs {
ct := http.DetectContentType(blob) ct := http.DetectContentType(blob)
if len(clientIds) > i { if len(clientIds) > i {
err = mw.WriteField("client_ids", clientIds[i]) err = mw.WriteField("client_ids", clientIds[i])
require.Nil(t, err) require.NoError(t, err)
} }
h := textproto.MIMEHeader{} h := textproto.MIMEHeader{}
@@ -172,10 +172,10 @@ func testUploadFilesMultipart(
// If we error here, writing to mw, the deferred handler // If we error here, writing to mw, the deferred handler
part, err := mw.CreatePart(h) part, err := mw.CreatePart(h)
require.Nil(t, err) require.NoError(t, err)
_, err = io.Copy(part, bytes.NewReader(blob)) _, err = io.Copy(part, bytes.NewReader(blob))
require.Nil(t, err) require.NoError(t, err)
} }
require.NoError(t, mw.Close()) require.NoError(t, mw.Close())
@@ -628,7 +628,7 @@ func TestUploadFiles(t *testing.T) {
} }
dbInfo, err := th.App.Srv().Store.FileInfo().Get(ri.Id) dbInfo, err := th.App.Srv().Store.FileInfo().Get(ri.Id)
require.Nil(t, err) require.NoError(t, err)
assert.Equal(t, dbInfo.Id, ri.Id, "File id from response should match one stored in database") assert.Equal(t, dbInfo.Id, ri.Id, "File id from response should match one stored in database")
assert.Equal(t, dbInfo.CreatorId, tc.expectedCreatorId, "F ile should be assigned to user") assert.Equal(t, dbInfo.CreatorId, tc.expectedCreatorId, "F ile should be assigned to user")
assert.Equal(t, dbInfo.PostId, "", "File shouldn't have a post") assert.Equal(t, dbInfo.PostId, "", "File shouldn't have a post")
@@ -666,13 +666,13 @@ func TestUploadFiles(t *testing.T) {
require.Nil(t, resp.Error) require.Nil(t, resp.Error)
expected, err := ioutil.ReadFile(filepath.Join(testDir, name)) expected, err := ioutil.ReadFile(filepath.Join(testDir, name))
require.Nil(t, err) require.NoError(t, err)
if !bytes.Equal(data, expected) { if !bytes.Equal(data, expected) {
tf, err := ioutil.TempFile("", fmt.Sprintf("test_%v_*_%s", i, name)) tf, err := ioutil.TempFile("", fmt.Sprintf("test_%v_*_%s", i, name))
defer tf.Close() defer tf.Close()
require.Nil(t, err) require.NoError(t, err)
_, err = io.Copy(tf, bytes.NewReader(data)) _, err = io.Copy(tf, bytes.NewReader(data))
require.Nil(t, err) require.NoError(t, err)
t.Errorf("Actual data mismatched %s, written to %q - expected %d bytes, got %d.", name, tf.Name(), len(expected), len(data)) t.Errorf("Actual data mismatched %s, written to %q - expected %d bytes, got %d.", name, tf.Name(), len(expected), len(data))
} }
} }
@@ -860,7 +860,7 @@ func TestGetFileLink(t *testing.T) {
// Hacky way to assign file to a post (usually would be done by CreatePost call) // Hacky way to assign file to a post (usually would be done by CreatePost call)
err = th.App.Srv().Store.FileInfo().AttachToPost(fileId, th.BasicPost.Id, th.BasicUser.Id) err = th.App.Srv().Store.FileInfo().AttachToPost(fileId, th.BasicPost.Id, th.BasicUser.Id)
require.Nil(t, err) require.NoError(t, err)
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.FileSettings.EnablePublicLink = false }) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.FileSettings.EnablePublicLink = false })
_, resp = Client.GetFileLink(fileId) _, resp = Client.GetFileLink(fileId)
@@ -891,7 +891,7 @@ func TestGetFileLink(t *testing.T) {
CheckNoError(t, resp) CheckNoError(t, resp)
fileInfo, err := th.App.Srv().Store.FileInfo().Get(fileId) fileInfo, err := th.App.Srv().Store.FileInfo().Get(fileId)
require.Nil(t, err) require.NoError(t, err)
th.cleanupTestFile(fileInfo) th.cleanupTestFile(fileInfo)
} }
@@ -1005,10 +1005,10 @@ func TestGetPublicFile(t *testing.T) {
// Hacky way to assign file to a post (usually would be done by CreatePost call) // Hacky way to assign file to a post (usually would be done by CreatePost call)
err = th.App.Srv().Store.FileInfo().AttachToPost(fileId, th.BasicPost.Id, th.BasicUser.Id) err = th.App.Srv().Store.FileInfo().AttachToPost(fileId, th.BasicPost.Id, th.BasicUser.Id)
require.Nil(t, err) require.NoError(t, err)
info, err := th.App.Srv().Store.FileInfo().Get(fileId) info, err := th.App.Srv().Store.FileInfo().Get(fileId)
require.Nil(t, err) require.NoError(t, err)
link := th.App.GeneratePublicLink(Client.Url, info) link := th.App.GeneratePublicLink(Client.Url, info)
resp, err := http.Get(link) resp, err := http.Get(link)
@@ -1038,12 +1038,12 @@ func TestGetPublicFile(t *testing.T) {
require.Equal(t, http.StatusBadRequest, resp.StatusCode, "should've failed to get image with public link after salt changed") require.Equal(t, http.StatusBadRequest, resp.StatusCode, "should've failed to get image with public link after salt changed")
fileInfo, err := th.App.Srv().Store.FileInfo().Get(fileId) fileInfo, err := th.App.Srv().Store.FileInfo().Get(fileId)
require.Nil(t, err) require.NoError(t, err)
require.Nil(t, th.cleanupTestFile(fileInfo)) require.NoError(t, th.cleanupTestFile(fileInfo))
th.cleanupTestFile(info) th.cleanupTestFile(info)
link = th.App.GeneratePublicLink(Client.Url, info) link = th.App.GeneratePublicLink(Client.Url, info)
resp, err = http.Get(link) resp, err = http.Get(link)
require.Nil(t, err) require.NoError(t, err)
require.Equal(t, http.StatusNotFound, resp.StatusCode, "should've failed to get file after it is deleted") require.Equal(t, http.StatusNotFound, resp.StatusCode, "should've failed to get file after it is deleted")
} }

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

@@ -23,10 +23,10 @@ func TestListImports(t *testing.T) {
uploadNewImport := func(c *model.Client4, t *testing.T) string { uploadNewImport := func(c *model.Client4, t *testing.T) string {
file, err := os.Open(testsDir + "/import_test.zip") file, err := os.Open(testsDir + "/import_test.zip")
require.Nil(t, err) require.NoError(t, err)
info, err := file.Stat() info, err := file.Stat()
require.Nil(t, err) require.NoError(t, err)
us := &model.UploadSession{ us := &model.UploadSession{
Filename: info.Name(), Filename: info.Name(),
@@ -51,7 +51,7 @@ func TestListImports(t *testing.T) {
t.Run("no permissions", func(t *testing.T) { t.Run("no permissions", func(t *testing.T) {
imports, resp := th.Client.ListImports() imports, resp := th.Client.ListImports()
require.Error(t, resp.Error) require.NotNil(t, resp.Error)
require.Equal(t, "api.context.permissions.app_error", resp.Error.Id) require.Equal(t, "api.context.permissions.app_error", resp.Error.Id)
require.Nil(t, imports) require.Nil(t, imports)
}) })
@@ -71,7 +71,7 @@ func TestListImports(t *testing.T) {
importDir := filepath.Join(dataDir, "import") importDir := filepath.Join(dataDir, "import")
f, err := os.Create(filepath.Join(importDir, "import.zip.tmp")) f, err := os.Create(filepath.Join(importDir, "import.zip.tmp"))
require.Nil(t, err) require.NoError(t, err)
f.Close() f.Close()
imports, resp := c.ListImports() imports, resp := c.ListImports()
@@ -81,7 +81,7 @@ func TestListImports(t *testing.T) {
require.Contains(t, imports, id+"_import_test.zip") require.Contains(t, imports, id+"_import_test.zip")
require.Contains(t, imports, id2+"_import_test.zip") require.Contains(t, imports, id2+"_import_test.zip")
require.Nil(t, os.RemoveAll(importDir)) require.NoError(t, os.RemoveAll(importDir))
}, "expected imports") }, "expected imports")
th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) { th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) {
@@ -101,6 +101,6 @@ func TestListImports(t *testing.T) {
require.Len(t, imports, 1) require.Len(t, imports, 1)
require.Equal(t, id+"_import_test.zip", imports[0]) require.Equal(t, id+"_import_test.zip", imports[0])
require.Nil(t, os.RemoveAll(importDir)) require.NoError(t, os.RemoveAll(importDir))
}, "change import directory") }, "change import directory")
} }

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

@@ -23,7 +23,7 @@ type testHandler struct {
func (th *testHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { func (th *testHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
bb, err := ioutil.ReadAll(r.Body) bb, err := ioutil.ReadAll(r.Body)
assert.Nil(th.t, err) assert.NoError(th.t, err)
assert.NotEmpty(th.t, string(bb)) assert.NotEmpty(th.t, string(bb))
poir := model.PostActionIntegrationRequestFromJson(bytes.NewReader(bb)) poir := model.PostActionIntegrationRequestFromJson(bytes.NewReader(bb))
assert.NotEmpty(th.t, poir.UserId) assert.NotEmpty(th.t, poir.UserId)
@@ -237,8 +237,7 @@ func TestSubmitDialog(t *testing.T) {
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
var request model.SubmitDialogRequest var request model.SubmitDialogRequest
err := json.NewDecoder(r.Body).Decode(&request) err := json.NewDecoder(r.Body).Decode(&request)
require.Nil(t, err) require.NoError(t, err)
assert.NotNil(t, request)
assert.Equal(t, request.URL, "") assert.Equal(t, request.URL, "")
assert.Equal(t, request.UserId, submit.UserId) assert.Equal(t, request.UserId, submit.UserId)

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

@@ -53,7 +53,7 @@ func TestGetJob(t *testing.T) {
Status: model.JOB_STATUS_PENDING, Status: model.JOB_STATUS_PENDING,
} }
_, err := th.App.Srv().Store.Job().Save(job) _, err := th.App.Srv().Store.Job().Save(job)
require.Nil(t, err) require.NoError(t, err)
defer th.App.Srv().Store.Job().Delete(job.Id) defer th.App.Srv().Store.Job().Delete(job.Id)
@@ -100,7 +100,7 @@ func TestGetJobs(t *testing.T) {
for _, job := range jobs { for _, job := range jobs {
_, err := th.App.Srv().Store.Job().Save(job) _, err := th.App.Srv().Store.Job().Save(job)
require.Nil(t, err) require.NoError(t, err)
defer th.App.Srv().Store.Job().Delete(job.Id) defer th.App.Srv().Store.Job().Delete(job.Id)
} }
@@ -151,7 +151,7 @@ func TestGetJobsByType(t *testing.T) {
for _, job := range jobs { for _, job := range jobs {
_, err := th.App.Srv().Store.Job().Save(job) _, err := th.App.Srv().Store.Job().Save(job)
require.Nil(t, err) require.NoError(t, err)
defer th.App.Srv().Store.Job().Delete(job.Id) defer th.App.Srv().Store.Job().Delete(job.Id)
} }
@@ -213,12 +213,12 @@ func TestDownloadJob(t *testing.T) {
// Here we have a job that exist in our database but the results do not exist therefore when we try to download the results // Here we have a job that exist in our database but the results do not exist therefore when we try to download the results
// as a system admin, we should get a not found status. // as a system admin, we should get a not found status.
_, err := th.App.Srv().Store.Job().Save(job) _, err := th.App.Srv().Store.Job().Save(job)
require.Nil(t, err) require.NoError(t, err)
defer th.App.Srv().Store.Job().Delete(job.Id) defer th.App.Srv().Store.Job().Delete(job.Id)
filePath := "./data/export/" + job.Id + "/testdat.txt" filePath := "./data/export/" + job.Id + "/testdat.txt"
mkdirAllErr := os.MkdirAll(filepath.Dir(filePath), 0770) mkdirAllErr := os.MkdirAll(filepath.Dir(filePath), 0770)
require.Nil(t, mkdirAllErr) require.NoError(t, mkdirAllErr)
os.Create(filePath) os.Create(filePath)
// Normal user cannot download the results of these job (not the right permission) // Normal user cannot download the results of these job (not the right permission)
@@ -235,7 +235,7 @@ func TestDownloadJob(t *testing.T) {
job.Data["is_downloadable"] = "true" job.Data["is_downloadable"] = "true"
updateStatus, err := th.App.Srv().Store.Job().UpdateOptimistically(job, model.JOB_STATUS_SUCCESS) updateStatus, err := th.App.Srv().Store.Job().UpdateOptimistically(job, model.JOB_STATUS_SUCCESS)
require.True(t, updateStatus) require.True(t, updateStatus)
require.Nil(t, err) require.NoError(t, err)
_, resp = th.SystemAdminClient.DownloadJob(job.Id) _, resp = th.SystemAdminClient.DownloadJob(job.Id)
CheckNotFoundStatus(t, resp) CheckNotFoundStatus(t, resp)
@@ -244,7 +244,7 @@ func TestDownloadJob(t *testing.T) {
// This time we should successfully retrieve the results without any error // This time we should successfully retrieve the results without any error
filePath = "./data/export/" + job.Id + ".zip" filePath = "./data/export/" + job.Id + ".zip"
mkdirAllErr = os.MkdirAll(filepath.Dir(filePath), 0770) mkdirAllErr = os.MkdirAll(filepath.Dir(filePath), 0770)
require.Nil(t, mkdirAllErr) require.NoError(t, mkdirAllErr)
os.Create(filePath) os.Create(filePath)
_, resp = th.SystemAdminClient.DownloadJob(job.Id) _, resp = th.SystemAdminClient.DownloadJob(job.Id)
@@ -261,7 +261,7 @@ func TestDownloadJob(t *testing.T) {
Status: model.JOB_STATUS_SUCCESS, Status: model.JOB_STATUS_SUCCESS,
} }
_, err = th.App.Srv().Store.Job().Save(job) _, err = th.App.Srv().Store.Job().Save(job)
require.Nil(t, err) require.NoError(t, err)
defer th.App.Srv().Store.Job().Delete(job.Id) defer th.App.Srv().Store.Job().Delete(job.Id)
// System admin shouldn't be able to download since the job type is not message export // System admin shouldn't be able to download since the job type is not message export
@@ -293,7 +293,7 @@ func TestCancelJob(t *testing.T) {
for _, job := range jobs { for _, job := range jobs {
_, err := th.App.Srv().Store.Job().Save(job) _, err := th.App.Srv().Store.Job().Save(job)
require.Nil(t, err) require.NoError(t, err)
defer th.App.Srv().Store.Job().Delete(job.Id) defer th.App.Srv().Store.Job().Delete(job.Id)
} }

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

@@ -28,12 +28,12 @@ func TestGetOldClientLicense(t *testing.T) {
CheckNoError(t, resp) CheckNoError(t, resp)
_, err := Client.DoApiGet("/license/client", "") _, err := Client.DoApiGet("/license/client", "")
require.Error(t, err, "get /license/client did not return an error") require.NotNil(t, err, "get /license/client did not return an error")
require.Equal(t, err.StatusCode, http.StatusNotImplemented, require.Equal(t, err.StatusCode, http.StatusNotImplemented,
"expected 501 Not Implemented") "expected 501 Not Implemented")
_, err = Client.DoApiGet("/license/client?format=junk", "") _, err = Client.DoApiGet("/license/client?format=junk", "")
require.Error(t, err, "get /license/client?format=junk did not return an error") require.NotNil(t, err, "get /license/client?format=junk did not return an error")
require.Equal(t, err.StatusCode, http.StatusBadRequest, require.Equal(t, err.StatusCode, http.StatusBadRequest,
"expected 400 Bad Request") "expected 400 Bad Request")

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

@@ -59,7 +59,7 @@ func TestCreateOAuthApp(t *testing.T) {
CheckBadRequestStatus(t, resp) CheckBadRequestStatus(t, resp)
r, err := Client.DoApiPost("/oauth/apps", "garbage") r, err := Client.DoApiPost("/oauth/apps", "garbage")
require.Error(t, err, "expected error from garbage post") require.NotNil(t, err, "expected error from garbage post")
assert.Equal(t, http.StatusBadRequest, r.StatusCode) assert.Equal(t, http.StatusBadRequest, r.StatusCode)
Client.Logout() Client.Logout()

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

@@ -34,7 +34,7 @@ func TestPlugin(t *testing.T) {
th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) {
statesJson, err := json.Marshal(th.App.Config().PluginSettings.PluginStates) statesJson, err := json.Marshal(th.App.Config().PluginSettings.PluginStates)
require.Nil(t, err) require.NoError(t, err)
states := map[string]*model.PluginState{} states := map[string]*model.PluginState{}
json.Unmarshal(statesJson, &states) json.Unmarshal(statesJson, &states)
th.App.UpdateConfig(func(cfg *model.Config) { th.App.UpdateConfig(func(cfg *model.Config) {
@@ -68,8 +68,8 @@ func TestPlugin(t *testing.T) {
assert.Equal(t, "testplugin", manifest.Id) assert.Equal(t, "testplugin", manifest.Id)
// Stored in File Store: Install Plugin from URL case // Stored in File Store: Install Plugin from URL case
pluginStored, err := th.App.FileExists("./plugins/" + manifest.Id + ".tar.gz") pluginStored, appErr := th.App.FileExists("./plugins/" + manifest.Id + ".tar.gz")
assert.Nil(t, err) assert.Nil(t, appErr)
assert.True(t, pluginStored) assert.True(t, pluginStored)
ok, resp := client.RemovePlugin(manifest.Id) ok, resp := client.RemovePlugin(manifest.Id)
@@ -127,8 +127,8 @@ func TestPlugin(t *testing.T) {
assert.Equal(t, "testplugin", manifest.Id) assert.Equal(t, "testplugin", manifest.Id)
// Stored in File Store: Upload Plugin case // Stored in File Store: Upload Plugin case
pluginStored, err = th.App.FileExists("./plugins/" + manifest.Id + ".tar.gz") pluginStored, appErr = th.App.FileExists("./plugins/" + manifest.Id + ".tar.gz")
assert.Nil(t, err) assert.Nil(t, appErr)
assert.True(t, pluginStored) assert.True(t, pluginStored)
// Upload error cases // Upload error cases
@@ -296,8 +296,8 @@ func TestNotifyClusterPluginEvent(t *testing.T) {
// Stored in File Store: Upload Plugin case // Stored in File Store: Upload Plugin case
expectedPath := filepath.Join("./plugins", manifest.Id) + ".tar.gz" expectedPath := filepath.Join("./plugins", manifest.Id) + ".tar.gz"
pluginStored, err := th.App.FileExists(expectedPath) pluginStored, appErr := th.App.FileExists(expectedPath)
require.Nil(t, err) require.Nil(t, appErr)
require.True(t, pluginStored) require.True(t, pluginStored)
messages := testCluster.GetMessages() messages := testCluster.GetMessages()
@@ -320,8 +320,8 @@ func TestNotifyClusterPluginEvent(t *testing.T) {
require.Equal(t, "testplugin", manifest.Id) require.Equal(t, "testplugin", manifest.Id)
// Successful remove // Successful remove
webSocketClient, err := th.CreateWebSocketSystemAdminClient() webSocketClient, appErr := th.CreateWebSocketSystemAdminClient()
require.Nil(t, err) require.Nil(t, appErr)
webSocketClient.Listen() webSocketClient.Listen()
defer webSocketClient.Close() defer webSocketClient.Close()
done := make(chan bool) done := make(chan bool)
@@ -359,8 +359,8 @@ func TestNotifyClusterPluginEvent(t *testing.T) {
actualMessages = findClusterMessages(model.CLUSTER_EVENT_REMOVE_PLUGIN, messages) actualMessages = findClusterMessages(model.CLUSTER_EVENT_REMOVE_PLUGIN, messages)
require.Equal(t, []*model.ClusterMessage{expectedRemoveMessage}, actualMessages) require.Equal(t, []*model.ClusterMessage{expectedRemoveMessage}, actualMessages)
pluginStored, err = th.App.FileExists(expectedPath) pluginStored, appErr = th.App.FileExists(expectedPath)
require.Nil(t, err) require.Nil(t, appErr)
require.False(t, pluginStored) require.False(t, pluginStored)
} }
@@ -1255,9 +1255,9 @@ func TestInstallMarketplacePlugin(t *testing.T) {
path, _ := fileutils.FindDir("tests") path, _ := fileutils.FindDir("tests")
signatureFilename := "testplugin2.tar.gz.sig" signatureFilename := "testplugin2.tar.gz.sig"
signatureFileReader, err := os.Open(filepath.Join(path, signatureFilename)) signatureFileReader, err := os.Open(filepath.Join(path, signatureFilename))
require.Nil(t, err) require.NoError(t, err)
sigFile, err := ioutil.ReadAll(signatureFileReader) sigFile, err := ioutil.ReadAll(signatureFileReader)
require.Nil(t, err) require.NoError(t, err)
pluginSignature := base64.StdEncoding.EncodeToString(sigFile) pluginSignature := base64.StdEncoding.EncodeToString(sigFile)
tarData, err := ioutil.ReadFile(filepath.Join(path, "testplugin2.tar.gz")) tarData, err := ioutil.ReadFile(filepath.Join(path, "testplugin2.tar.gz"))
@@ -1420,15 +1420,15 @@ func TestInstallMarketplacePlugin(t *testing.T) {
require.Equal(t, "1.2.3", manifest.Version) require.Equal(t, "1.2.3", manifest.Version)
filePath := filepath.Join("plugins", "testplugin2.tar.gz.sig") filePath := filepath.Join("plugins", "testplugin2.tar.gz.sig")
savedSigFile, err := th.App.ReadFile(filePath) savedSigFile, appErr := th.App.ReadFile(filePath)
require.Nil(t, err) require.Nil(t, appErr)
require.EqualValues(t, sigFile, savedSigFile) require.EqualValues(t, sigFile, savedSigFile)
ok, resp := client.RemovePlugin(manifest.Id) ok, resp := client.RemovePlugin(manifest.Id)
CheckNoError(t, resp) CheckNoError(t, resp)
assert.True(t, ok) assert.True(t, ok)
exists, err := th.App.FileExists(filePath) exists, appErr := th.App.FileExists(filePath)
require.Nil(t, err) require.Nil(t, appErr)
require.False(t, exists) require.False(t, exists)
appErr = th.App.DeletePublicKey("pub_key") appErr = th.App.DeletePublicKey("pub_key")
@@ -1564,9 +1564,9 @@ func TestInstallMarketplacePlugin(t *testing.T) {
th2.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { th2.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) {
pluginSignatureFile, err := os.Open(filepath.Join(path, "testplugin.tar.gz.asc")) pluginSignatureFile, err := os.Open(filepath.Join(path, "testplugin.tar.gz.asc"))
require.Nil(t, err) require.NoError(t, err)
pluginSignatureData, err := ioutil.ReadAll(pluginSignatureFile) pluginSignatureData, err := ioutil.ReadAll(pluginSignatureFile)
require.Nil(t, err) require.NoError(t, err)
key, err := os.Open(filepath.Join(path, "development-private-key.asc")) key, err := os.Open(filepath.Join(path, "development-private-key.asc"))
require.NoError(t, err) require.NoError(t, err)

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

@@ -199,7 +199,7 @@ func TestCreatePost(t *testing.T) {
CheckForbiddenStatus(t, resp) CheckForbiddenStatus(t, resp)
r, err := Client.DoApiPost("/posts", "garbage") r, err := Client.DoApiPost("/posts", "garbage")
require.Error(t, err) require.NotNil(t, err)
require.Equal(t, http.StatusBadRequest, r.StatusCode) require.Equal(t, http.StatusBadRequest, r.StatusCode)
Client.Logout() Client.Logout()
@@ -230,7 +230,7 @@ func TestCreatePostEphemeral(t *testing.T) {
require.Equal(t, 0, int(rpost.EditAt), "newly created ephemeral post shouldn't have EditAt set") require.Equal(t, 0, int(rpost.EditAt), "newly created ephemeral post shouldn't have EditAt set")
r, err := Client.DoApiPost("/posts/ephemeral", "garbage") r, err := Client.DoApiPost("/posts/ephemeral", "garbage")
require.Error(t, err) require.NotNil(t, err)
require.Equal(t, http.StatusBadRequest, r.StatusCode) require.Equal(t, http.StatusBadRequest, r.StatusCode)
Client.Logout() Client.Logout()
@@ -664,20 +664,20 @@ func TestUpdatePost(t *testing.T) {
fileIds := make([]string, 3) fileIds := make([]string, 3)
data, err := testutils.ReadTestFile("test.png") data, err := testutils.ReadTestFile("test.png")
require.Nil(t, err) require.NoError(t, err)
for i := 0; i < len(fileIds); i++ { for i := 0; i < len(fileIds); i++ {
fileResp, resp := Client.UploadFile(data, channel.Id, "test.png") fileResp, resp := Client.UploadFile(data, channel.Id, "test.png")
CheckNoError(t, resp) CheckNoError(t, resp)
fileIds[i] = fileResp.FileInfos[0].Id fileIds[i] = fileResp.FileInfos[0].Id
} }
rpost, err := th.App.CreatePost(&model.Post{ rpost, appErr := th.App.CreatePost(&model.Post{
UserId: th.BasicUser.Id, UserId: th.BasicUser.Id,
ChannelId: channel.Id, ChannelId: channel.Id,
Message: "zz" + model.NewId() + "a", Message: "zz" + model.NewId() + "a",
FileIds: fileIds, FileIds: fileIds,
}, channel, false, true) }, channel, false, true)
require.Nil(t, err) require.Nil(t, appErr)
assert.Equal(t, rpost.Message, rpost.Message, "full name didn't match") assert.Equal(t, rpost.Message, rpost.Message, "full name didn't match")
assert.EqualValues(t, 0, rpost.EditAt, "Newly created post shouldn't have EditAt set") assert.EqualValues(t, 0, rpost.EditAt, "Newly created post shouldn't have EditAt set")
@@ -744,12 +744,12 @@ func TestUpdatePost(t *testing.T) {
CheckBadRequestStatus(t, resp) CheckBadRequestStatus(t, resp)
}) })
rpost3, err := th.App.CreatePost(&model.Post{ rpost3, appErr := th.App.CreatePost(&model.Post{
ChannelId: channel.Id, ChannelId: channel.Id,
Message: "zz" + model.NewId() + "a", Message: "zz" + model.NewId() + "a",
UserId: th.BasicUser.Id, UserId: th.BasicUser.Id,
}, channel, false, true) }, channel, false, true)
require.Nil(t, err) require.Nil(t, appErr)
t.Run("new message, add files", func(t *testing.T) { t.Run("new message, add files", func(t *testing.T) {
up3 := &model.Post{ up3 := &model.Post{
@@ -847,7 +847,7 @@ func TestPatchPost(t *testing.T) {
fileIds := make([]string, 3) fileIds := make([]string, 3)
data, err := testutils.ReadTestFile("test.png") data, err := testutils.ReadTestFile("test.png")
require.Nil(t, err) require.NoError(t, err)
for i := 0; i < len(fileIds); i++ { for i := 0; i < len(fileIds); i++ {
fileResp, resp := Client.UploadFile(data, channel.Id, "test.png") fileResp, resp := Client.UploadFile(data, channel.Id, "test.png")
CheckNoError(t, resp) CheckNoError(t, resp)
@@ -1721,7 +1721,7 @@ func TestGetPostsForChannelAroundLastUnread(t *testing.T) {
// Setting limit_after to zero should fail with a 400 BadRequest. // Setting limit_after to zero should fail with a 400 BadRequest.
posts, resp := Client.GetPostsAroundLastUnread(userId, channelId, 20, 0, false) posts, resp := Client.GetPostsAroundLastUnread(userId, channelId, 20, 0, false)
require.Error(t, resp.Error) require.NotNil(t, resp.Error)
require.Equal(t, "api.context.invalid_url_param.app_error", resp.Error.Id) require.Equal(t, "api.context.invalid_url_param.app_error", resp.Error.Id)
require.Equal(t, http.StatusBadRequest, resp.StatusCode) require.Equal(t, http.StatusBadRequest, resp.StatusCode)
@@ -1733,10 +1733,10 @@ func TestGetPostsForChannelAroundLastUnread(t *testing.T) {
// Set channel member's last viewed to 0. // Set channel member's last viewed to 0.
// All returned posts are latest posts as if all previous posts were already read by the user. // All returned posts are latest posts as if all previous posts were already read by the user.
channelMember, err := th.App.Srv().Store.Channel().GetMember(channelId, userId) channelMember, err := th.App.Srv().Store.Channel().GetMember(channelId, userId)
require.Nil(t, err) require.NoError(t, err)
channelMember.LastViewedAt = 0 channelMember.LastViewedAt = 0
_, err = th.App.Srv().Store.Channel().UpdateMember(channelMember) _, err = th.App.Srv().Store.Channel().UpdateMember(channelMember)
require.Nil(t, err) require.NoError(t, err)
th.App.Srv().Store.Post().InvalidateLastPostTimeCache(channelId) th.App.Srv().Store.Post().InvalidateLastPostTimeCache(channelId)
posts, resp = Client.GetPostsAroundLastUnread(userId, channelId, 20, 20, false) posts, resp = Client.GetPostsAroundLastUnread(userId, channelId, 20, 20, false)
@@ -1754,10 +1754,10 @@ func TestGetPostsForChannelAroundLastUnread(t *testing.T) {
// Set channel member's last viewed before post1. // Set channel member's last viewed before post1.
channelMember, err = th.App.Srv().Store.Channel().GetMember(channelId, userId) channelMember, err = th.App.Srv().Store.Channel().GetMember(channelId, userId)
require.Nil(t, err) require.NoError(t, err)
channelMember.LastViewedAt = post1.CreateAt - 1 channelMember.LastViewedAt = post1.CreateAt - 1
_, err = th.App.Srv().Store.Channel().UpdateMember(channelMember) _, err = th.App.Srv().Store.Channel().UpdateMember(channelMember)
require.Nil(t, err) require.NoError(t, err)
th.App.Srv().Store.Post().InvalidateLastPostTimeCache(channelId) th.App.Srv().Store.Post().InvalidateLastPostTimeCache(channelId)
posts, resp = Client.GetPostsAroundLastUnread(userId, channelId, 3, 3, false) posts, resp = Client.GetPostsAroundLastUnread(userId, channelId, 3, 3, false)
@@ -1778,10 +1778,10 @@ func TestGetPostsForChannelAroundLastUnread(t *testing.T) {
// Set channel member's last viewed before post6. // Set channel member's last viewed before post6.
channelMember, err = th.App.Srv().Store.Channel().GetMember(channelId, userId) channelMember, err = th.App.Srv().Store.Channel().GetMember(channelId, userId)
require.Nil(t, err) require.NoError(t, err)
channelMember.LastViewedAt = post6.CreateAt - 1 channelMember.LastViewedAt = post6.CreateAt - 1
_, err = th.App.Srv().Store.Channel().UpdateMember(channelMember) _, err = th.App.Srv().Store.Channel().UpdateMember(channelMember)
require.Nil(t, err) require.NoError(t, err)
th.App.Srv().Store.Post().InvalidateLastPostTimeCache(channelId) th.App.Srv().Store.Post().InvalidateLastPostTimeCache(channelId)
posts, resp = Client.GetPostsAroundLastUnread(userId, channelId, 3, 3, false) posts, resp = Client.GetPostsAroundLastUnread(userId, channelId, 3, 3, false)
@@ -1805,10 +1805,10 @@ func TestGetPostsForChannelAroundLastUnread(t *testing.T) {
// Set channel member's last viewed before post10. // Set channel member's last viewed before post10.
channelMember, err = th.App.Srv().Store.Channel().GetMember(channelId, userId) channelMember, err = th.App.Srv().Store.Channel().GetMember(channelId, userId)
require.Nil(t, err) require.NoError(t, err)
channelMember.LastViewedAt = post10.CreateAt - 1 channelMember.LastViewedAt = post10.CreateAt - 1
_, err = th.App.Srv().Store.Channel().UpdateMember(channelMember) _, err = th.App.Srv().Store.Channel().UpdateMember(channelMember)
require.Nil(t, err) require.NoError(t, err)
th.App.Srv().Store.Post().InvalidateLastPostTimeCache(channelId) th.App.Srv().Store.Post().InvalidateLastPostTimeCache(channelId)
posts, resp = Client.GetPostsAroundLastUnread(userId, channelId, 3, 3, false) posts, resp = Client.GetPostsAroundLastUnread(userId, channelId, 3, 3, false)
@@ -1830,10 +1830,10 @@ func TestGetPostsForChannelAroundLastUnread(t *testing.T) {
// Set channel member's last viewed equal to post10. // Set channel member's last viewed equal to post10.
channelMember, err = th.App.Srv().Store.Channel().GetMember(channelId, userId) channelMember, err = th.App.Srv().Store.Channel().GetMember(channelId, userId)
require.Nil(t, err) require.NoError(t, err)
channelMember.LastViewedAt = post10.CreateAt channelMember.LastViewedAt = post10.CreateAt
_, err = th.App.Srv().Store.Channel().UpdateMember(channelMember) _, err = th.App.Srv().Store.Channel().UpdateMember(channelMember)
require.Nil(t, err) require.NoError(t, err)
th.App.Srv().Store.Post().InvalidateLastPostTimeCache(channelId) th.App.Srv().Store.Post().InvalidateLastPostTimeCache(channelId)
posts, resp = Client.GetPostsAroundLastUnread(userId, channelId, 3, 3, false) posts, resp = Client.GetPostsAroundLastUnread(userId, channelId, 3, 3, false)
@@ -1870,10 +1870,10 @@ func TestGetPostsForChannelAroundLastUnread(t *testing.T) {
postIdNames[post13.Id] = "post13" postIdNames[post13.Id] = "post13"
channelMember, err = th.App.Srv().Store.Channel().GetMember(channelId, userId) channelMember, err = th.App.Srv().Store.Channel().GetMember(channelId, userId)
require.Nil(t, err) require.NoError(t, err)
channelMember.LastViewedAt = post12.CreateAt - 1 channelMember.LastViewedAt = post12.CreateAt - 1
_, err = th.App.Srv().Store.Channel().UpdateMember(channelMember) _, err = th.App.Srv().Store.Channel().UpdateMember(channelMember)
require.Nil(t, err) require.NoError(t, err)
th.App.Srv().Store.Post().InvalidateLastPostTimeCache(channelId) th.App.Srv().Store.Post().InvalidateLastPostTimeCache(channelId)
posts, resp = Client.GetPostsAroundLastUnread(userId, channelId, 1, 2, false) posts, resp = Client.GetPostsAroundLastUnread(userId, channelId, 1, 2, false)

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

@@ -610,7 +610,7 @@ func TestDeletePreferencesWebsocket(t *testing.T) {
} }
received, err := model.PreferencesFromJson(strings.NewReader(event.GetData()["preferences"].(string))) received, err := model.PreferencesFromJson(strings.NewReader(event.GetData()["preferences"].(string)))
require.Nil(t, err) require.NoError(t, err)
for i, preference := range *preferences { for i, preference := range *preferences {
require.Equal(t, preference.UserId, received[i].UserId) require.Equal(t, preference.UserId, received[i].UserId)

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

@@ -246,7 +246,7 @@ func TestGetReactions(t *testing.T) {
for _, userReaction := range userReactions { for _, userReaction := range userReactions {
reaction, err := th.App.Srv().Store.Reaction().Save(userReaction) reaction, err := th.App.Srv().Store.Reaction().Save(userReaction)
require.Nil(t, err) require.NoError(t, err)
reactions = append(reactions, reaction) reactions = append(reactions, reaction)
} }
@@ -597,7 +597,7 @@ func TestGetBulkReactions(t *testing.T) {
for _, userReaction := range userReactions { for _, userReaction := range userReactions {
reactions := expectedPostIdsReactionsMap[userReaction.PostId] reactions := expectedPostIdsReactionsMap[userReaction.PostId]
reaction, err := th.App.Srv().Store.Reaction().Save(userReaction) reaction, err := th.App.Srv().Store.Reaction().Save(userReaction)
require.Nil(t, err) require.NoError(t, err)
reactions = append(reactions, reaction) reactions = append(reactions, reaction)
expectedPostIdsReactionsMap[userReaction.PostId] = reactions expectedPostIdsReactionsMap[userReaction.PostId] = reactions
} }

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

@@ -26,7 +26,7 @@ func TestGetRole(t *testing.T) {
} }
role, err := th.App.Srv().Store.Role().Save(role) role, err := th.App.Srv().Store.Role().Save(role)
assert.Nil(t, err) require.NoError(t, err)
defer th.App.Srv().Store.Job().Delete(role.Id) defer th.App.Srv().Store.Job().Delete(role.Id)
th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { th.TestForAllClients(t, func(t *testing.T, client *model.Client4) {
@@ -63,7 +63,7 @@ func TestGetRoleByName(t *testing.T) {
} }
role, err := th.App.Srv().Store.Role().Save(role) role, err := th.App.Srv().Store.Role().Save(role)
assert.Nil(t, err) assert.NoError(t, err)
defer th.App.Srv().Store.Job().Delete(role.Id) defer th.App.Srv().Store.Job().Delete(role.Id)
th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { th.TestForAllClients(t, func(t *testing.T, client *model.Client4) {
@@ -114,15 +114,15 @@ func TestGetRolesByNames(t *testing.T) {
} }
role1, err := th.App.Srv().Store.Role().Save(role1) role1, err := th.App.Srv().Store.Role().Save(role1)
assert.Nil(t, err) assert.NoError(t, err)
defer th.App.Srv().Store.Job().Delete(role1.Id) defer th.App.Srv().Store.Job().Delete(role1.Id)
role2, err = th.App.Srv().Store.Role().Save(role2) role2, err = th.App.Srv().Store.Role().Save(role2)
assert.Nil(t, err) assert.NoError(t, err)
defer th.App.Srv().Store.Job().Delete(role2.Id) defer th.App.Srv().Store.Job().Delete(role2.Id)
role3, err = th.App.Srv().Store.Role().Save(role3) role3, err = th.App.Srv().Store.Role().Save(role3)
assert.Nil(t, err) assert.NoError(t, err)
defer th.App.Srv().Store.Job().Delete(role3.Id) defer th.App.Srv().Store.Job().Delete(role3.Id)
th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { th.TestForAllClients(t, func(t *testing.T, client *model.Client4) {
@@ -170,7 +170,7 @@ func TestPatchRole(t *testing.T) {
} }
role, err := th.App.Srv().Store.Role().Save(role) role, err := th.App.Srv().Store.Role().Save(role)
assert.Nil(t, err) assert.NoError(t, err)
defer th.App.Srv().Store.Job().Delete(role.Id) defer th.App.Srv().Store.Job().Delete(role.Id)
patch := &model.RolePatch{ patch := &model.RolePatch{
@@ -181,7 +181,7 @@ func TestPatchRole(t *testing.T) {
// Cannot edit a system admin // Cannot edit a system admin
adminRole, err := th.App.Srv().Store.Role().GetByName("system_admin") adminRole, err := th.App.Srv().Store.Role().GetByName("system_admin")
assert.Nil(t, err) assert.NoError(t, err)
defer th.App.Srv().Store.Job().Delete(adminRole.Id) defer th.App.Srv().Store.Job().Delete(adminRole.Id)
_, resp := client.PatchRole(adminRole.Id, patch) _, resp := client.PatchRole(adminRole.Id, patch)
@@ -189,7 +189,7 @@ func TestPatchRole(t *testing.T) {
// Cannot give other roles read / write to system roles or manage roles because only system admin can do these actions // Cannot give other roles read / write to system roles or manage roles because only system admin can do these actions
systemManager, err := th.App.Srv().Store.Role().GetByName("system_manager") systemManager, err := th.App.Srv().Store.Role().GetByName("system_manager")
assert.Nil(t, err) assert.NoError(t, err)
defer th.App.Srv().Store.Job().Delete(systemManager.Id) defer th.App.Srv().Store.Job().Delete(systemManager.Id)
patchWriteSystemRoles := &model.RolePatch{ patchWriteSystemRoles := &model.RolePatch{
@@ -272,7 +272,7 @@ func TestPatchRole(t *testing.T) {
th.App.Srv().SetLicense(license) th.App.Srv().SetLicense(license)
guestRole, err := th.App.Srv().Store.Role().GetByName("system_guest") guestRole, err := th.App.Srv().Store.Role().GetByName("system_guest")
require.Nil(t, err) require.NoError(t, err)
received, resp = client.PatchRole(guestRole.Id, patch) received, resp = client.PatchRole(guestRole.Id, patch)
CheckNotImplementedStatus(t, resp) CheckNotImplementedStatus(t, resp)
}) })
@@ -282,7 +282,7 @@ func TestPatchRole(t *testing.T) {
license.Features.GuestAccountsPermissions = model.NewBool(true) license.Features.GuestAccountsPermissions = model.NewBool(true)
th.App.Srv().SetLicense(license) th.App.Srv().SetLicense(license)
guestRole, err := th.App.Srv().Store.Role().GetByName("system_guest") guestRole, err := th.App.Srv().Store.Role().GetByName("system_guest")
require.Nil(t, err) require.NoError(t, err)
_, resp = client.PatchRole(guestRole.Id, patch) _, resp = client.PatchRole(guestRole.Id, patch)
CheckNoError(t, resp) CheckNoError(t, resp)
}) })

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

@@ -309,7 +309,7 @@ func TestGetTeamsForScheme(t *testing.T) {
} }
team1, err := th.App.Srv().Store.Team().Save(team1) team1, err := th.App.Srv().Store.Team().Save(team1)
require.Nil(t, err) require.NoError(t, err)
l2, r2 := th.SystemAdminClient.GetTeamsForScheme(scheme1.Id, 0, 100) l2, r2 := th.SystemAdminClient.GetTeamsForScheme(scheme1.Id, 0, 100)
CheckNoError(t, r2) CheckNoError(t, r2)
@@ -317,7 +317,7 @@ func TestGetTeamsForScheme(t *testing.T) {
team1.SchemeId = &scheme1.Id team1.SchemeId = &scheme1.Id
team1, err = th.App.Srv().Store.Team().Update(team1) team1, err = th.App.Srv().Store.Team().Update(team1)
assert.Nil(t, err) assert.NoError(t, err)
l3, r3 := th.SystemAdminClient.GetTeamsForScheme(scheme1.Id, 0, 100) l3, r3 := th.SystemAdminClient.GetTeamsForScheme(scheme1.Id, 0, 100)
CheckNoError(t, r3) CheckNoError(t, r3)
@@ -331,7 +331,7 @@ func TestGetTeamsForScheme(t *testing.T) {
SchemeId: &scheme1.Id, SchemeId: &scheme1.Id,
} }
team2, err = th.App.Srv().Store.Team().Save(team2) team2, err = th.App.Srv().Store.Team().Save(team2)
require.Nil(t, err) require.NoError(t, err)
l4, r4 := th.SystemAdminClient.GetTeamsForScheme(scheme1.Id, 0, 100) l4, r4 := th.SystemAdminClient.GetTeamsForScheme(scheme1.Id, 0, 100)
CheckNoError(t, r4) CheckNoError(t, r4)
@@ -402,7 +402,7 @@ func TestGetChannelsForScheme(t *testing.T) {
} }
channel1, errCh := th.App.Srv().Store.Channel().Save(channel1, 1000000) channel1, errCh := th.App.Srv().Store.Channel().Save(channel1, 1000000)
assert.Nil(t, errCh) assert.NoError(t, errCh)
l2, r2 := th.SystemAdminClient.GetChannelsForScheme(scheme1.Id, 0, 100) l2, r2 := th.SystemAdminClient.GetChannelsForScheme(scheme1.Id, 0, 100)
CheckNoError(t, r2) CheckNoError(t, r2)
@@ -410,7 +410,7 @@ func TestGetChannelsForScheme(t *testing.T) {
channel1.SchemeId = &scheme1.Id channel1.SchemeId = &scheme1.Id
channel1, err := th.App.Srv().Store.Channel().Update(channel1) channel1, err := th.App.Srv().Store.Channel().Update(channel1)
assert.Nil(t, err) assert.NoError(t, err)
l3, r3 := th.SystemAdminClient.GetChannelsForScheme(scheme1.Id, 0, 100) l3, r3 := th.SystemAdminClient.GetChannelsForScheme(scheme1.Id, 0, 100)
CheckNoError(t, r3) CheckNoError(t, r3)
@@ -425,7 +425,7 @@ func TestGetChannelsForScheme(t *testing.T) {
SchemeId: &scheme1.Id, SchemeId: &scheme1.Id,
} }
channel2, nErr := th.App.Srv().Store.Channel().Save(channel2, 1000000) channel2, nErr := th.App.Srv().Store.Channel().Save(channel2, 1000000)
assert.Nil(t, nErr) assert.NoError(t, nErr)
l4, r4 := th.SystemAdminClient.GetChannelsForScheme(scheme1.Id, 0, 100) l4, r4 := th.SystemAdminClient.GetChannelsForScheme(scheme1.Id, 0, 100)
CheckNoError(t, r4) CheckNoError(t, r4)
@@ -627,7 +627,7 @@ func TestDeleteScheme(t *testing.T) {
Type: model.TEAM_OPEN, Type: model.TEAM_OPEN,
SchemeId: &s1.Id, SchemeId: &s1.Id,
}) })
require.Nil(t, err) require.NoError(t, err)
// Delete the Scheme. // Delete the Scheme.
_, r3 := th.SystemAdminClient.DeleteScheme(s1.Id) _, r3 := th.SystemAdminClient.DeleteScheme(s1.Id)
@@ -696,7 +696,7 @@ func TestDeleteScheme(t *testing.T) {
Type: model.CHANNEL_OPEN, Type: model.CHANNEL_OPEN,
SchemeId: &s1.Id, SchemeId: &s1.Id,
}, -1) }, -1)
assert.Nil(t, err) assert.NoError(t, err)
// Delete the Scheme. // Delete the Scheme.
_, r3 := th.SystemAdminClient.DeleteScheme(s1.Id) _, r3 := th.SystemAdminClient.DeleteScheme(s1.Id)

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

@@ -73,7 +73,7 @@ func TestGetPing(t *testing.T) {
require.Nil(t, appErr) require.Nil(t, appErr)
require.Equal(t, http.StatusOK, resp.StatusCode) require.Equal(t, http.StatusOK, resp.StatusCode)
respBytes, err := ioutil.ReadAll(resp.Body) respBytes, err := ioutil.ReadAll(resp.Body)
require.Nil(t, err) require.NoError(t, err)
respString := string(respBytes) respString := string(respBytes)
require.NotContains(t, respString, "TestFeatureFlag") require.NotContains(t, respString, "TestFeatureFlag")
@@ -86,7 +86,7 @@ func TestGetPing(t *testing.T) {
require.Nil(t, appErr) require.Nil(t, appErr)
require.Equal(t, http.StatusOK, resp.StatusCode) require.Equal(t, http.StatusOK, resp.StatusCode)
respBytes, err = ioutil.ReadAll(resp.Body) respBytes, err = ioutil.ReadAll(resp.Body)
require.Nil(t, err) require.NoError(t, err)
respString = string(respBytes) respString = string(respBytes)
require.Contains(t, respString, "testvalue") require.Contains(t, respString, "testvalue")
}, "ping feature flag test") }, "ping feature flag test")

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

@@ -1859,7 +1859,7 @@ func TestAddTeamMember(t *testing.T) {
app.TokenTypeTeamInvitation, app.TokenTypeTeamInvitation,
model.MapToJson(map[string]string{"teamId": team.Id}), model.MapToJson(map[string]string{"teamId": team.Id}),
) )
require.Nil(t, th.App.Srv().Store.Token().Save(token)) require.NoError(t, th.App.Srv().Store.Token().Save(token))
tm, resp = Client.AddTeamMemberFromInvite(token.Token, "") tm, resp = Client.AddTeamMemberFromInvite(token.Token, "")
CheckNoError(t, resp) CheckNoError(t, resp)
@@ -1871,7 +1871,7 @@ func TestAddTeamMember(t *testing.T) {
require.Equal(t, tm.TeamId, team.Id, "team ids should have matched") require.Equal(t, tm.TeamId, team.Id, "team ids should have matched")
_, nErr := th.App.Srv().Store.Token().GetByToken(token.Token) _, nErr := th.App.Srv().Store.Token().GetByToken(token.Token)
require.NotNil(t, nErr, "The token must be deleted after be used") require.Error(t, nErr, "The token must be deleted after be used")
tm, resp = Client.AddTeamMemberFromInvite("junk", "") tm, resp = Client.AddTeamMemberFromInvite("junk", "")
CheckBadRequestStatus(t, resp) CheckBadRequestStatus(t, resp)
@@ -1881,7 +1881,7 @@ func TestAddTeamMember(t *testing.T) {
// expired token of more than 50 hours // expired token of more than 50 hours
token = model.NewToken(app.TokenTypeTeamInvitation, "") token = model.NewToken(app.TokenTypeTeamInvitation, "")
token.CreateAt = model.GetMillis() - 1000*60*60*50 token.CreateAt = model.GetMillis() - 1000*60*60*50
require.Nil(t, th.App.Srv().Store.Token().Save(token)) require.NoError(t, th.App.Srv().Store.Token().Save(token))
_, resp = Client.AddTeamMemberFromInvite(token.Token, "") _, resp = Client.AddTeamMemberFromInvite(token.Token, "")
CheckBadRequestStatus(t, resp) CheckBadRequestStatus(t, resp)
@@ -1893,7 +1893,7 @@ func TestAddTeamMember(t *testing.T) {
app.TokenTypeTeamInvitation, app.TokenTypeTeamInvitation,
model.MapToJson(map[string]string{"teamId": testId}), model.MapToJson(map[string]string{"teamId": testId}),
) )
require.Nil(t, th.App.Srv().Store.Token().Save(token)) require.NoError(t, th.App.Srv().Store.Token().Save(token))
_, resp = Client.AddTeamMemberFromInvite(token.Token, "") _, resp = Client.AddTeamMemberFromInvite(token.Token, "")
CheckNotFoundStatus(t, resp) CheckNotFoundStatus(t, resp)
@@ -1935,7 +1935,7 @@ func TestAddTeamMember(t *testing.T) {
app.TokenTypeTeamInvitation, app.TokenTypeTeamInvitation,
model.MapToJson(map[string]string{"teamId": team.Id}), model.MapToJson(map[string]string{"teamId": team.Id}),
) )
require.Nil(t, th.App.Srv().Store.Token().Save(token)) require.NoError(t, th.App.Srv().Store.Token().Save(token))
tm, resp = Client.AddTeamMemberFromInvite(token.Token, "") tm, resp = Client.AddTeamMemberFromInvite(token.Token, "")
require.Equal(t, "app.team.invite_token.group_constrained.error", resp.Error.Id) require.Equal(t, "app.team.invite_token.group_constrained.error", resp.Error.Id)
@@ -2681,7 +2681,7 @@ func TestImportTeam(t *testing.T) {
CheckNoError(t, resp) CheckNoError(t, resp)
fileData, err := base64.StdEncoding.DecodeString(fileResp["results"]) fileData, err := base64.StdEncoding.DecodeString(fileResp["results"])
require.Nil(t, err, "failed to decode base64 results data") require.NoError(t, err, "failed to decode base64 results data")
fileReturned := fmt.Sprintf("%s", fileData) fileReturned := fmt.Sprintf("%s", fileData)
require.Truef(t, strings.Contains(fileReturned, "darth.vader@stardeath.com"), "failed to report the user was imported, fileReturned: %s", fileReturned) require.Truef(t, strings.Contains(fileReturned, "darth.vader@stardeath.com"), "failed to report the user was imported, fileReturned: %s", fileReturned)
@@ -3039,7 +3039,7 @@ func TestSetTeamIcon(t *testing.T) {
team := th.BasicTeam team := th.BasicTeam
data, err := testutils.ReadTestFile("test.png") data, err := testutils.ReadTestFile("test.png")
require.Nil(t, err, err) require.NoError(t, err, err)
th.LoginTeamAdmin() th.LoginTeamAdmin()
@@ -3075,19 +3075,19 @@ func TestSetTeamIcon(t *testing.T) {
require.Fail(t, "Should have failed either forbidden or unauthorized") require.Fail(t, "Should have failed either forbidden or unauthorized")
} }
teamBefore, err := th.App.GetTeam(team.Id) teamBefore, appErr := th.App.GetTeam(team.Id)
require.Nil(t, err) require.Nil(t, appErr)
_, resp = th.SystemAdminClient.SetTeamIcon(team.Id, data) _, resp = th.SystemAdminClient.SetTeamIcon(team.Id, data)
CheckNoError(t, resp) CheckNoError(t, resp)
teamAfter, err := th.App.GetTeam(team.Id) teamAfter, appErr := th.App.GetTeam(team.Id)
require.Nil(t, err) require.Nil(t, appErr)
assert.True(t, teamBefore.LastTeamIconUpdate < teamAfter.LastTeamIconUpdate, "LastTeamIconUpdate should have been updated for team") assert.True(t, teamBefore.LastTeamIconUpdate < teamAfter.LastTeamIconUpdate, "LastTeamIconUpdate should have been updated for team")
info := &model.FileInfo{Path: "teams/" + team.Id + "/teamIcon.png"} info := &model.FileInfo{Path: "teams/" + team.Id + "/teamIcon.png"}
err = th.cleanupTestFile(info) err = th.cleanupTestFile(info)
require.Nil(t, err, err) require.NoError(t, err)
} }
func TestGetTeamIcon(t *testing.T) { func TestGetTeamIcon(t *testing.T) {

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

@@ -32,7 +32,7 @@ func TestCreateUpload(t *testing.T) {
defer th.App.UpdateConfig(func(cfg *model.Config) { *cfg.FileSettings.EnableFileAttachments = true }) defer th.App.UpdateConfig(func(cfg *model.Config) { *cfg.FileSettings.EnableFileAttachments = true })
u, resp := th.Client.CreateUpload(us) u, resp := th.Client.CreateUpload(us)
require.Nil(t, u) require.Nil(t, u)
require.Error(t, resp.Error) require.NotNil(t, resp.Error)
require.Equal(t, "api.file.attachments.disabled.app_error", resp.Error.Id) require.Equal(t, "api.file.attachments.disabled.app_error", resp.Error.Id)
require.Equal(t, http.StatusNotImplemented, resp.StatusCode) require.Equal(t, http.StatusNotImplemented, resp.StatusCode)
}) })
@@ -41,7 +41,7 @@ func TestCreateUpload(t *testing.T) {
us.ChannelId = th.BasicPrivateChannel2.Id us.ChannelId = th.BasicPrivateChannel2.Id
u, resp := th.Client.CreateUpload(us) u, resp := th.Client.CreateUpload(us)
require.Nil(t, u) require.Nil(t, u)
require.Error(t, resp.Error) require.NotNil(t, resp.Error)
require.Equal(t, "api.context.permissions.app_error", resp.Error.Id) require.Equal(t, "api.context.permissions.app_error", resp.Error.Id)
require.Equal(t, http.StatusForbidden, resp.StatusCode) require.Equal(t, http.StatusForbidden, resp.StatusCode)
}) })
@@ -58,11 +58,11 @@ func TestCreateUpload(t *testing.T) {
testsDir, _ := fileutils.FindDir("tests") testsDir, _ := fileutils.FindDir("tests")
importFile, err := os.Open(testsDir + "/import_test.zip") importFile, err := os.Open(testsDir + "/import_test.zip")
require.Nil(t, err) require.NoError(t, err)
defer importFile.Close() defer importFile.Close()
info, err := importFile.Stat() info, err := importFile.Stat()
require.Nil(t, err) require.NoError(t, err)
t.Run("permissions error", func(t *testing.T) { t.Run("permissions error", func(t *testing.T) {
us := &model.UploadSession{ us := &model.UploadSession{
@@ -72,7 +72,7 @@ func TestCreateUpload(t *testing.T) {
} }
u, resp := th.Client.CreateUpload(us) u, resp := th.Client.CreateUpload(us)
require.Nil(t, u) require.Nil(t, u)
require.Error(t, resp.Error) require.NotNil(t, resp.Error)
require.Equal(t, "api.context.permissions.app_error", resp.Error.Id) require.Equal(t, "api.context.permissions.app_error", resp.Error.Id)
require.Equal(t, http.StatusForbidden, resp.StatusCode) require.Equal(t, http.StatusForbidden, resp.StatusCode)
}) })
@@ -111,7 +111,7 @@ func TestGetUpload(t *testing.T) {
t.Run("upload not found", func(t *testing.T) { t.Run("upload not found", func(t *testing.T) {
u, resp := th.Client.GetUpload(model.NewId()) u, resp := th.Client.GetUpload(model.NewId())
require.Nil(t, u) require.Nil(t, u)
require.Error(t, resp.Error) require.NotNil(t, resp.Error)
require.Equal(t, "app.upload.get.app_error", resp.Error.Id) require.Equal(t, "app.upload.get.app_error", resp.Error.Id)
require.Equal(t, http.StatusNotFound, resp.StatusCode) require.Equal(t, http.StatusNotFound, resp.StatusCode)
}) })
@@ -119,7 +119,7 @@ func TestGetUpload(t *testing.T) {
t.Run("no permissions", func(t *testing.T) { t.Run("no permissions", func(t *testing.T) {
u, resp := th.Client.GetUpload(us.Id) u, resp := th.Client.GetUpload(us.Id)
require.Nil(t, u) require.Nil(t, u)
require.Error(t, resp.Error) require.NotNil(t, resp.Error)
require.Equal(t, "api.upload.get_upload.forbidden.app_error", resp.Error.Id) require.Equal(t, "api.upload.get_upload.forbidden.app_error", resp.Error.Id)
}) })
@@ -142,7 +142,7 @@ func TestGetUploadsForUser(t *testing.T) {
t.Run("no permissions", func(t *testing.T) { t.Run("no permissions", func(t *testing.T) {
uss, resp := th.Client.GetUploadsForUser(th.BasicUser2.Id) uss, resp := th.Client.GetUploadsForUser(th.BasicUser2.Id)
require.Error(t, resp.Error) require.NotNil(t, resp.Error)
require.Equal(t, "api.user.get_uploads_for_user.forbidden.app_error", resp.Error.Id) require.Equal(t, "api.user.get_uploads_for_user.forbidden.app_error", resp.Error.Id)
require.Nil(t, uss) require.Nil(t, uss)
}) })
@@ -211,14 +211,14 @@ func TestUploadData(t *testing.T) {
defer th.App.UpdateConfig(func(cfg *model.Config) { *cfg.FileSettings.EnableFileAttachments = true }) defer th.App.UpdateConfig(func(cfg *model.Config) { *cfg.FileSettings.EnableFileAttachments = true })
info, resp := th.Client.UploadData(model.NewId(), bytes.NewReader(data)) info, resp := th.Client.UploadData(model.NewId(), bytes.NewReader(data))
require.Nil(t, info) require.Nil(t, info)
require.Error(t, resp.Error) require.NotNil(t, resp.Error)
require.Equal(t, "api.file.attachments.disabled.app_error", resp.Error.Id) require.Equal(t, "api.file.attachments.disabled.app_error", resp.Error.Id)
}) })
t.Run("upload not found", func(t *testing.T) { t.Run("upload not found", func(t *testing.T) {
info, resp := th.Client.UploadData(model.NewId(), bytes.NewReader(data)) info, resp := th.Client.UploadData(model.NewId(), bytes.NewReader(data))
require.Nil(t, info) require.Nil(t, info)
require.Error(t, resp.Error) require.NotNil(t, resp.Error)
require.Equal(t, "app.upload.get.app_error", resp.Error.Id) require.Equal(t, "app.upload.get.app_error", resp.Error.Id)
require.Equal(t, http.StatusNotFound, resp.StatusCode) require.Equal(t, http.StatusNotFound, resp.StatusCode)
}) })
@@ -226,7 +226,7 @@ func TestUploadData(t *testing.T) {
t.Run("no permissions", func(t *testing.T) { t.Run("no permissions", func(t *testing.T) {
info, resp := th.Client.UploadData(us.Id, bytes.NewReader(data)) info, resp := th.Client.UploadData(us.Id, bytes.NewReader(data))
require.Nil(t, info) require.Nil(t, info)
require.Error(t, resp.Error) require.NotNil(t, resp.Error)
require.Equal(t, "api.context.permissions.app_error", resp.Error.Id) require.Equal(t, "api.context.permissions.app_error", resp.Error.Id)
}) })
@@ -238,7 +238,7 @@ func TestUploadData(t *testing.T) {
info, resp := th.Client.UploadData(u.Id, bytes.NewReader(append(data, 0x00))) info, resp := th.Client.UploadData(u.Id, bytes.NewReader(append(data, 0x00)))
require.Nil(t, info) require.Nil(t, info)
require.Error(t, resp.Error) require.NotNil(t, resp.Error)
require.Equal(t, "api.upload.upload_data.invalid_content_length", resp.Error.Id) require.Equal(t, "api.upload.upload_data.invalid_content_length", resp.Error.Id)
}) })
@@ -311,19 +311,19 @@ func TestUploadDataMultipart(t *testing.T) {
mpData := &bytes.Buffer{} mpData := &bytes.Buffer{}
mpWriter := multipart.NewWriter(mpData) mpWriter := multipart.NewWriter(mpData)
part, err := mpWriter.CreateFormFile("data", us.Filename) part, err := mpWriter.CreateFormFile("data", us.Filename)
require.Nil(t, err) require.NoError(t, err)
n, err := part.Write(data) n, err := part.Write(data)
require.Nil(t, err) require.NoError(t, err)
require.Equal(t, len(data), n) require.Equal(t, len(data), n)
err = mpWriter.Close() err = mpWriter.Close()
require.Nil(t, err) require.NoError(t, err)
return mpData, mpWriter.FormDataContentType() return mpData, mpWriter.FormDataContentType()
} }
t.Run("bad content-type", func(t *testing.T) { t.Run("bad content-type", func(t *testing.T) {
info, resp := th.Client.DoUploadFile("/uploads/"+us.Id, data, "multipart/form-data;") info, resp := th.Client.DoUploadFile("/uploads/"+us.Id, data, "multipart/form-data;")
require.Nil(t, info) require.Nil(t, info)
require.Error(t, resp.Error) require.NotNil(t, resp.Error)
require.Equal(t, "api.upload.upload_data.invalid_content_type", resp.Error.Id) require.Equal(t, "api.upload.upload_data.invalid_content_type", resp.Error.Id)
}) })
@@ -331,11 +331,11 @@ func TestUploadDataMultipart(t *testing.T) {
mpData, contentType := genMultipartData(t, data) mpData, contentType := genMultipartData(t, data)
req, err := http.NewRequest("POST", th.Client.ApiUrl+"/uploads/"+us.Id, mpData) req, err := http.NewRequest("POST", th.Client.ApiUrl+"/uploads/"+us.Id, mpData)
require.Nil(t, err) require.NoError(t, err)
req.Header.Set("Content-Type", contentType) req.Header.Set("Content-Type", contentType)
req.Header.Set(model.HEADER_AUTH, th.Client.AuthType+" "+th.Client.AuthToken) req.Header.Set(model.HEADER_AUTH, th.Client.AuthType+" "+th.Client.AuthToken)
res, err := th.Client.HttpClient.Do(req) res, err := th.Client.HttpClient.Do(req)
require.Nil(t, err) require.NoError(t, err)
info := model.FileInfoFromJson(res.Body) info := model.FileInfoFromJson(res.Body)
res.Body.Close() res.Body.Close()
require.NotEmpty(t, info) require.NotEmpty(t, info)
@@ -355,22 +355,22 @@ func TestUploadDataMultipart(t *testing.T) {
require.NotEmpty(t, u) require.NotEmpty(t, u)
req, err := http.NewRequest("POST", th.Client.ApiUrl+"/uploads/"+u.Id, mpData) req, err := http.NewRequest("POST", th.Client.ApiUrl+"/uploads/"+u.Id, mpData)
require.Nil(t, err) require.NoError(t, err)
req.Header.Set("Content-Type", contentType) req.Header.Set("Content-Type", contentType)
req.Header.Set(model.HEADER_AUTH, th.Client.AuthType+" "+th.Client.AuthToken) req.Header.Set(model.HEADER_AUTH, th.Client.AuthType+" "+th.Client.AuthToken)
res, err := th.Client.HttpClient.Do(req) res, err := th.Client.HttpClient.Do(req)
require.Nil(t, err) require.NoError(t, err)
require.Equal(t, http.StatusNoContent, res.StatusCode) require.Equal(t, http.StatusNoContent, res.StatusCode)
require.Equal(t, int64(0), res.ContentLength) require.Equal(t, int64(0), res.ContentLength)
mpData, contentType = genMultipartData(t, data[5*1024*1024:]) mpData, contentType = genMultipartData(t, data[5*1024*1024:])
req, err = http.NewRequest("POST", th.Client.ApiUrl+"/uploads/"+u.Id, mpData) req, err = http.NewRequest("POST", th.Client.ApiUrl+"/uploads/"+u.Id, mpData)
require.Nil(t, err) require.NoError(t, err)
req.Header.Set("Content-Type", contentType) req.Header.Set("Content-Type", contentType)
req.Header.Set(model.HEADER_AUTH, th.Client.AuthType+" "+th.Client.AuthToken) req.Header.Set(model.HEADER_AUTH, th.Client.AuthType+" "+th.Client.AuthToken)
res, err = th.Client.HttpClient.Do(req) res, err = th.Client.HttpClient.Do(req)
require.Nil(t, err) require.NoError(t, err)
info := model.FileInfoFromJson(res.Body) info := model.FileInfoFromJson(res.Body)
res.Body.Close() res.Body.Close()
require.NotEmpty(t, info) require.NotEmpty(t, info)

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

@@ -199,7 +199,7 @@ func TestCreateUserWithToken(t *testing.T) {
app.TokenTypeTeamInvitation, app.TokenTypeTeamInvitation,
model.MapToJson(map[string]string{"teamId": th.BasicTeam.Id, "email": user.Email}), model.MapToJson(map[string]string{"teamId": th.BasicTeam.Id, "email": user.Email}),
) )
require.Nil(t, th.App.Srv().Store.Token().Save(token)) require.NoError(t, th.App.Srv().Store.Token().Save(token))
ruser, resp := th.Client.CreateUserWithToken(&user, token.Token) ruser, resp := th.Client.CreateUserWithToken(&user, token.Token)
CheckNoError(t, resp) CheckNoError(t, resp)
@@ -210,10 +210,10 @@ func TestCreateUserWithToken(t *testing.T) {
require.Equal(t, model.SYSTEM_USER_ROLE_ID, ruser.Roles, "should clear roles") require.Equal(t, model.SYSTEM_USER_ROLE_ID, ruser.Roles, "should clear roles")
CheckUserSanitization(t, ruser) CheckUserSanitization(t, ruser)
_, err := th.App.Srv().Store.Token().GetByToken(token.Token) _, err := th.App.Srv().Store.Token().GetByToken(token.Token)
require.NotNil(t, err, "The token must be deleted after being used") require.Error(t, err, "The token must be deleted after being used")
teams, err := th.App.GetTeamsForUser(ruser.Id) teams, appErr := th.App.GetTeamsForUser(ruser.Id)
require.Nil(t, err) require.Nil(t, appErr)
require.NotEmpty(t, teams, "The user must have teams") require.NotEmpty(t, teams, "The user must have teams")
require.Equal(t, th.BasicTeam.Id, teams[0].Id, "The user joined team must be the team provided.") require.Equal(t, th.BasicTeam.Id, teams[0].Id, "The user joined team must be the team provided.")
}) })
@@ -224,7 +224,7 @@ func TestCreateUserWithToken(t *testing.T) {
app.TokenTypeTeamInvitation, app.TokenTypeTeamInvitation,
model.MapToJson(map[string]string{"teamId": th.BasicTeam.Id, "email": user.Email}), model.MapToJson(map[string]string{"teamId": th.BasicTeam.Id, "email": user.Email}),
) )
require.Nil(t, th.App.Srv().Store.Token().Save(token)) require.NoError(t, th.App.Srv().Store.Token().Save(token))
ruser, resp := client.CreateUserWithToken(&user, token.Token) ruser, resp := client.CreateUserWithToken(&user, token.Token)
CheckNoError(t, resp) CheckNoError(t, resp)
@@ -235,10 +235,10 @@ func TestCreateUserWithToken(t *testing.T) {
require.Equal(t, model.SYSTEM_USER_ROLE_ID, ruser.Roles, "should clear roles") require.Equal(t, model.SYSTEM_USER_ROLE_ID, ruser.Roles, "should clear roles")
CheckUserSanitization(t, ruser) CheckUserSanitization(t, ruser)
_, err := th.App.Srv().Store.Token().GetByToken(token.Token) _, err := th.App.Srv().Store.Token().GetByToken(token.Token)
require.NotNil(t, err, "The token must be deleted after being used") require.Error(t, err, "The token must be deleted after being used")
teams, err := th.App.GetTeamsForUser(ruser.Id) teams, appErr := th.App.GetTeamsForUser(ruser.Id)
require.Nil(t, err) require.Nil(t, appErr)
require.NotEmpty(t, teams, "The user must have teams") require.NotEmpty(t, teams, "The user must have teams")
require.Equal(t, th.BasicTeam.Id, teams[0].Id, "The user joined team must be the team provided.") require.Equal(t, th.BasicTeam.Id, teams[0].Id, "The user joined team must be the team provided.")
}, "CreateWithTokenHappyPath") }, "CreateWithTokenHappyPath")
@@ -249,7 +249,7 @@ func TestCreateUserWithToken(t *testing.T) {
app.TokenTypeTeamInvitation, app.TokenTypeTeamInvitation,
model.MapToJson(map[string]string{"teamId": th.BasicTeam.Id, "email": user.Email}), model.MapToJson(map[string]string{"teamId": th.BasicTeam.Id, "email": user.Email}),
) )
require.Nil(t, th.App.Srv().Store.Token().Save(token)) require.NoError(t, th.App.Srv().Store.Token().Save(token))
defer th.App.DeleteToken(token) defer th.App.DeleteToken(token)
_, resp := th.Client.CreateUserWithToken(&user, "") _, resp := th.Client.CreateUserWithToken(&user, "")
@@ -266,7 +266,7 @@ func TestCreateUserWithToken(t *testing.T) {
model.MapToJson(map[string]string{"teamId": th.BasicTeam.Id, "email": user.Email}), model.MapToJson(map[string]string{"teamId": th.BasicTeam.Id, "email": user.Email}),
) )
token.CreateAt = past49Hours token.CreateAt = past49Hours
require.Nil(t, th.App.Srv().Store.Token().Save(token)) require.NoError(t, th.App.Srv().Store.Token().Save(token))
defer th.App.DeleteToken(token) defer th.App.DeleteToken(token)
_, resp := th.Client.CreateUserWithToken(&user, token.Token) _, resp := th.Client.CreateUserWithToken(&user, token.Token)
@@ -295,7 +295,7 @@ func TestCreateUserWithToken(t *testing.T) {
app.TokenTypeTeamInvitation, app.TokenTypeTeamInvitation,
model.MapToJson(map[string]string{"teamId": th.BasicTeam.Id, "email": user.Email}), model.MapToJson(map[string]string{"teamId": th.BasicTeam.Id, "email": user.Email}),
) )
require.Nil(t, th.App.Srv().Store.Token().Save(token)) require.NoError(t, th.App.Srv().Store.Token().Save(token))
defer th.App.DeleteToken(token) defer th.App.DeleteToken(token)
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.EnableUserCreation = false }) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.EnableUserCreation = false })
@@ -315,7 +315,7 @@ func TestCreateUserWithToken(t *testing.T) {
app.TokenTypeTeamInvitation, app.TokenTypeTeamInvitation,
model.MapToJson(map[string]string{"teamId": th.BasicTeam.Id, "email": user.Email}), model.MapToJson(map[string]string{"teamId": th.BasicTeam.Id, "email": user.Email}),
) )
require.Nil(t, th.App.Srv().Store.Token().Save(token)) require.NoError(t, th.App.Srv().Store.Token().Save(token))
defer th.App.DeleteToken(token) defer th.App.DeleteToken(token)
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.EnableUserCreation = false }) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.EnableUserCreation = false })
@@ -332,7 +332,7 @@ func TestCreateUserWithToken(t *testing.T) {
app.TokenTypeTeamInvitation, app.TokenTypeTeamInvitation,
model.MapToJson(map[string]string{"teamId": th.BasicTeam.Id, "email": user.Email}), model.MapToJson(map[string]string{"teamId": th.BasicTeam.Id, "email": user.Email}),
) )
require.Nil(t, th.App.Srv().Store.Token().Save(token)) require.NoError(t, th.App.Srv().Store.Token().Save(token))
enableOpenServer := th.App.Config().TeamSettings.EnableOpenServer enableOpenServer := th.App.Config().TeamSettings.EnableOpenServer
defer func() { defer func() {
@@ -350,7 +350,7 @@ func TestCreateUserWithToken(t *testing.T) {
require.Equal(t, model.SYSTEM_USER_ROLE_ID, ruser.Roles, "should clear roles") require.Equal(t, model.SYSTEM_USER_ROLE_ID, ruser.Roles, "should clear roles")
CheckUserSanitization(t, ruser) CheckUserSanitization(t, ruser)
_, err := th.App.Srv().Store.Token().GetByToken(token.Token) _, err := th.App.Srv().Store.Token().GetByToken(token.Token)
require.NotNil(t, err, "The token must be deleted after be used") require.Error(t, err, "The token must be deleted after be used")
}) })
} }
@@ -1658,7 +1658,7 @@ func TestUpdateUser(t *testing.T) {
CheckForbiddenStatus(t, resp) CheckForbiddenStatus(t, resp)
r, err := th.Client.DoApiPut("/users/"+ruser.Id, "garbage") r, err := th.Client.DoApiPut("/users/"+ruser.Id, "garbage")
require.Error(t, err) require.NotNil(t, err)
require.Equal(t, http.StatusBadRequest, r.StatusCode) require.Equal(t, http.StatusBadRequest, r.StatusCode)
session, _ := th.App.GetSession(th.Client.AuthToken) session, _ := th.App.GetSession(th.Client.AuthToken)
@@ -1720,7 +1720,7 @@ func TestPatchUser(t *testing.T) {
require.Empty(t, ruser.Timezone["manualTimezone"], "manualTimezone should update properly") require.Empty(t, ruser.Timezone["manualTimezone"], "manualTimezone should update properly")
err := th.App.CheckPasswordAndAllCriteria(ruser, *patch.Password, "") err := th.App.CheckPasswordAndAllCriteria(ruser, *patch.Password, "")
assert.Error(t, err, "Password should not match") require.NotNil(t, err, "Password should not match")
currentPassword := user.Password currentPassword := user.Password
user, err = th.App.GetUser(ruser.Id) user, err = th.App.GetUser(ruser.Id)
@@ -1755,7 +1755,7 @@ func TestPatchUser(t *testing.T) {
CheckForbiddenStatus(t, resp) CheckForbiddenStatus(t, resp)
r, err := th.Client.DoApiPut("/users/"+user.Id+"/patch", "garbage") r, err := th.Client.DoApiPut("/users/"+user.Id+"/patch", "garbage")
require.Error(t, err) require.NotNil(t, err)
require.Equal(t, http.StatusBadRequest, r.StatusCode) require.Equal(t, http.StatusBadRequest, r.StatusCode)
session, _ := th.App.GetSession(th.Client.AuthToken) session, _ := th.App.GetSession(th.Client.AuthToken)
@@ -1851,7 +1851,7 @@ func TestUpdateUserAuth(t *testing.T) {
th.LinkUserToTeam(user, team) th.LinkUserToTeam(user, team)
_, err := th.App.Srv().Store.User().VerifyEmail(user.Id, user.Email) _, err := th.App.Srv().Store.User().VerifyEmail(user.Id, user.Email)
require.Nil(t, err) require.NoError(t, err)
userAuth := &model.UserAuth{} userAuth := &model.UserAuth{}
userAuth.AuthData = user.AuthData userAuth.AuthData = user.AuthData
@@ -1884,7 +1884,7 @@ func TestUpdateUserAuth(t *testing.T) {
user2 := th.CreateUser() user2 := th.CreateUser()
th.LinkUserToTeam(user2, team) th.LinkUserToTeam(user2, team)
_, err = th.App.Srv().Store.User().VerifyEmail(user2.Id, user2.Email) _, err = th.App.Srv().Store.User().VerifyEmail(user2.Id, user2.Email)
require.Nil(t, err) require.NoError(t, err)
th.SystemAdminClient.Login(user2.Email, "passwd1") th.SystemAdminClient.Login(user2.Email, "passwd1")
@@ -2010,11 +2010,11 @@ func TestPermanentDeleteAllUsers(t *testing.T) {
// Check that we have users and posts in the database // Check that we have users and posts in the database
users, nErr := th.App.Srv().Store.User().GetAll() users, nErr := th.App.Srv().Store.User().GetAll()
require.Nil(t, nErr) require.NoError(t, nErr)
require.Greater(t, len(users), 0) require.Greater(t, len(users), 0)
postCount, nErr := th.App.Srv().Store.Post().AnalyticsPostCount("", false, false) postCount, nErr := th.App.Srv().Store.Post().AnalyticsPostCount("", false, false)
require.Nil(t, nErr) require.NoError(t, nErr)
require.Greater(t, postCount, int64(0)) require.Greater(t, postCount, int64(0))
// Delete all users and their posts // Delete all users and their posts
@@ -2023,11 +2023,11 @@ func TestPermanentDeleteAllUsers(t *testing.T) {
// Check that both user and post tables are empty // Check that both user and post tables are empty
users, nErr = th.App.Srv().Store.User().GetAll() users, nErr = th.App.Srv().Store.User().GetAll()
require.Nil(t, nErr) require.NoError(t, nErr)
require.Len(t, users, 0) require.Len(t, users, 0)
postCount, nErr = th.App.Srv().Store.Post().AnalyticsPostCount("", false, false) postCount, nErr = th.App.Srv().Store.Post().AnalyticsPostCount("", false, false)
require.Nil(t, nErr) require.NoError(t, nErr)
require.Equal(t, postCount, int64(0)) require.Equal(t, postCount, int64(0))
// Check that the channel and team created by the user were not deleted // Check that the channel and team created by the user were not deleted
@@ -2139,7 +2139,7 @@ func TestUpdateUserActive(t *testing.T) {
authData := model.NewId() authData := model.NewId()
_, err := th.App.Srv().Store.User().UpdateAuthData(user.Id, "random", &authData, "", true) _, err := th.App.Srv().Store.User().UpdateAuthData(user.Id, "random", &authData, "", true)
require.Nil(t, err) require.NoError(t, err)
_, resp = client.UpdateUserActive(user.Id, false) _, resp = client.UpdateUserActive(user.Id, false)
CheckNoError(t, resp) CheckNoError(t, resp)
@@ -2361,7 +2361,7 @@ func TestGetUsersWithoutTeam(t *testing.T) {
defer th.TearDown() defer th.TearDown()
_, resp := th.Client.GetUsersWithoutTeam(0, 100, "") _, resp := th.Client.GetUsersWithoutTeam(0, 100, "")
require.Error(t, resp.Error, "should prevent non-admin user from getting users without a team") require.NotNil(t, resp.Error, "should prevent non-admin user from getting users without a team")
// These usernames need to appear in the first 100 users for this to work // These usernames need to appear in the first 100 users for this to work
@@ -2687,13 +2687,13 @@ func TestUserLoginMFAFlow(t *testing.T) {
// Fake user has MFA enabled // Fake user has MFA enabled
nErr := th.Server.Store.User().UpdateMfaActive(th.BasicUser.Id, true) nErr := th.Server.Store.User().UpdateMfaActive(th.BasicUser.Id, true)
require.Nil(t, nErr) require.NoError(t, nErr)
nErr = th.Server.Store.User().UpdateMfaActive(th.BasicUser.Id, true) nErr = th.Server.Store.User().UpdateMfaActive(th.BasicUser.Id, true)
require.Nil(t, nErr) require.NoError(t, nErr)
nErr = th.Server.Store.User().UpdateMfaSecret(th.BasicUser.Id, secret.Secret) nErr = th.Server.Store.User().UpdateMfaSecret(th.BasicUser.Id, secret.Secret)
require.Nil(t, nErr) require.NoError(t, nErr)
user, resp := th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) user, resp := th.Client.Login(th.BasicUser.Email, th.BasicUser.Password)
CheckErrorMessage(t, resp, "mfa.validate_token.authenticate.app_error") CheckErrorMessage(t, resp, "mfa.validate_token.authenticate.app_error")
@@ -2720,10 +2720,10 @@ func TestUserLoginMFAFlow(t *testing.T) {
// Fake user has MFA enabled // Fake user has MFA enabled
nErr := th.Server.Store.User().UpdateMfaActive(th.BasicUser.Id, true) nErr := th.Server.Store.User().UpdateMfaActive(th.BasicUser.Id, true)
require.Nil(t, nErr) require.NoError(t, nErr)
nErr = th.Server.Store.User().UpdateMfaSecret(th.BasicUser.Id, secret.Secret) nErr = th.Server.Store.User().UpdateMfaSecret(th.BasicUser.Id, secret.Secret)
require.Nil(t, nErr) require.NoError(t, nErr)
code := dgoogauth.ComputeCode(secret.Secret, time.Now().UTC().Unix()/30) code := dgoogauth.ComputeCode(secret.Secret, time.Now().UTC().Unix()/30)
@@ -2895,7 +2895,7 @@ func TestResetPassword(t *testing.T) {
recoveryTokenString = resultsEmail.Body.Text[loc : loc+model.TOKEN_SIZE] recoveryTokenString = resultsEmail.Body.Text[loc : loc+model.TOKEN_SIZE]
} }
recoveryToken, err := th.App.Srv().Store.Token().GetByToken(recoveryTokenString) recoveryToken, err := th.App.Srv().Store.Token().GetByToken(recoveryTokenString)
require.Nil(t, err, "Recovery token not found (%s)", recoveryTokenString) require.NoError(t, err, "Recovery token not found (%s)", recoveryTokenString)
_, resp := th.Client.ResetPassword(recoveryToken.Token, "") _, resp := th.Client.ResetPassword(recoveryToken.Token, "")
CheckBadRequestStatus(t, resp) CheckBadRequestStatus(t, resp)
@@ -2920,7 +2920,7 @@ func TestResetPassword(t *testing.T) {
CheckBadRequestStatus(t, resp) CheckBadRequestStatus(t, resp)
authData := model.NewId() authData := model.NewId()
_, err = th.App.Srv().Store.User().UpdateAuthData(user.Id, "random", &authData, "", true) _, err = th.App.Srv().Store.User().UpdateAuthData(user.Id, "random", &authData, "", true)
require.Nil(t, err) require.NoError(t, err)
th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { th.TestForAllClients(t, func(t *testing.T, client *model.Client4) {
_, resp = client.SendPasswordResetEmail(user.Email) _, resp = client.SendPasswordResetEmail(user.Email)
CheckBadRequestStatus(t, resp) CheckBadRequestStatus(t, resp)
@@ -3070,10 +3070,10 @@ func TestRevokeSessionsFromAllUsers(t *testing.T) {
th.Client.Login(admin.Email, admin.Password) th.Client.Login(admin.Email, admin.Password)
sessions, err := th.Server.Store.Session().GetSessions(user.Id) sessions, err := th.Server.Store.Session().GetSessions(user.Id)
require.NotEmpty(t, sessions) require.NotEmpty(t, sessions)
require.Nil(t, err) require.NoError(t, err)
sessions, err = th.Server.Store.Session().GetSessions(admin.Id) sessions, err = th.Server.Store.Session().GetSessions(admin.Id)
require.NotEmpty(t, sessions) require.NotEmpty(t, sessions)
require.Nil(t, err) require.NoError(t, err)
_, resp = th.Client.RevokeSessionsFromAllUsers() _, resp = th.Client.RevokeSessionsFromAllUsers()
CheckNoError(t, resp) CheckNoError(t, resp)
@@ -3084,11 +3084,11 @@ func TestRevokeSessionsFromAllUsers(t *testing.T) {
sessions, err = th.Server.Store.Session().GetSessions(user.Id) sessions, err = th.Server.Store.Session().GetSessions(user.Id)
require.Empty(t, sessions) require.Empty(t, sessions)
require.Nil(t, err) require.NoError(t, err)
sessions, err = th.Server.Store.Session().GetSessions(admin.Id) sessions, err = th.Server.Store.Session().GetSessions(admin.Id)
require.Empty(t, sessions) require.Empty(t, sessions)
require.Nil(t, err) require.NoError(t, err)
} }
@@ -3235,19 +3235,19 @@ func TestSetProfileImage(t *testing.T) {
require.Fail(t, "Should have failed either forbidden or unauthorized") require.Fail(t, "Should have failed either forbidden or unauthorized")
} }
buser, err := th.App.GetUser(user.Id) buser, appErr := th.App.GetUser(user.Id)
require.Nil(t, err) require.Nil(t, appErr)
_, resp = th.SystemAdminClient.SetProfileImage(user.Id, data) _, resp = th.SystemAdminClient.SetProfileImage(user.Id, data)
CheckNoError(t, resp) CheckNoError(t, resp)
ruser, err := th.App.GetUser(user.Id) ruser, appErr := th.App.GetUser(user.Id)
require.Nil(t, err) require.Nil(t, appErr)
assert.True(t, buser.LastPictureUpdate < ruser.LastPictureUpdate, "Picture should have updated for user") assert.True(t, buser.LastPictureUpdate < ruser.LastPictureUpdate, "Picture should have updated for user")
info := &model.FileInfo{Path: "users/" + user.Id + "/profile.png"} info := &model.FileInfo{Path: "users/" + user.Id + "/profile.png"}
err = th.cleanupTestFile(info) err = th.cleanupTestFile(info)
require.Nil(t, err) require.NoError(t, err)
} }
func TestSetDefaultProfileImage(t *testing.T) { func TestSetDefaultProfileImage(t *testing.T) {
@@ -3284,7 +3284,7 @@ func TestSetDefaultProfileImage(t *testing.T) {
info := &model.FileInfo{Path: "users/" + user.Id + "/profile.png"} info := &model.FileInfo{Path: "users/" + user.Id + "/profile.png"}
cleanupErr := th.cleanupTestFile(info) cleanupErr := th.cleanupTestFile(info)
require.Nil(t, cleanupErr) require.NoError(t, cleanupErr)
} }
func TestLogin(t *testing.T) { func TestLogin(t *testing.T) {
@@ -3594,7 +3594,7 @@ func TestSwitchAccount(t *testing.T) {
fakeAuthData := model.NewId() fakeAuthData := model.NewId()
_, err := th.App.Srv().Store.User().UpdateAuthData(th.BasicUser.Id, model.USER_AUTH_SERVICE_GITLAB, &fakeAuthData, th.BasicUser.Email, true) _, err := th.App.Srv().Store.User().UpdateAuthData(th.BasicUser.Id, model.USER_AUTH_SERVICE_GITLAB, &fakeAuthData, th.BasicUser.Email, true)
require.Nil(t, err) require.NoError(t, err)
sr = &model.SwitchRequest{ sr = &model.SwitchRequest{
CurrentService: model.USER_AUTH_SERVICE_GITLAB, CurrentService: model.USER_AUTH_SERVICE_GITLAB,
@@ -4850,7 +4850,7 @@ func TestLoginLockout(t *testing.T) {
// Fake user has MFA enabled // Fake user has MFA enabled
err := th.Server.Store.User().UpdateMfaActive(th.BasicUser2.Id, true) err := th.Server.Store.User().UpdateMfaActive(th.BasicUser2.Id, true)
require.Nil(t, err) require.NoError(t, err)
_, resp = th.Client.LoginWithMFA(th.BasicUser2.Email, th.BasicUser2.Password, "000000") _, resp = th.Client.LoginWithMFA(th.BasicUser2.Email, th.BasicUser2.Password, "000000")
CheckErrorMessage(t, resp, "api.user.check_user_mfa.bad_code.app_error") CheckErrorMessage(t, resp, "api.user.check_user_mfa.bad_code.app_error")
_, resp = th.Client.LoginWithMFA(th.BasicUser2.Email, th.BasicUser2.Password, "000000") _, resp = th.Client.LoginWithMFA(th.BasicUser2.Email, th.BasicUser2.Password, "000000")
@@ -4864,7 +4864,7 @@ func TestLoginLockout(t *testing.T) {
// Fake user has MFA disabled // Fake user has MFA disabled
err = th.Server.Store.User().UpdateMfaActive(th.BasicUser2.Id, false) err = th.Server.Store.User().UpdateMfaActive(th.BasicUser2.Id, false)
require.Nil(t, err) require.NoError(t, err)
//Check if lock is active //Check if lock is active
_, resp = th.Client.Login(th.BasicUser2.Email, th.BasicUser2.Password) _, resp = th.Client.Login(th.BasicUser2.Email, th.BasicUser2.Password)
@@ -5476,7 +5476,7 @@ func TestThreadSocketEvents(t *testing.T) {
if ev.EventType() == model.WEBSOCKET_EVENT_THREAD_UPDATED { if ev.EventType() == model.WEBSOCKET_EVENT_THREAD_UPDATED {
caught = true caught = true
thread, err := model.ThreadFromJson(ev.GetData()["thread"].(string)) thread, err := model.ThreadFromJson(ev.GetData()["thread"].(string))
require.Nil(t, err) require.NoError(t, err)
require.Contains(t, thread.Participants, th.BasicUser.Id) require.Contains(t, thread.Participants, th.BasicUser.Id)
require.Contains(t, thread.Participants, th.BasicUser2.Id) require.Contains(t, thread.Participants, th.BasicUser2.Id)
} }

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

@@ -160,41 +160,41 @@ func TestWebsocketOriginSecurity(t *testing.T) {
"Origin": []string{"http://www.evil.com"}, "Origin": []string{"http://www.evil.com"},
}) })
require.NotNil(t, err, "Should have errored because Origin does not match host! SECURITY ISSUE!") require.Error(t, err, "Should have errored because Origin does not match host! SECURITY ISSUE!")
// We are not a browser so we can spoof this just fine // We are not a browser so we can spoof this just fine
_, _, err = websocket.DefaultDialer.Dial(url+model.API_URL_SUFFIX+"/websocket", http.Header{ _, _, err = websocket.DefaultDialer.Dial(url+model.API_URL_SUFFIX+"/websocket", http.Header{
"Origin": []string{fmt.Sprintf("http://localhost:%v", th.App.Srv().ListenAddr.Port)}, "Origin": []string{fmt.Sprintf("http://localhost:%v", th.App.Srv().ListenAddr.Port)},
}) })
require.Nil(t, err, err) require.NoError(t, err, err)
// Should succeed now because open CORS // Should succeed now because open CORS
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.AllowCorsFrom = "*" }) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.AllowCorsFrom = "*" })
_, _, err = websocket.DefaultDialer.Dial(url+model.API_URL_SUFFIX+"/websocket", http.Header{ _, _, err = websocket.DefaultDialer.Dial(url+model.API_URL_SUFFIX+"/websocket", http.Header{
"Origin": []string{"http://www.evil.com"}, "Origin": []string{"http://www.evil.com"},
}) })
require.Nil(t, err, err) require.NoError(t, err, err)
// Should succeed now because matching CORS // Should succeed now because matching CORS
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.AllowCorsFrom = "http://www.evil.com" }) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.AllowCorsFrom = "http://www.evil.com" })
_, _, err = websocket.DefaultDialer.Dial(url+model.API_URL_SUFFIX+"/websocket", http.Header{ _, _, err = websocket.DefaultDialer.Dial(url+model.API_URL_SUFFIX+"/websocket", http.Header{
"Origin": []string{"http://www.evil.com"}, "Origin": []string{"http://www.evil.com"},
}) })
require.Nil(t, err, err) require.NoError(t, err, err)
// Should fail because non-matching CORS // Should fail because non-matching CORS
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.AllowCorsFrom = "http://www.good.com" }) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.AllowCorsFrom = "http://www.good.com" })
_, _, err = websocket.DefaultDialer.Dial(url+model.API_URL_SUFFIX+"/websocket", http.Header{ _, _, err = websocket.DefaultDialer.Dial(url+model.API_URL_SUFFIX+"/websocket", http.Header{
"Origin": []string{"http://www.evil.com"}, "Origin": []string{"http://www.evil.com"},
}) })
require.NotNil(t, err, "Should have errored because Origin contain AllowCorsFrom") require.Error(t, err, "Should have errored because Origin contain AllowCorsFrom")
// Should fail because non-matching CORS // Should fail because non-matching CORS
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.AllowCorsFrom = "http://www.good.com" }) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.AllowCorsFrom = "http://www.good.com" })
_, _, err = websocket.DefaultDialer.Dial(url+model.API_URL_SUFFIX+"/websocket", http.Header{ _, _, err = websocket.DefaultDialer.Dial(url+model.API_URL_SUFFIX+"/websocket", http.Header{
"Origin": []string{"http://www.good.co"}, "Origin": []string{"http://www.good.co"},
}) })
require.NotNil(t, err, "Should have errored because Origin does not match host! SECURITY ISSUE!") require.Error(t, err, "Should have errored because Origin does not match host! SECURITY ISSUE!")
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.AllowCorsFrom = "" }) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.AllowCorsFrom = "" })
} }
@@ -219,13 +219,13 @@ func TestWebSocketStatuses(t *testing.T) {
ruser := Client.Must(Client.CreateUser(&user)).(*model.User) ruser := Client.Must(Client.CreateUser(&user)).(*model.User)
th.LinkUserToTeam(ruser, rteam) th.LinkUserToTeam(ruser, rteam)
_, nErr := th.App.Srv().Store.User().VerifyEmail(ruser.Id, ruser.Email) _, nErr := th.App.Srv().Store.User().VerifyEmail(ruser.Id, ruser.Email)
require.Nil(t, nErr) require.NoError(t, nErr)
user2 := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"} user2 := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
ruser2 := Client.Must(Client.CreateUser(&user2)).(*model.User) ruser2 := Client.Must(Client.CreateUser(&user2)).(*model.User)
th.LinkUserToTeam(ruser2, rteam) th.LinkUserToTeam(ruser2, rteam)
_, nErr = th.App.Srv().Store.User().VerifyEmail(ruser2.Id, ruser2.Email) _, nErr = th.App.Srv().Store.User().VerifyEmail(ruser2.Id, ruser2.Email)
require.Nil(t, nErr) require.NoError(t, nErr)
Client.Login(user.Email, user.Password) Client.Login(user.Email, user.Password)