[MM-37557] Move error out of client4 response (#18101)

* Return an error seperately from Response

* Remove BuildErrorResponse

* Drop Response.Error from model/client4.go

* Migrate require.Nil checks

* Migrate require.NotNil checks

* More manual fixes

* Move error check out of CheckOKStatus and CheckCreatedStatus

* Move error check out of CheckForbiddenStatus

* Move error check out of CheckUnauthorizedStatus

* Move error check out of CheckNotFoundStatus

* Move error check out of CheckBadRequestStatus

* Move error check out of CheckNotImplementedStatus and CheckRequestEntityTooLargeStatus

* Move error check out of CheckInternalErrorStatus

* Move error check out of CheckServiceUnavailableStatus

* Remove error check from checkHTTPStatus

* Remove remaining references to Response.Error

* Check previously unchecked errors

* Manually fix compile and linter errors

* Return error in CreateWebSocket methods

* Return error instead of *AppError in DoApi methods

* Manually fix bad replacments

* Conistently return Response and error

* Use err instead of seperate bool return value to indicate success

* Reduce ussage of model.AppError in web/oauth_test.go

* Remove client4.Must

* Check error in buf.ReadFrom

* Fix failing tests
Этот коммит содержится в:
Ben Schumacher
2021-08-13 13:12:16 +02:00
коммит произвёл GitHub
родитель 96593580ae
Коммит a8ca5c423f
60 изменённых файлов: 9790 добавлений и 8706 удалений

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

@@ -17,7 +17,7 @@ import (
func TestGetPreferences(t *testing.T) {
th := Setup(t).InitBasic()
defer th.TearDown()
Client := th.Client
client := th.Client
// recreate basic user (cached has no default preferences)
th.BasicUser = th.CreateUser()
@@ -44,10 +44,10 @@ func TestGetPreferences(t *testing.T) {
},
}
Client.UpdatePreferences(user1.Id, &preferences1)
client.UpdatePreferences(user1.Id, &preferences1)
prefs, resp := Client.GetPreferences(user1.Id)
CheckNoError(t, resp)
prefs, _, err := client.GetPreferences(user1.Id)
require.NoError(t, err)
// 5 because we have 2 initial preferences tutorial_step and recommended_next_steps added when creating a new user
require.Equal(t, len(prefs), 5, "received the wrong number of preferences")
@@ -60,23 +60,25 @@ func TestGetPreferences(t *testing.T) {
th.BasicUser2 = th.CreateUser()
th.LoginBasic2()
prefs, resp = Client.GetPreferences(th.BasicUser2.Id)
CheckNoError(t, resp)
prefs, _, err = client.GetPreferences(th.BasicUser2.Id)
require.NoError(t, err)
require.Greater(t, len(prefs), 0, "received the wrong number of preferences")
_, resp = Client.GetPreferences(th.BasicUser.Id)
_, resp, err := client.GetPreferences(th.BasicUser.Id)
require.Error(t, err)
CheckForbiddenStatus(t, resp)
Client.Logout()
_, resp = Client.GetPreferences(th.BasicUser2.Id)
client.Logout()
_, resp, err = client.GetPreferences(th.BasicUser2.Id)
require.Error(t, err)
CheckUnauthorizedStatus(t, resp)
}
func TestGetPreferencesByCategory(t *testing.T) {
th := Setup(t).InitBasic()
defer th.TearDown()
Client := th.Client
client := th.Client
th.LoginBasic()
user1 := th.BasicUser
@@ -100,38 +102,43 @@ func TestGetPreferencesByCategory(t *testing.T) {
},
}
Client.UpdatePreferences(user1.Id, &preferences1)
client.UpdatePreferences(user1.Id, &preferences1)
prefs, resp := Client.GetPreferencesByCategory(user1.Id, category)
CheckNoError(t, resp)
prefs, _, err := client.GetPreferencesByCategory(user1.Id, category)
require.NoError(t, err)
require.Equal(t, len(prefs), 2, "received the wrong number of preferences")
_, resp = Client.GetPreferencesByCategory(user1.Id, "junk")
_, resp, err := client.GetPreferencesByCategory(user1.Id, "junk")
require.Error(t, err)
CheckNotFoundStatus(t, resp)
th.LoginBasic2()
_, resp = Client.GetPreferencesByCategory(th.BasicUser2.Id, category)
_, resp, err = client.GetPreferencesByCategory(th.BasicUser2.Id, category)
require.Error(t, err)
CheckNotFoundStatus(t, resp)
_, resp = Client.GetPreferencesByCategory(user1.Id, category)
_, resp, err = client.GetPreferencesByCategory(user1.Id, category)
require.Error(t, err)
CheckForbiddenStatus(t, resp)
prefs, resp = Client.GetPreferencesByCategory(th.BasicUser2.Id, "junk")
prefs, resp, err = client.GetPreferencesByCategory(th.BasicUser2.Id, "junk")
require.Error(t, err)
CheckNotFoundStatus(t, resp)
require.Equal(t, len(prefs), 0, "received the wrong number of preferences")
Client.Logout()
_, resp = Client.GetPreferencesByCategory(th.BasicUser2.Id, category)
client.Logout()
_, resp, err = client.GetPreferencesByCategory(th.BasicUser2.Id, category)
require.Error(t, err)
CheckUnauthorizedStatus(t, resp)
}
func TestGetPreferenceByCategoryAndName(t *testing.T) {
th := Setup(t).InitBasic()
defer th.TearDown()
Client := th.Client
client := th.Client
th.LoginBasic()
user := th.BasicUser
@@ -153,32 +160,36 @@ func TestGetPreferenceByCategoryAndName(t *testing.T) {
},
}
Client.UpdatePreferences(user.Id, &preferences)
client.UpdatePreferences(user.Id, &preferences)
pref, resp := Client.GetPreferenceByCategoryAndName(user.Id, model.PreferenceCategoryDirectChannelShow, name)
CheckNoError(t, resp)
pref, _, err := client.GetPreferenceByCategoryAndName(user.Id, model.PreferenceCategoryDirectChannelShow, name)
require.NoError(t, err)
require.Equal(t, preferences[0].UserId, pref.UserId, "UserId preference not saved")
require.Equal(t, preferences[0].Category, pref.Category, "Category preference not saved")
require.Equal(t, preferences[0].Name, pref.Name, "Name preference not saved")
preferences[0].Value = model.NewId()
Client.UpdatePreferences(user.Id, &preferences)
client.UpdatePreferences(user.Id, &preferences)
_, resp = Client.GetPreferenceByCategoryAndName(user.Id, "junk", preferences[0].Name)
_, resp, err := client.GetPreferenceByCategoryAndName(user.Id, "junk", preferences[0].Name)
require.Error(t, err)
CheckBadRequestStatus(t, resp)
_, resp = Client.GetPreferenceByCategoryAndName(user.Id, preferences[0].Category, "junk")
_, resp, err = client.GetPreferenceByCategoryAndName(user.Id, preferences[0].Category, "junk")
require.Error(t, err)
CheckBadRequestStatus(t, resp)
_, resp = Client.GetPreferenceByCategoryAndName(th.BasicUser2.Id, preferences[0].Category, "junk")
_, resp, err = client.GetPreferenceByCategoryAndName(th.BasicUser2.Id, preferences[0].Category, "junk")
require.Error(t, err)
CheckForbiddenStatus(t, resp)
_, resp = Client.GetPreferenceByCategoryAndName(user.Id, preferences[0].Category, preferences[0].Name)
CheckNoError(t, resp)
_, _, err = client.GetPreferenceByCategoryAndName(user.Id, preferences[0].Category, preferences[0].Name)
require.NoError(t, err)
Client.Logout()
_, resp = Client.GetPreferenceByCategoryAndName(user.Id, preferences[0].Category, preferences[0].Name)
client.Logout()
_, resp, err = client.GetPreferenceByCategoryAndName(user.Id, preferences[0].Category, preferences[0].Name)
require.Error(t, err)
CheckUnauthorizedStatus(t, resp)
}
@@ -186,7 +197,7 @@ func TestGetPreferenceByCategoryAndName(t *testing.T) {
func TestUpdatePreferences(t *testing.T) {
th := Setup(t).InitBasic()
defer th.TearDown()
Client := th.Client
client := th.Client
th.LoginBasic()
user1 := th.BasicUser
@@ -210,8 +221,8 @@ func TestUpdatePreferences(t *testing.T) {
},
}
_, resp := Client.UpdatePreferences(user1.Id, &preferences1)
CheckNoError(t, resp)
_, err := client.UpdatePreferences(user1.Id, &preferences1)
require.NoError(t, err)
preferences := model.Preferences{
{
@@ -221,7 +232,8 @@ func TestUpdatePreferences(t *testing.T) {
},
}
_, resp = Client.UpdatePreferences(user1.Id, &preferences)
resp, err := client.UpdatePreferences(user1.Id, &preferences)
require.Error(t, err)
CheckForbiddenStatus(t, resp)
preferences = model.Preferences{
@@ -231,14 +243,17 @@ func TestUpdatePreferences(t *testing.T) {
},
}
_, resp = Client.UpdatePreferences(user1.Id, &preferences)
resp, err = client.UpdatePreferences(user1.Id, &preferences)
require.Error(t, err)
CheckBadRequestStatus(t, resp)
_, resp = Client.UpdatePreferences(th.BasicUser2.Id, &preferences)
resp, err = client.UpdatePreferences(th.BasicUser2.Id, &preferences)
require.Error(t, err)
CheckForbiddenStatus(t, resp)
Client.Logout()
_, resp = Client.UpdatePreferences(user1.Id, &preferences1)
client.Logout()
resp, err = client.UpdatePreferences(user1.Id, &preferences1)
require.Error(t, err)
CheckUnauthorizedStatus(t, resp)
}
@@ -247,7 +262,7 @@ func TestUpdatePreferencesWebsocket(t *testing.T) {
defer th.TearDown()
WebSocketClient, err := th.CreateWebSocketClient()
require.Nil(t, err)
require.NoError(t, err)
WebSocketClient.Listen()
time.Sleep(300 * time.Millisecond)
@@ -268,8 +283,8 @@ func TestUpdatePreferencesWebsocket(t *testing.T) {
},
}
_, resp := th.Client.UpdatePreferences(userId, preferences)
CheckNoError(t, resp)
_, err = th.Client.UpdatePreferences(userId, preferences)
require.NoError(t, err)
timeout := time.After(300 * time.Millisecond)
@@ -308,22 +323,22 @@ func TestUpdateSidebarPreferences(t *testing.T) {
team1 := th.CreateTeam()
th.LinkUserToTeam(user, team1)
_, resp := th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "")
require.Nil(t, resp.Error)
_, _, err := th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "")
require.NoError(t, err)
channel := th.CreateChannelWithClientAndTeam(th.Client, model.ChannelTypeOpen, team1.Id)
th.AddUserToChannel(user, channel)
// Confirm that the sidebar is populated correctly to begin with
categories, resp := th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "")
require.Nil(t, resp.Error)
categories, _, err := th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "")
require.NoError(t, err)
require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type)
require.NotContains(t, categories.Categories[0].Channels, channel.Id)
require.Equal(t, model.SidebarCategoryChannels, categories.Categories[1].Type)
require.Contains(t, categories.Categories[1].Channels, channel.Id)
// Favorite the channel
_, resp = th.Client.UpdatePreferences(user.Id, &model.Preferences{
_, err = th.Client.UpdatePreferences(user.Id, &model.Preferences{
{
UserId: user.Id,
Category: model.PreferenceCategoryFavoriteChannel,
@@ -331,18 +346,18 @@ func TestUpdateSidebarPreferences(t *testing.T) {
Value: "true",
},
})
require.Nil(t, resp.Error)
require.NoError(t, err)
// Confirm that the channel was added to the Favorites
categories, resp = th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "")
require.Nil(t, resp.Error)
categories, _, err = th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "")
require.NoError(t, err)
require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type)
assert.Contains(t, categories.Categories[0].Channels, channel.Id)
require.Equal(t, model.SidebarCategoryChannels, categories.Categories[1].Type)
assert.NotContains(t, categories.Categories[1].Channels, channel.Id)
// And unfavorite the channel
_, resp = th.Client.UpdatePreferences(user.Id, &model.Preferences{
_, err = th.Client.UpdatePreferences(user.Id, &model.Preferences{
{
UserId: user.Id,
Category: model.PreferenceCategoryFavoriteChannel,
@@ -350,11 +365,11 @@ func TestUpdateSidebarPreferences(t *testing.T) {
Value: "false",
},
})
require.Nil(t, resp.Error)
require.NoError(t, err)
// The channel should've been removed from the Favorites
categories, resp = th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "")
require.Nil(t, resp.Error)
categories, _, err = th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "")
require.NoError(t, err)
require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type)
require.NotContains(t, categories.Categories[0].Channels, channel.Id)
require.Equal(t, model.SidebarCategoryChannels, categories.Categories[1].Type)
@@ -376,7 +391,7 @@ func TestUpdateSidebarPreferences(t *testing.T) {
dmChannel := th.CreateDmChannel(user2)
// Favorite the channel
_, resp := th.Client.UpdatePreferences(user.Id, &model.Preferences{
_, err := th.Client.UpdatePreferences(user.Id, &model.Preferences{
{
UserId: user.Id,
Category: model.PreferenceCategoryFavoriteChannel,
@@ -384,25 +399,25 @@ func TestUpdateSidebarPreferences(t *testing.T) {
Value: "true",
},
})
require.Nil(t, resp.Error)
require.NoError(t, err)
// Confirm that the channel was added to the Favorites on all teams
categories, resp := th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "")
require.Nil(t, resp.Error)
categories, _, err := th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "")
require.NoError(t, err)
require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type)
assert.Contains(t, categories.Categories[0].Channels, dmChannel.Id)
require.Equal(t, model.SidebarCategoryDirectMessages, categories.Categories[2].Type)
assert.NotContains(t, categories.Categories[2].Channels, dmChannel.Id)
categories, resp = th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team2.Id, "")
require.Nil(t, resp.Error)
categories, _, err = th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team2.Id, "")
require.NoError(t, err)
require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type)
assert.Contains(t, categories.Categories[0].Channels, dmChannel.Id)
require.Equal(t, model.SidebarCategoryDirectMessages, categories.Categories[2].Type)
assert.NotContains(t, categories.Categories[2].Channels, dmChannel.Id)
// And unfavorite the channel
_, resp = th.Client.UpdatePreferences(user.Id, &model.Preferences{
_, err = th.Client.UpdatePreferences(user.Id, &model.Preferences{
{
UserId: user.Id,
Category: model.PreferenceCategoryFavoriteChannel,
@@ -410,18 +425,18 @@ func TestUpdateSidebarPreferences(t *testing.T) {
Value: "false",
},
})
require.Nil(t, resp.Error)
require.NoError(t, err)
// The channel should've been removed from the Favorites on all teams
categories, resp = th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "")
require.Nil(t, resp.Error)
categories, _, err = th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "")
require.NoError(t, err)
require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type)
require.NotContains(t, categories.Categories[0].Channels, dmChannel.Id)
require.Equal(t, model.SidebarCategoryDirectMessages, categories.Categories[2].Type)
assert.Contains(t, categories.Categories[2].Channels, dmChannel.Id)
categories, resp = th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team2.Id, "")
require.Nil(t, resp.Error)
categories, _, err = th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team2.Id, "")
require.NoError(t, err)
require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type)
require.NotContains(t, categories.Categories[0].Channels, dmChannel.Id)
require.Equal(t, model.SidebarCategoryDirectMessages, categories.Categories[2].Type)
@@ -442,32 +457,32 @@ func TestUpdateSidebarPreferences(t *testing.T) {
th.LinkUserToTeam(user, team1)
th.LinkUserToTeam(user2, team1)
_, resp := th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "")
require.Nil(t, resp.Error)
_, resp = client2.GetSidebarCategoriesForTeamForUser(user2.Id, team1.Id, "")
require.Nil(t, resp.Error)
_, _, err := th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "")
require.NoError(t, err)
_, _, err = client2.GetSidebarCategoriesForTeamForUser(user2.Id, team1.Id, "")
require.NoError(t, err)
channel := th.CreateChannelWithClientAndTeam(th.Client, model.ChannelTypeOpen, team1.Id)
th.AddUserToChannel(user, channel)
th.AddUserToChannel(user2, channel)
// Confirm that the sidebar is populated correctly to begin with
categories, resp := th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "")
require.Nil(t, resp.Error)
categories, _, err := th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "")
require.NoError(t, err)
require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type)
require.NotContains(t, categories.Categories[0].Channels, channel.Id)
require.Equal(t, model.SidebarCategoryChannels, categories.Categories[1].Type)
require.Contains(t, categories.Categories[1].Channels, channel.Id)
categories, resp = client2.GetSidebarCategoriesForTeamForUser(user2.Id, team1.Id, "")
require.Nil(t, resp.Error)
categories, _, err = client2.GetSidebarCategoriesForTeamForUser(user2.Id, team1.Id, "")
require.NoError(t, err)
require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type)
require.NotContains(t, categories.Categories[0].Channels, channel.Id)
require.Equal(t, model.SidebarCategoryChannels, categories.Categories[1].Type)
require.Contains(t, categories.Categories[1].Channels, channel.Id)
// Favorite the channel
_, resp = th.Client.UpdatePreferences(user.Id, &model.Preferences{
_, err = th.Client.UpdatePreferences(user.Id, &model.Preferences{
{
UserId: user.Id,
Category: model.PreferenceCategoryFavoriteChannel,
@@ -475,18 +490,18 @@ func TestUpdateSidebarPreferences(t *testing.T) {
Value: "true",
},
})
require.Nil(t, resp.Error)
require.NoError(t, err)
// Confirm that the channel was not added to Favorites for the second user
categories, resp = client2.GetSidebarCategoriesForTeamForUser(user2.Id, team1.Id, "")
require.Nil(t, resp.Error)
categories, _, err = client2.GetSidebarCategoriesForTeamForUser(user2.Id, team1.Id, "")
require.NoError(t, err)
require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type)
assert.NotContains(t, categories.Categories[0].Channels, channel.Id)
require.Equal(t, model.SidebarCategoryChannels, categories.Categories[1].Type)
assert.Contains(t, categories.Categories[1].Channels, channel.Id)
// Favorite the channel for the second user
_, resp = client2.UpdatePreferences(user2.Id, &model.Preferences{
_, err = client2.UpdatePreferences(user2.Id, &model.Preferences{
{
UserId: user2.Id,
Category: model.PreferenceCategoryFavoriteChannel,
@@ -494,18 +509,18 @@ func TestUpdateSidebarPreferences(t *testing.T) {
Value: "true",
},
})
require.Nil(t, resp.Error)
require.NoError(t, err)
// Confirm that the channel is now in the Favorites for the second user
categories, resp = client2.GetSidebarCategoriesForTeamForUser(user2.Id, team1.Id, "")
require.Nil(t, resp.Error)
categories, _, err = client2.GetSidebarCategoriesForTeamForUser(user2.Id, team1.Id, "")
require.NoError(t, err)
require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type)
assert.Contains(t, categories.Categories[0].Channels, channel.Id)
require.Equal(t, model.SidebarCategoryChannels, categories.Categories[1].Type)
assert.NotContains(t, categories.Categories[1].Channels, channel.Id)
// And unfavorite the channel
_, resp = th.Client.UpdatePreferences(user.Id, &model.Preferences{
_, err = th.Client.UpdatePreferences(user.Id, &model.Preferences{
{
UserId: user.Id,
Category: model.PreferenceCategoryFavoriteChannel,
@@ -513,11 +528,11 @@ func TestUpdateSidebarPreferences(t *testing.T) {
Value: "false",
},
})
require.Nil(t, resp.Error)
require.NoError(t, err)
// The channel should still be in the second user's favorites
categories, resp = client2.GetSidebarCategoriesForTeamForUser(user2.Id, team1.Id, "")
require.Nil(t, resp.Error)
categories, _, err = client2.GetSidebarCategoriesForTeamForUser(user2.Id, team1.Id, "")
require.NoError(t, err)
require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type)
assert.Contains(t, categories.Categories[0].Channels, channel.Id)
require.Equal(t, model.SidebarCategoryChannels, categories.Categories[1].Type)
@@ -528,11 +543,11 @@ func TestUpdateSidebarPreferences(t *testing.T) {
func TestDeletePreferences(t *testing.T) {
th := Setup(t).InitBasic()
defer th.TearDown()
Client := th.Client
client := th.Client
th.LoginBasic()
prefs, _ := Client.GetPreferences(th.BasicUser.Id)
prefs, _, _ := client.GetPreferences(th.BasicUser.Id)
originalCount := len(prefs)
// save 10 preferences
@@ -546,27 +561,30 @@ func TestDeletePreferences(t *testing.T) {
preferences = append(preferences, preference)
}
Client.UpdatePreferences(th.BasicUser.Id, &preferences)
client.UpdatePreferences(th.BasicUser.Id, &preferences)
// delete 10 preferences
th.LoginBasic2()
_, resp := Client.DeletePreferences(th.BasicUser2.Id, &preferences)
resp, err := client.DeletePreferences(th.BasicUser2.Id, &preferences)
require.Error(t, err)
CheckForbiddenStatus(t, resp)
th.LoginBasic()
_, resp = Client.DeletePreferences(th.BasicUser.Id, &preferences)
CheckNoError(t, resp)
_, err = client.DeletePreferences(th.BasicUser.Id, &preferences)
require.NoError(t, err)
_, resp = Client.DeletePreferences(th.BasicUser2.Id, &preferences)
resp, err = client.DeletePreferences(th.BasicUser2.Id, &preferences)
require.Error(t, err)
CheckForbiddenStatus(t, resp)
prefs, _ = Client.GetPreferences(th.BasicUser.Id)
prefs, _, _ = client.GetPreferences(th.BasicUser.Id)
require.Len(t, prefs, originalCount, "should've deleted preferences")
Client.Logout()
_, resp = Client.DeletePreferences(th.BasicUser.Id, &preferences)
client.Logout()
resp, err = client.DeletePreferences(th.BasicUser.Id, &preferences)
require.Error(t, err)
CheckUnauthorizedStatus(t, resp)
}
@@ -587,18 +605,18 @@ func TestDeletePreferencesWebsocket(t *testing.T) {
Name: model.NewId(),
},
}
_, resp := th.Client.UpdatePreferences(userId, preferences)
CheckNoError(t, resp)
_, err := th.Client.UpdatePreferences(userId, preferences)
require.NoError(t, err)
WebSocketClient, err := th.CreateWebSocketClient()
require.Nil(t, err)
require.NoError(t, err)
WebSocketClient.Listen()
wsResp := <-WebSocketClient.ResponseChannel
require.Equal(t, model.StatusOk, wsResp.Status, "should have responded OK to authentication challenge")
_, resp = th.Client.DeletePreferences(userId, preferences)
CheckNoError(t, resp)
_, err = th.Client.DeletePreferences(userId, preferences)
require.NoError(t, err)
timeout := time.After(30000 * time.Millisecond)
@@ -637,22 +655,22 @@ func TestDeleteSidebarPreferences(t *testing.T) {
team1 := th.CreateTeam()
th.LinkUserToTeam(user, team1)
_, resp := th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "")
require.Nil(t, resp.Error)
_, _, err := th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "")
require.NoError(t, err)
channel := th.CreateChannelWithClientAndTeam(th.Client, model.ChannelTypeOpen, team1.Id)
th.AddUserToChannel(user, channel)
// Confirm that the sidebar is populated correctly to begin with
categories, resp := th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "")
require.Nil(t, resp.Error)
categories, _, err := th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "")
require.NoError(t, err)
require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type)
require.NotContains(t, categories.Categories[0].Channels, channel.Id)
require.Equal(t, model.SidebarCategoryChannels, categories.Categories[1].Type)
require.Contains(t, categories.Categories[1].Channels, channel.Id)
// Favorite the channel
_, resp = th.Client.UpdatePreferences(user.Id, &model.Preferences{
_, err = th.Client.UpdatePreferences(user.Id, &model.Preferences{
{
UserId: user.Id,
Category: model.PreferenceCategoryFavoriteChannel,
@@ -660,29 +678,28 @@ func TestDeleteSidebarPreferences(t *testing.T) {
Value: "true",
},
})
require.Nil(t, resp.Error)
require.NoError(t, err)
// Confirm that the channel was added to the Favorites
categories, resp = th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "")
require.Nil(t, resp.Error)
categories, _, err = th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "")
require.NoError(t, err)
require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type)
assert.Contains(t, categories.Categories[0].Channels, channel.Id)
require.Equal(t, model.SidebarCategoryChannels, categories.Categories[1].Type)
assert.NotContains(t, categories.Categories[1].Channels, channel.Id)
// And unfavorite the channel by deleting the preference
_, resp = th.Client.DeletePreferences(user.Id, &model.Preferences{
_, err = th.Client.DeletePreferences(user.Id, &model.Preferences{
{
UserId: user.Id,
Category: model.PreferenceCategoryFavoriteChannel,
Name: channel.Id,
},
})
require.Nil(t, resp.Error)
require.NoError(t, err)
// The channel should've been removed from the Favorites
categories, resp = th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "")
require.Nil(t, resp.Error)
categories, _, err = th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "")
require.NoError(t, err)
require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type)
require.NotContains(t, categories.Categories[0].Channels, channel.Id)
require.Equal(t, model.SidebarCategoryChannels, categories.Categories[1].Type)
@@ -704,7 +721,7 @@ func TestDeleteSidebarPreferences(t *testing.T) {
dmChannel := th.CreateDmChannel(user2)
// Favorite the channel
_, resp := th.Client.UpdatePreferences(user.Id, &model.Preferences{
_, err := th.Client.UpdatePreferences(user.Id, &model.Preferences{
{
UserId: user.Id,
Category: model.PreferenceCategoryFavoriteChannel,
@@ -712,43 +729,43 @@ func TestDeleteSidebarPreferences(t *testing.T) {
Value: "true",
},
})
require.Nil(t, resp.Error)
require.NoError(t, err)
// Confirm that the channel was added to the Favorites on all teams
categories, resp := th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "")
require.Nil(t, resp.Error)
categories, _, err := th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "")
require.NoError(t, err)
require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type)
assert.Contains(t, categories.Categories[0].Channels, dmChannel.Id)
require.Equal(t, model.SidebarCategoryDirectMessages, categories.Categories[2].Type)
assert.NotContains(t, categories.Categories[2].Channels, dmChannel.Id)
categories, resp = th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team2.Id, "")
require.Nil(t, resp.Error)
categories, _, err = th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team2.Id, "")
require.NoError(t, err)
require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type)
assert.Contains(t, categories.Categories[0].Channels, dmChannel.Id)
require.Equal(t, model.SidebarCategoryDirectMessages, categories.Categories[2].Type)
assert.NotContains(t, categories.Categories[2].Channels, dmChannel.Id)
// And unfavorite the channel by deleting the preference
_, resp = th.Client.DeletePreferences(user.Id, &model.Preferences{
_, err = th.Client.DeletePreferences(user.Id, &model.Preferences{
{
UserId: user.Id,
Category: model.PreferenceCategoryFavoriteChannel,
Name: dmChannel.Id,
},
})
require.Nil(t, resp.Error)
require.NoError(t, err)
// The channel should've been removed from the Favorites on all teams
categories, resp = th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "")
require.Nil(t, resp.Error)
categories, _, err = th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "")
require.NoError(t, err)
require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type)
require.NotContains(t, categories.Categories[0].Channels, dmChannel.Id)
require.Equal(t, model.SidebarCategoryDirectMessages, categories.Categories[2].Type)
assert.Contains(t, categories.Categories[2].Channels, dmChannel.Id)
categories, resp = th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team2.Id, "")
require.Nil(t, resp.Error)
categories, _, err = th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team2.Id, "")
require.NoError(t, err)
require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type)
require.NotContains(t, categories.Categories[0].Channels, dmChannel.Id)
require.Equal(t, model.SidebarCategoryDirectMessages, categories.Categories[2].Type)
@@ -769,32 +786,32 @@ func TestDeleteSidebarPreferences(t *testing.T) {
th.LinkUserToTeam(user, team1)
th.LinkUserToTeam(user2, team1)
_, resp := th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "")
require.Nil(t, resp.Error)
_, resp = client2.GetSidebarCategoriesForTeamForUser(user2.Id, team1.Id, "")
require.Nil(t, resp.Error)
_, _, err := th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "")
require.NoError(t, err)
_, _, err = client2.GetSidebarCategoriesForTeamForUser(user2.Id, team1.Id, "")
require.NoError(t, err)
channel := th.CreateChannelWithClientAndTeam(th.Client, model.ChannelTypeOpen, team1.Id)
th.AddUserToChannel(user, channel)
th.AddUserToChannel(user2, channel)
// Confirm that the sidebar is populated correctly to begin with
categories, resp := th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "")
require.Nil(t, resp.Error)
categories, _, err := th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "")
require.NoError(t, err)
require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type)
require.NotContains(t, categories.Categories[0].Channels, channel.Id)
require.Equal(t, model.SidebarCategoryChannels, categories.Categories[1].Type)
require.Contains(t, categories.Categories[1].Channels, channel.Id)
categories, resp = client2.GetSidebarCategoriesForTeamForUser(user2.Id, team1.Id, "")
require.Nil(t, resp.Error)
categories, _, err = client2.GetSidebarCategoriesForTeamForUser(user2.Id, team1.Id, "")
require.NoError(t, err)
require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type)
require.NotContains(t, categories.Categories[0].Channels, channel.Id)
require.Equal(t, model.SidebarCategoryChannels, categories.Categories[1].Type)
require.Contains(t, categories.Categories[1].Channels, channel.Id)
// Favorite the channel for both users
_, resp = th.Client.UpdatePreferences(user.Id, &model.Preferences{
_, err = th.Client.UpdatePreferences(user.Id, &model.Preferences{
{
UserId: user.Id,
Category: model.PreferenceCategoryFavoriteChannel,
@@ -802,9 +819,9 @@ func TestDeleteSidebarPreferences(t *testing.T) {
Value: "true",
},
})
require.Nil(t, resp.Error)
require.NoError(t, err)
_, resp = client2.UpdatePreferences(user2.Id, &model.Preferences{
_, err = client2.UpdatePreferences(user2.Id, &model.Preferences{
{
UserId: user2.Id,
Category: model.PreferenceCategoryFavoriteChannel,
@@ -812,18 +829,18 @@ func TestDeleteSidebarPreferences(t *testing.T) {
Value: "true",
},
})
require.Nil(t, resp.Error)
require.NoError(t, err)
// Confirm that the channel is in the Favorites for the second user
categories, resp = client2.GetSidebarCategoriesForTeamForUser(user2.Id, team1.Id, "")
require.Nil(t, resp.Error)
categories, _, err = client2.GetSidebarCategoriesForTeamForUser(user2.Id, team1.Id, "")
require.NoError(t, err)
require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type)
assert.Contains(t, categories.Categories[0].Channels, channel.Id)
require.Equal(t, model.SidebarCategoryChannels, categories.Categories[1].Type)
assert.NotContains(t, categories.Categories[1].Channels, channel.Id)
// And unfavorite the channel for the first user by deleting the preference
_, resp = th.Client.UpdatePreferences(user.Id, &model.Preferences{
_, err = th.Client.UpdatePreferences(user.Id, &model.Preferences{
{
UserId: user.Id,
Category: model.PreferenceCategoryFavoriteChannel,
@@ -831,11 +848,11 @@ func TestDeleteSidebarPreferences(t *testing.T) {
Value: "false",
},
})
require.Nil(t, resp.Error)
require.NoError(t, err)
// The channel should still be in the second user's favorites
categories, resp = client2.GetSidebarCategoriesForTeamForUser(user2.Id, team1.Id, "")
require.Nil(t, resp.Error)
categories, _, err = client2.GetSidebarCategoriesForTeamForUser(user2.Id, team1.Id, "")
require.NoError(t, err)
require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type)
assert.Contains(t, categories.Categories[0].Channels, channel.Id)
require.Equal(t, model.SidebarCategoryChannels, categories.Categories[1].Type)