diff --git a/api4/scheme_test.go b/api4/scheme_test.go index 72777dfcc6..3fac57bb20 100644 --- a/api4/scheme_test.go +++ b/api4/scheme_test.go @@ -8,6 +8,7 @@ import ( "testing" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "github.com/mattermost/mattermost-server/model" ) @@ -295,16 +296,15 @@ func TestGetTeamsForScheme(t *testing.T) { Type: model.TEAM_OPEN, } - result1 := <-th.App.Srv.Store.Team().Save(team1) - assert.Nil(t, result1.Err) - team1 = result1.Data.(*model.Team) + team1, err := th.App.Srv.Store.Team().Save(team1) + require.Nil(t, err) l2, r2 := th.SystemAdminClient.GetTeamsForScheme(scheme1.Id, 0, 100) CheckNoError(t, r2) assert.Zero(t, len(l2)) 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) l3, r3 := th.SystemAdminClient.GetTeamsForScheme(scheme1.Id, 0, 100) @@ -318,9 +318,8 @@ func TestGetTeamsForScheme(t *testing.T) { Type: model.TEAM_OPEN, SchemeId: &scheme1.Id, } - result3 := <-th.App.Srv.Store.Team().Save(team2) - assert.Nil(t, result3.Err) - team2 = result3.Data.(*model.Team) + team2, err = th.App.Srv.Store.Team().Save(team2) + require.Nil(t, err) l4, r4 := th.SystemAdminClient.GetTeamsForScheme(scheme1.Id, 0, 100) CheckNoError(t, r4) @@ -604,15 +603,14 @@ func TestDeleteScheme(t *testing.T) { assert.Zero(t, role4.DeleteAt) // Make sure this scheme is in use by a team. - res := <-th.App.Srv.Store.Team().Save(&model.Team{ + team, err := th.App.Srv.Store.Team().Save(&model.Team{ Name: model.NewId(), DisplayName: model.NewId(), Email: model.NewId() + "@nowhere.com", Type: model.TEAM_OPEN, SchemeId: &s1.Id, }) - assert.Nil(t, res.Err) - team := res.Data.(*model.Team) + require.Nil(t, err) // Delete the Scheme. _, r3 := th.SystemAdminClient.DeleteScheme(s1.Id) diff --git a/app/team.go b/app/team.go index c69099e957..79227a915c 100644 --- a/app/team.go +++ b/app/team.go @@ -24,11 +24,10 @@ import ( func (a *App) CreateTeam(team *model.Team) (*model.Team, *model.AppError) { team.InviteId = "" - result := <-a.Srv.Store.Team().Save(team) - if result.Err != nil { - return nil, result.Err + rteam, err := a.Srv.Store.Team().Save(team) + if err != nil { + return nil, err } - rteam := result.Data.(*model.Team) if _, err := a.CreateDefaultChannels(rteam.Id); err != nil { return nil, err diff --git a/manualtesting/manual_testing.go b/manualtesting/manual_testing.go index 9878bb52e7..070c712efe 100644 --- a/manualtesting/manual_testing.go +++ b/manualtesting/manual_testing.go @@ -74,13 +74,10 @@ func manualTest(c *web.Context, w http.ResponseWriter, r *http.Request) { Type: model.TEAM_OPEN, } - if result := <-c.App.Srv.Store.Team().Save(team); result.Err != nil { - c.Err = result.Err + if createdTeam, err := c.App.Srv.Store.Team().Save(team); err != nil { + c.Err = err return } else { - - createdTeam := result.Data.(*model.Team) - channel := &model.Channel{DisplayName: "Town Square", Name: "town-square", Type: model.CHANNEL_OPEN, TeamId: createdTeam.Id} if _, err := c.App.CreateChannel(channel, false); err != nil { c.Err = err diff --git a/store/sqlstore/team_store.go b/store/sqlstore/team_store.go index 19146e6fe3..a2e92d8820 100644 --- a/store/sqlstore/team_store.go +++ b/store/sqlstore/team_store.go @@ -178,30 +178,25 @@ func (s SqlTeamStore) CreateIndexesIfNotExists() { s.CreateIndexIfNotExists("idx_teammembers_delete_at", "TeamMembers", "DeleteAt") } -func (s SqlTeamStore) Save(team *model.Team) store.StoreChannel { - return store.Do(func(result *store.StoreResult) { - if len(team.Id) > 0 { - result.Err = model.NewAppError("SqlTeamStore.Save", - "store.sql_team.save.existing.app_error", nil, "id="+team.Id, http.StatusBadRequest) - return - } +func (s SqlTeamStore) Save(team *model.Team) (*model.Team, *model.AppError) { + if len(team.Id) > 0 { + return nil, model.NewAppError("SqlTeamStore.Save", + "store.sql_team.save.existing.app_error", nil, "id="+team.Id, http.StatusBadRequest) + } - team.PreSave() + team.PreSave() - if result.Err = team.IsValid(); result.Err != nil { - return - } + if err := team.IsValid(); err != nil { + return nil, err + } - if err := s.GetMaster().Insert(team); err != nil { - if IsUniqueConstraintError(err, []string{"Name", "teams_name_key"}) { - result.Err = model.NewAppError("SqlTeamStore.Save", "store.sql_team.save.domain_exists.app_error", nil, "id="+team.Id+", "+err.Error(), http.StatusBadRequest) - return - } - result.Err = model.NewAppError("SqlTeamStore.Save", "store.sql_team.save.app_error", nil, "id="+team.Id+", "+err.Error(), http.StatusInternalServerError) - return + if err := s.GetMaster().Insert(team); err != nil { + if IsUniqueConstraintError(err, []string{"Name", "teams_name_key"}) { + return nil, model.NewAppError("SqlTeamStore.Save", "store.sql_team.save.domain_exists.app_error", nil, "id="+team.Id+", "+err.Error(), http.StatusBadRequest) } - result.Data = team - }) + return nil, model.NewAppError("SqlTeamStore.Save", "store.sql_team.save.app_error", nil, "id="+team.Id+", "+err.Error(), http.StatusInternalServerError) + } + return team, nil } func (s SqlTeamStore) Update(team *model.Team) (*model.Team, *model.AppError) { diff --git a/store/store.go b/store/store.go index 19be5117f8..f176f4dfba 100644 --- a/store/store.go +++ b/store/store.go @@ -81,7 +81,7 @@ type Store interface { } type TeamStore interface { - Save(team *model.Team) StoreChannel + Save(team *model.Team) (*model.Team, *model.AppError) Update(team *model.Team) (*model.Team, *model.AppError) UpdateDisplayName(name string, teamId string) StoreChannel Get(id string) (*model.Team, *model.AppError) diff --git a/store/storetest/channel_store.go b/store/storetest/channel_store.go index 640bf50e3e..230e4e3d69 100644 --- a/store/storetest/channel_store.go +++ b/store/storetest/channel_store.go @@ -1047,14 +1047,16 @@ func testChannelStoreGetAllChannels(t *testing.T, ss store.Store, s SqlSupplier) t1.Name = model.NewId() t1.Email = MakeEmail() t1.Type = model.TEAM_OPEN - store.Must(ss.Team().Save(&t1)) + _, err := ss.Team().Save(&t1) + require.Nil(t, err) t2 := model.Team{} t2.DisplayName = "Name2" t2.Name = model.NewId() t2.Email = MakeEmail() t2.Type = model.TEAM_OPEN - store.Must(ss.Team().Save(&t2)) + _, err = ss.Team().Save(&t2) + require.Nil(t, err) c1 := model.Channel{} c1.TeamId = t1.Id @@ -1463,7 +1465,8 @@ func testChannelStoreGetMembersForUser(t *testing.T, ss store.Store) { t1.Name = model.NewId() t1.Email = MakeEmail() t1.Type = model.TEAM_OPEN - store.Must(ss.Team().Save(&t1)) + _, err := ss.Team().Save(&t1) + require.Nil(t, err) o1 := model.Channel{} o1.TeamId = t1.Id @@ -1506,7 +1509,8 @@ func testChannelStoreGetMembersForUserWithPagination(t *testing.T, ss store.Stor t1.Name = model.NewId() t1.Email = MakeEmail() t1.Type = model.TEAM_OPEN - store.Must(ss.Team().Save(&t1)) + _, err := ss.Team().Save(&t1) + require.Nil(t, err) o1 := model.Channel{} o1.TeamId = t1.Id @@ -2218,14 +2222,16 @@ func testChannelStoreSearchAllChannels(t *testing.T, ss store.Store) { t1.Name = model.NewId() t1.Email = MakeEmail() t1.Type = model.TEAM_OPEN - store.Must(ss.Team().Save(&t1)) + _, err := ss.Team().Save(&t1) + require.Nil(t, err) t2 := model.Team{} t2.DisplayName = "Name2" t2.Name = model.NewId() t2.Email = MakeEmail() t2.Type = model.TEAM_OPEN - store.Must(ss.Team().Save(&t2)) + _, err = ss.Team().Save(&t2) + require.Nil(t, err) o1 := model.Channel{ TeamId: t1.Id, @@ -3093,7 +3099,8 @@ func testChannelStoreGetAllChannelsForExportAfter(t *testing.T, ss store.Store) t1.Name = model.NewId() t1.Email = MakeEmail() t1.Type = model.TEAM_OPEN - store.Must(ss.Team().Save(&t1)) + _, err := ss.Team().Save(&t1) + require.Nil(t, err) c1 := model.Channel{} c1.TeamId = t1.Id @@ -3124,7 +3131,8 @@ func testChannelStoreGetChannelMembersForExport(t *testing.T, ss store.Store) { t1.Name = model.NewId() t1.Email = MakeEmail() t1.Type = model.TEAM_OPEN - store.Must(ss.Team().Save(&t1)) + _, err := ss.Team().Save(&t1) + require.Nil(t, err) c1 := model.Channel{} c1.TeamId = t1.Id @@ -3176,7 +3184,8 @@ func testChannelStoreRemoveAllDeactivatedMembers(t *testing.T, ss store.Store) { t1.Name = model.NewId() t1.Email = MakeEmail() t1.Type = model.TEAM_OPEN - store.Must(ss.Team().Save(&t1)) + _, err := ss.Team().Save(&t1) + require.Nil(t, err) c1 := model.Channel{} c1.TeamId = t1.Id diff --git a/store/storetest/compliance_store.go b/store/storetest/compliance_store.go index 7ce84d1764..71154184ba 100644 --- a/store/storetest/compliance_store.go +++ b/store/storetest/compliance_store.go @@ -70,7 +70,8 @@ func testComplianceExport(t *testing.T, ss store.Store) { t1.Name = "zz" + model.NewId() + "b" t1.Email = MakeEmail() t1.Type = model.TEAM_OPEN - t1 = store.Must(ss.Team().Save(t1)).(*model.Team) + t1, err := ss.Team().Save(t1) + require.Nil(t, err) u1 := &model.User{} u1.Email = MakeEmail() @@ -169,7 +170,8 @@ func testComplianceExportDirectMessages(t *testing.T, ss store.Store) { t1.Name = "zz" + model.NewId() + "b" t1.Email = MakeEmail() t1.Type = model.TEAM_OPEN - t1 = store.Must(ss.Team().Save(t1)).(*model.Team) + t1, err := ss.Team().Save(t1) + require.Nil(t, err) u1 := &model.User{} u1.Email = MakeEmail() @@ -251,7 +253,8 @@ func testMessageExportPublicChannel(t *testing.T, ss store.Store) { Email: MakeEmail(), Type: model.TEAM_OPEN, } - team = store.Must(ss.Team().Save(team)).(*model.Team) + team, err = ss.Team().Save(team) + require.Nil(t, err) // and two users that are a part of that team user1 := &model.User{ @@ -345,7 +348,8 @@ func testMessageExportPrivateChannel(t *testing.T, ss store.Store) { Email: MakeEmail(), Type: model.TEAM_OPEN, } - team = store.Must(ss.Team().Save(team)).(*model.Team) + team, err = ss.Team().Save(team) + require.Nil(t, err) // and two users that are a part of that team user1 := &model.User{ @@ -441,7 +445,8 @@ func testMessageExportDirectMessageChannel(t *testing.T, ss store.Store) { Email: MakeEmail(), Type: model.TEAM_OPEN, } - team = store.Must(ss.Team().Save(team)).(*model.Team) + team, err = ss.Team().Save(team) + require.Nil(t, err) // and two users that are a part of that team user1 := &model.User{ @@ -513,7 +518,8 @@ func testMessageExportGroupMessageChannel(t *testing.T, ss store.Store) { Email: MakeEmail(), Type: model.TEAM_OPEN, } - team = store.Must(ss.Team().Save(team)).(*model.Team) + team, err = ss.Team().Save(team) + require.Nil(t, err) // and three users that are a part of that team user1 := &model.User{ diff --git a/store/storetest/group_supplier.go b/store/storetest/group_supplier.go index cc189befe5..7ce444ec0d 100644 --- a/store/storetest/group_supplier.go +++ b/store/storetest/group_supplier.go @@ -647,9 +647,8 @@ func testCreateGroupSyncable(t *testing.T, ss store.Store) { Email: "success+" + model.NewId() + "@simulator.amazonses.com", Type: model.TEAM_OPEN, } - res5 := <-ss.Team().Save(t1) - require.Nil(t, res5.Err) - team := res5.Data.(*model.Team) + team, err := ss.Team().Save(t1) + require.Nil(t, err) // New GroupSyncable, happy path gt1 := model.NewGroupTeam(group.Id, team.Id, false) @@ -687,9 +686,8 @@ func testGetGroupSyncable(t *testing.T, ss store.Store) { Email: "success+" + model.NewId() + "@simulator.amazonses.com", Type: model.TEAM_OPEN, } - res2 := <-ss.Team().Save(t1) - require.Nil(t, res2.Err) - team := res2.Data.(*model.Team) + team, err := ss.Team().Save(t1) + require.Nil(t, err) // Create GroupSyncable gt1 := model.NewGroupTeam(group.Id, team.Id, false) @@ -739,9 +737,8 @@ func testGetAllGroupSyncablesByGroup(t *testing.T, ss store.Store) { Email: "success+" + model.NewId() + "@simulator.amazonses.com", Type: model.TEAM_OPEN, } - res2 := <-ss.Team().Save(t1) - require.Nil(t, res2.Err) - team := res2.Data.(*model.Team) + team, err := ss.Team().Save(t1) + require.Nil(t, err) // create groupteam res3 := <-ss.Group().CreateGroupSyncable(model.NewGroupTeam(group.Id, team.Id, false)) @@ -789,9 +786,8 @@ func testUpdateGroupSyncable(t *testing.T, ss store.Store) { Email: "success+" + model.NewId() + "@simulator.amazonses.com", Type: model.TEAM_OPEN, } - res5 := <-ss.Team().Save(t1) - require.Nil(t, res5.Err) - team := res5.Data.(*model.Team) + team, err := ss.Team().Save(t1) + require.Nil(t, err) // New GroupSyncable, happy path gt1 := model.NewGroupTeam(group.Id, team.Id, false) @@ -861,9 +857,8 @@ func testDeleteGroupSyncable(t *testing.T, ss store.Store) { Email: "success+" + model.NewId() + "@simulator.amazonses.com", Type: model.TEAM_OPEN, } - res2 := <-ss.Team().Save(t1) - require.Nil(t, res2.Err) - team := res2.Data.(*model.Team) + team, err := ss.Team().Save(t1) + require.Nil(t, err) // Create GroupSyncable gt1 := model.NewGroupTeam(group.Id, team.Id, false) @@ -931,9 +926,8 @@ func testPendingAutoAddTeamMembers(t *testing.T, ss store.Store) { Email: "success+" + model.NewId() + "@simulator.amazonses.com", Type: model.TEAM_OPEN, } - res = <-ss.Team().Save(team) - require.Nil(t, res.Err) - team = res.Data.(*model.Team) + team, err := ss.Team().Save(team) + require.Nil(t, err) // Create GroupTeam res = <-ss.Group().CreateGroupSyncable(model.NewGroupTeam(group.Id, team.Id, true)) @@ -1011,7 +1005,7 @@ func testPendingAutoAddTeamMembers(t *testing.T, ss store.Store) { // No result if Team deleted team.DeleteAt = model.GetMillis() - team, err := ss.Team().Update(team) + team, err = ss.Team().Update(team) require.Nil(t, err) res = <-ss.Group().TeamMembersToAdd(0) require.Nil(t, res.Err) @@ -1430,9 +1424,8 @@ func pendingMemberRemovalsDataSetup(t *testing.T, ss store.Store) *removalsData Type: model.TEAM_INVITE, GroupConstrained: model.NewBool(true), } - res = <-ss.Team().Save(teamConstrained) - require.Nil(t, res.Err) - teamConstrained = res.Data.(*model.Team) + teamConstrained, err := ss.Team().Save(teamConstrained) + require.Nil(t, err) teamUnconstrained := &model.Team{ DisplayName: "Name", @@ -1444,9 +1437,8 @@ func pendingMemberRemovalsDataSetup(t *testing.T, ss store.Store) *removalsData Email: "success+" + model.NewId() + "@simulator.amazonses.com", Type: model.TEAM_INVITE, } - res = <-ss.Team().Save(teamUnconstrained) - require.Nil(t, res.Err) - teamUnconstrained = res.Data.(*model.Team) + teamUnconstrained, err = ss.Team().Save(teamUnconstrained) + require.Nil(t, err) // create groupteams res = <-ss.Group().CreateGroupSyncable(model.NewGroupTeam(group.Id, teamConstrained.Id, true)) @@ -1648,12 +1640,11 @@ func testGetGroupsByTeam(t *testing.T, ss store.Store) { Email: "success+" + model.NewId() + "@simulator.amazonses.com", Type: model.TEAM_OPEN, } - res := <-ss.Team().Save(team1) - require.Nil(t, res.Err) - team1 = res.Data.(*model.Team) + team1, err := ss.Team().Save(team1) + require.Nil(t, err) // Create Groups 1 and 2 - res = <-ss.Group().Create(&model.Group{ + res := <-ss.Group().Create(&model.Group{ Name: model.NewId(), DisplayName: "group-1", RemoteId: model.NewId(), @@ -1693,9 +1684,8 @@ func testGetGroupsByTeam(t *testing.T, ss store.Store) { Email: "success+" + model.NewId() + "@simulator.amazonses.com", Type: model.TEAM_INVITE, } - res = <-ss.Team().Save(team2) - require.Nil(t, res.Err) - team2 = res.Data.(*model.Team) + team2, err = ss.Team().Save(team2) + require.Nil(t, err) // Create Group3 res = <-ss.Group().Create(&model.Group{ diff --git a/store/storetest/mocks/TeamStore.go b/store/storetest/mocks/TeamStore.go index 400311048c..281aa5da35 100644 --- a/store/storetest/mocks/TeamStore.go +++ b/store/storetest/mocks/TeamStore.go @@ -545,19 +545,28 @@ func (_m *TeamStore) ResetAllTeamSchemes() store.StoreChannel { } // Save provides a mock function with given fields: team -func (_m *TeamStore) Save(team *model.Team) store.StoreChannel { +func (_m *TeamStore) Save(team *model.Team) (*model.Team, *model.AppError) { ret := _m.Called(team) - var r0 store.StoreChannel - if rf, ok := ret.Get(0).(func(*model.Team) store.StoreChannel); ok { + var r0 *model.Team + if rf, ok := ret.Get(0).(func(*model.Team) *model.Team); ok { r0 = rf(team) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(store.StoreChannel) + r0 = ret.Get(0).(*model.Team) } } - return r0 + var r1 *model.AppError + if rf, ok := ret.Get(1).(func(*model.Team) *model.AppError); ok { + r1 = rf(team) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*model.AppError) + } + } + + return r0, r1 } // SaveMember provides a mock function with given fields: member, maxUsersPerTeam diff --git a/store/storetest/post_store.go b/store/storetest/post_store.go index 44ae6e694f..cbfa8896c2 100644 --- a/store/storetest/post_store.go +++ b/store/storetest/post_store.go @@ -1073,7 +1073,8 @@ func testUserCountsWithPostsByDay(t *testing.T, ss store.Store) { t1.Name = "zz" + model.NewId() + "b" t1.Email = MakeEmail() t1.Type = model.TEAM_OPEN - t1 = store.Must(ss.Team().Save(t1)).(*model.Team) + t1, err := ss.Team().Save(t1) + require.Nil(t, err) c1 := &model.Channel{} c1.TeamId = t1.Id @@ -1131,7 +1132,8 @@ func testPostCountsByDay(t *testing.T, ss store.Store) { t1.Name = "zz" + model.NewId() + "b" t1.Email = MakeEmail() t1.Type = model.TEAM_OPEN - t1 = store.Must(ss.Team().Save(t1)).(*model.Team) + t1, err := ss.Team().Save(t1) + require.Nil(t, err) c1 := &model.Channel{} c1.TeamId = t1.Id @@ -1873,7 +1875,8 @@ func testPostStoreGetParentsForExportAfter(t *testing.T, ss store.Store) { t1.Name = model.NewId() t1.Email = MakeEmail() t1.Type = model.TEAM_OPEN - store.Must(ss.Team().Save(&t1)) + _, err := ss.Team().Save(&t1) + require.Nil(t, err) c1 := model.Channel{} c1.TeamId = t1.Id @@ -1919,7 +1922,8 @@ func testPostStoreGetRepliesForExport(t *testing.T, ss store.Store) { t1.Name = model.NewId() t1.Email = MakeEmail() t1.Type = model.TEAM_OPEN - store.Must(ss.Team().Save(&t1)) + _, err := ss.Team().Save(&t1) + require.Nil(t, err) c1 := model.Channel{} c1.TeamId = t1.Id diff --git a/store/storetest/scheme_store.go b/store/storetest/scheme_store.go index da9102637f..2c920fa605 100644 --- a/store/storetest/scheme_store.go +++ b/store/storetest/scheme_store.go @@ -4,10 +4,10 @@ package storetest import ( - "github.com/stretchr/testify/require" "testing" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "github.com/mattermost/mattermost-server/model" "github.com/mattermost/mattermost-server/store" @@ -386,9 +386,8 @@ func testSchemeStoreDelete(t *testing.T, ss store.Store) { Type: model.TEAM_OPEN, SchemeId: &d4.Id, } - tres4 := <-ss.Team().Save(t4) - assert.Nil(t, tres4.Err) - t4 = tres4.Data.(*model.Team) + t4, err := ss.Team().Save(t4) + require.Nil(t, err) sres4 := <-ss.Scheme().Delete(d4.Id) assert.Nil(t, sres4.Err) diff --git a/store/storetest/status_store.go b/store/storetest/status_store.go index 5231bc29ac..f9c55d3366 100644 --- a/store/storetest/status_store.go +++ b/store/storetest/status_store.go @@ -127,7 +127,7 @@ func testGetAllFromTeam(t *testing.T, ss store.Store) { team1.Email = MakeEmail() team1.Type = model.TEAM_OPEN - if err := (<-ss.Team().Save(&team1)).Err; err != nil { + if _, err := ss.Team().Save(&team1); err != nil { t.Fatal("couldn't save team", err) } @@ -137,7 +137,7 @@ func testGetAllFromTeam(t *testing.T, ss store.Store) { team2.Email = MakeEmail() team2.Type = model.TEAM_OPEN - if err := (<-ss.Team().Save(&team2)).Err; err != nil { + if _, err := ss.Team().Save(&team2); err != nil { t.Fatal("couldn't save team", err) } diff --git a/store/storetest/team_store.go b/store/storetest/team_store.go index a9954e7137..aeb01e6da1 100644 --- a/store/storetest/team_store.go +++ b/store/storetest/team_store.go @@ -60,16 +60,16 @@ func testTeamStoreSave(t *testing.T, ss store.Store) { o1.Email = MakeEmail() o1.Type = model.TEAM_OPEN - if err := (<-ss.Team().Save(&o1)).Err; err != nil { + if _, err := ss.Team().Save(&o1); err != nil { t.Fatal("couldn't save item", err) } - if err := (<-ss.Team().Save(&o1)).Err; err == nil { + if _, err := ss.Team().Save(&o1); err == nil { t.Fatal("shouldn't be able to update from save") } o1.Id = "" - if err := (<-ss.Team().Save(&o1)).Err; err == nil { + if _, err := ss.Team().Save(&o1); err == nil { t.Fatal("should be unique domain") } } @@ -80,7 +80,7 @@ func testTeamStoreUpdate(t *testing.T, ss store.Store) { o1.Name = "z-z-z" + model.NewId() + "b" o1.Email = MakeEmail() o1.Type = model.TEAM_OPEN - if err := (<-ss.Team().Save(&o1)).Err; err != nil { + if _, err := ss.Team().Save(&o1); err != nil { t.Fatal(err) } @@ -107,11 +107,12 @@ func testTeamStoreUpdateDisplayName(t *testing.T, ss store.Store) { o1.Name = "z-z-z" + model.NewId() + "b" o1.Email = MakeEmail() o1.Type = model.TEAM_OPEN - o1 = (<-ss.Team().Save(o1)).Data.(*model.Team) + o1, err := ss.Team().Save(o1) + require.Nil(t, err) newDisplayName := "NewDisplayName" - if err := (<-ss.Team().UpdateDisplayName(newDisplayName, o1.Id)).Err; err != nil { + if err = (<-ss.Team().UpdateDisplayName(newDisplayName, o1.Id)).Err; err != nil { t.Fatal(err) } @@ -126,7 +127,8 @@ func testTeamStoreGet(t *testing.T, ss store.Store) { o1.Name = "z-z-z" + model.NewId() + "b" o1.Email = MakeEmail() o1.Type = model.TEAM_OPEN - store.Must(ss.Team().Save(&o1)) + _, err := ss.Team().Save(&o1) + require.Nil(t, err) r1, err := ss.Team().Get(o1.Id) require.Nil(t, err) @@ -143,7 +145,7 @@ func testTeamStoreGetByName(t *testing.T, ss store.Store) { o1.Email = MakeEmail() o1.Type = model.TEAM_OPEN - if err := (<-ss.Team().Save(&o1)).Err; err != nil { + if _, err := ss.Team().Save(&o1); err != nil { t.Fatal(err) } @@ -168,7 +170,7 @@ func testTeamStoreSearchByName(t *testing.T, ss store.Store) { o1.Email = MakeEmail() o1.Type = model.TEAM_OPEN - if err := (<-ss.Team().Save(&o1)).Err; err != nil { + if _, err := ss.Team().Save(&o1); err != nil { t.Fatal(err) } @@ -189,7 +191,8 @@ func testTeamStoreSearchAll(t *testing.T, ss store.Store) { o.Type = model.TEAM_OPEN o.AllowOpenInvite = true - require.Nil(t, (<-ss.Team().Save(&o)).Err) + _, err := ss.Team().Save(&o) + require.Nil(t, err) p := model.Team{} p.DisplayName = "ADisplayName" + model.NewId() @@ -198,7 +201,8 @@ func testTeamStoreSearchAll(t *testing.T, ss store.Store) { p.Type = model.TEAM_OPEN p.AllowOpenInvite = false - require.Nil(t, (<-ss.Team().Save(&p)).Err) + _, err = ss.Team().Save(&p) + require.Nil(t, err) testCases := []struct { Name string @@ -259,7 +263,8 @@ func testTeamStoreSearchOpen(t *testing.T, ss store.Store) { o.Type = model.TEAM_OPEN o.AllowOpenInvite = true - require.Nil(t, (<-ss.Team().Save(&o)).Err) + _, err := ss.Team().Save(&o) + require.Nil(t, err) p := model.Team{} p.DisplayName = "ADisplayName" + model.NewId() @@ -268,7 +273,8 @@ func testTeamStoreSearchOpen(t *testing.T, ss store.Store) { p.Type = model.TEAM_OPEN p.AllowOpenInvite = false - require.Nil(t, (<-ss.Team().Save(&p)).Err) + _, err = ss.Team().Save(&p) + require.Nil(t, err) testCases := []struct { Name string @@ -323,7 +329,8 @@ func testTeamStoreSearchPrivate(t *testing.T, ss store.Store) { o.Type = model.TEAM_OPEN o.AllowOpenInvite = true - require.Nil(t, (<-ss.Team().Save(&o)).Err) + _, err := ss.Team().Save(&o) + require.Nil(t, err) p := model.Team{} p.DisplayName = "ADisplayName" + model.NewId() @@ -332,7 +339,8 @@ func testTeamStoreSearchPrivate(t *testing.T, ss store.Store) { p.Type = model.TEAM_OPEN p.AllowOpenInvite = false - require.Nil(t, (<-ss.Team().Save(&p)).Err) + _, err = ss.Team().Save(&p) + require.Nil(t, err) testCases := []struct { Name string @@ -387,9 +395,8 @@ func testTeamStoreGetByInviteId(t *testing.T, ss store.Store) { o1.Type = model.TEAM_OPEN o1.InviteId = model.NewId() - save1 := <-ss.Team().Save(&o1) - - if err := save1.Err; err != nil { + save1, err := ss.Team().Save(&o1) + if err != nil { t.Fatal(err) } @@ -399,7 +406,7 @@ func testTeamStoreGetByInviteId(t *testing.T, ss store.Store) { o2.Email = MakeEmail() o2.Type = model.TEAM_OPEN - if r1 := <-ss.Team().GetByInviteId(save1.Data.(*model.Team).InviteId); r1.Err != nil { + if r1 := <-ss.Team().GetByInviteId(save1.InviteId); r1.Err != nil { t.Fatal(r1.Err) } else { if r1.Data.(*model.Team).ToJson() != o1.ToJson() { @@ -419,7 +426,8 @@ func testTeamStoreByUserId(t *testing.T, ss store.Store) { o1.Email = MakeEmail() o1.Type = model.TEAM_OPEN o1.InviteId = model.NewId() - o1 = store.Must(ss.Team().Save(o1)).(*model.Team) + o1, err := ss.Team().Save(o1) + require.Nil(t, err) m1 := &model.TeamMember{TeamId: o1.Id, UserId: model.NewId()} store.Must(ss.Team().SaveMember(m1, -1)) @@ -446,14 +454,16 @@ func testGetAllTeamListing(t *testing.T, ss store.Store) { o1.Email = MakeEmail() o1.Type = model.TEAM_OPEN o1.AllowOpenInvite = true - store.Must(ss.Team().Save(&o1)) + _, err := ss.Team().Save(&o1) + require.Nil(t, err) o2 := model.Team{} o2.DisplayName = "DisplayName" o2.Name = "zz" + model.NewId() + "b" o2.Email = MakeEmail() o2.Type = model.TEAM_OPEN - store.Must(ss.Team().Save(&o2)) + _, err = ss.Team().Save(&o2) + require.Nil(t, err) o3 := model.Team{} o3.DisplayName = "DisplayName" @@ -461,14 +471,16 @@ func testGetAllTeamListing(t *testing.T, ss store.Store) { o3.Email = MakeEmail() o3.Type = model.TEAM_INVITE o3.AllowOpenInvite = true - store.Must(ss.Team().Save(&o3)) + _, err = ss.Team().Save(&o3) + require.Nil(t, err) o4 := model.Team{} o4.DisplayName = "DisplayName" o4.Name = "zz" + model.NewId() + "b" o4.Email = MakeEmail() o4.Type = model.TEAM_INVITE - store.Must(ss.Team().Save(&o4)) + _, err = ss.Team().Save(&o4) + require.Nil(t, err) if r1 := <-ss.Team().GetAllTeamListing(); r1.Err != nil { t.Fatal(r1.Err) @@ -494,7 +506,8 @@ func testGetAllTeamPageListing(t *testing.T, ss store.Store) { o1.Email = MakeEmail() o1.Type = model.TEAM_OPEN o1.AllowOpenInvite = true - store.Must(ss.Team().Save(&o1)) + _, err := ss.Team().Save(&o1) + require.Nil(t, err) o2 := model.Team{} o2.DisplayName = "DisplayName" @@ -502,7 +515,8 @@ func testGetAllTeamPageListing(t *testing.T, ss store.Store) { o2.Email = MakeEmail() o2.Type = model.TEAM_OPEN o2.AllowOpenInvite = false - store.Must(ss.Team().Save(&o2)) + _, err = ss.Team().Save(&o2) + require.Nil(t, err) o3 := model.Team{} o3.DisplayName = "DisplayName" @@ -510,7 +524,8 @@ func testGetAllTeamPageListing(t *testing.T, ss store.Store) { o3.Email = MakeEmail() o3.Type = model.TEAM_INVITE o3.AllowOpenInvite = true - store.Must(ss.Team().Save(&o3)) + _, err = ss.Team().Save(&o3) + require.Nil(t, err) o4 := model.Team{} o4.DisplayName = "DisplayName" @@ -518,7 +533,8 @@ func testGetAllTeamPageListing(t *testing.T, ss store.Store) { o4.Email = MakeEmail() o4.Type = model.TEAM_INVITE o4.AllowOpenInvite = false - store.Must(ss.Team().Save(&o4)) + _, err = ss.Team().Save(&o4) + require.Nil(t, err) if r1 := <-ss.Team().GetAllTeamPageListing(0, 10); r1.Err != nil { t.Fatal(r1.Err) @@ -542,7 +558,8 @@ func testGetAllTeamPageListing(t *testing.T, ss store.Store) { o5.Email = MakeEmail() o5.Type = model.TEAM_OPEN o5.AllowOpenInvite = true - store.Must(ss.Team().Save(&o5)) + _, err = ss.Team().Save(&o5) + require.Nil(t, err) if r1 := <-ss.Team().GetAllTeamPageListing(0, 4); r1.Err != nil { t.Fatal(r1.Err) @@ -584,14 +601,16 @@ func testGetAllPrivateTeamListing(t *testing.T, ss store.Store) { o1.Email = MakeEmail() o1.Type = model.TEAM_OPEN o1.AllowOpenInvite = true - store.Must(ss.Team().Save(&o1)) + _, err := ss.Team().Save(&o1) + require.Nil(t, err) o2 := model.Team{} o2.DisplayName = "DisplayName" o2.Name = "zz" + model.NewId() + "b" o2.Email = MakeEmail() o2.Type = model.TEAM_OPEN - store.Must(ss.Team().Save(&o2)) + _, err = ss.Team().Save(&o2) + require.Nil(t, err) o3 := model.Team{} o3.DisplayName = "DisplayName" @@ -599,14 +618,16 @@ func testGetAllPrivateTeamListing(t *testing.T, ss store.Store) { o3.Email = MakeEmail() o3.Type = model.TEAM_INVITE o3.AllowOpenInvite = true - store.Must(ss.Team().Save(&o3)) + _, err = ss.Team().Save(&o3) + require.Nil(t, err) o4 := model.Team{} o4.DisplayName = "DisplayName" o4.Name = "zz" + model.NewId() + "b" o4.Email = MakeEmail() o4.Type = model.TEAM_INVITE - store.Must(ss.Team().Save(&o4)) + _, err = ss.Team().Save(&o4) + require.Nil(t, err) if r1 := <-ss.Team().GetAllPrivateTeamListing(); r1.Err != nil { t.Fatal(r1.Err) @@ -632,7 +653,8 @@ func testGetAllPrivateTeamPageListing(t *testing.T, ss store.Store) { o1.Email = MakeEmail() o1.Type = model.TEAM_OPEN o1.AllowOpenInvite = true - store.Must(ss.Team().Save(&o1)) + _, err := ss.Team().Save(&o1) + require.Nil(t, err) o2 := model.Team{} o2.DisplayName = "DisplayName" @@ -640,7 +662,8 @@ func testGetAllPrivateTeamPageListing(t *testing.T, ss store.Store) { o2.Email = MakeEmail() o2.Type = model.TEAM_OPEN o2.AllowOpenInvite = false - store.Must(ss.Team().Save(&o2)) + _, err = ss.Team().Save(&o2) + require.Nil(t, err) o3 := model.Team{} o3.DisplayName = "DisplayName" @@ -648,7 +671,8 @@ func testGetAllPrivateTeamPageListing(t *testing.T, ss store.Store) { o3.Email = MakeEmail() o3.Type = model.TEAM_INVITE o3.AllowOpenInvite = true - store.Must(ss.Team().Save(&o3)) + _, err = ss.Team().Save(&o3) + require.Nil(t, err) o4 := model.Team{} o4.DisplayName = "DisplayName" @@ -656,7 +680,8 @@ func testGetAllPrivateTeamPageListing(t *testing.T, ss store.Store) { o4.Email = MakeEmail() o4.Type = model.TEAM_INVITE o4.AllowOpenInvite = false - store.Must(ss.Team().Save(&o4)) + _, err = ss.Team().Save(&o4) + require.Nil(t, err) if r1 := <-ss.Team().GetAllPrivateTeamPageListing(0, 10); r1.Err != nil { t.Fatal(r1.Err) @@ -680,7 +705,8 @@ func testGetAllPrivateTeamPageListing(t *testing.T, ss store.Store) { o5.Email = MakeEmail() o5.Type = model.TEAM_OPEN o5.AllowOpenInvite = true - store.Must(ss.Team().Save(&o5)) + _, err = ss.Team().Save(&o5) + require.Nil(t, err) if r1 := <-ss.Team().GetAllPrivateTeamPageListing(0, 4); r1.Err != nil { t.Fatal(r1.Err) @@ -722,14 +748,16 @@ func testDelete(t *testing.T, ss store.Store) { o1.Email = MakeEmail() o1.Type = model.TEAM_OPEN o1.AllowOpenInvite = true - store.Must(ss.Team().Save(&o1)) + _, err := ss.Team().Save(&o1) + require.Nil(t, err) o2 := model.Team{} o2.DisplayName = "DisplayName" o2.Name = "zz" + model.NewId() + "b" o2.Email = MakeEmail() o2.Type = model.TEAM_OPEN - store.Must(ss.Team().Save(&o2)) + _, err = ss.Team().Save(&o2) + require.Nil(t, err) if r1 := <-ss.Team().PermanentDelete(o1.Id); r1.Err != nil { t.Fatal(r1.Err) @@ -743,7 +771,8 @@ func testTeamCount(t *testing.T, ss store.Store) { o1.Email = MakeEmail() o1.Type = model.TEAM_OPEN o1.AllowOpenInvite = true - store.Must(ss.Team().Save(&o1)) + _, err := ss.Team().Save(&o1) + require.Nil(t, err) if r1 := <-ss.Team().AnalyticsTeamCount(); r1.Err != nil { t.Fatal(r1.Err) @@ -907,11 +936,12 @@ func testTeamMembersWithPagination(t *testing.T, ss store.Store) { func testSaveTeamMemberMaxMembers(t *testing.T, ss store.Store) { maxUsersPerTeam := 5 - team := store.Must(ss.Team().Save(&model.Team{ + team, err := ss.Team().Save(&model.Team{ DisplayName: "DisplayName", Name: "z-z-z" + model.NewId() + "b", Type: model.TEAM_OPEN, - })).(*model.Team) + }) + require.Nil(t, err) defer func() { <-ss.Team().PermanentDelete(team.Id) }() @@ -1049,12 +1079,13 @@ func testGetTeamMember(t *testing.T, ss store.Store) { s2 = (<-ss.Scheme().Save(s2)).Data.(*model.Scheme) t.Log(s2) - t2 := store.Must(ss.Team().Save(&model.Team{ + t2, err := ss.Team().Save(&model.Team{ DisplayName: "DisplayName", Name: "z-z-z" + model.NewId() + "b", Type: model.TEAM_OPEN, SchemeId: &s2.Id, - })).(*model.Team) + }) + require.Nil(t, err) defer func() { <-ss.Team().PermanentDelete(t2.Id) @@ -1270,11 +1301,12 @@ func testUpdateLastTeamIconUpdate(t *testing.T, ss store.Store) { o1.Email = MakeEmail() o1.Type = model.TEAM_OPEN o1.LastTeamIconUpdate = lastTeamIconUpdateInitial - o1 = (<-ss.Team().Save(o1)).Data.(*model.Team) + o1, err := ss.Team().Save(o1) + require.Nil(t, err) curTime := model.GetMillis() - if err := (<-ss.Team().UpdateLastTeamIconUpdate(o1.Id, curTime)).Err; err != nil { + if err = (<-ss.Team().UpdateLastTeamIconUpdate(o1.Id, curTime)).Err; err != nil { t.Fatal(err) } @@ -1329,9 +1361,14 @@ func testGetTeamsByScheme(t *testing.T, ss store.Store) { Type: model.TEAM_OPEN, } - _ = (<-ss.Team().Save(t1)).Data.(*model.Team) - _ = (<-ss.Team().Save(t2)).Data.(*model.Team) - _ = (<-ss.Team().Save(t3)).Data.(*model.Team) + _, err := ss.Team().Save(t1) + require.Nil(t, err) + + _, err = ss.Team().Save(t2) + require.Nil(t, err) + + _, err = ss.Team().Save(t3) + require.Nil(t, err) // Get the teams by a valid Scheme ID. res1 := <-ss.Team().GetTeamsByScheme(s1.Id, 0, 100) @@ -1362,7 +1399,8 @@ func testTeamStoreMigrateTeamMembers(t *testing.T, ss store.Store) { InviteId: model.NewId(), SchemeId: &s1, } - t1 = store.Must(ss.Team().Save(t1)).(*model.Team) + t1, err := ss.Team().Save(t1) + require.Nil(t, err) tm1 := &model.TeamMember{ TeamId: t1.Id, @@ -1446,8 +1484,10 @@ func testResetAllTeamSchemes(t *testing.T, ss store.Store) { SchemeId: &s1.Id, } - t1 = (<-ss.Team().Save(t1)).Data.(*model.Team) - t2 = (<-ss.Team().Save(t2)).Data.(*model.Team) + t1, err := ss.Team().Save(t1) + require.Nil(t, err) + t2, err = ss.Team().Save(t2) + require.Nil(t, err) assert.Equal(t, s1.Id, *t1.SchemeId) assert.Equal(t, s1.Id, *t2.SchemeId) @@ -1455,7 +1495,7 @@ func testResetAllTeamSchemes(t *testing.T, ss store.Store) { res := <-ss.Team().ResetAllTeamSchemes() assert.Nil(t, res.Err) - t1, err := ss.Team().Get(t1.Id) + t1, err = ss.Team().Get(t1.Id) require.Nil(t, err) t2, err = ss.Team().Get(t2.Id) @@ -1530,7 +1570,8 @@ func testTeamStoreAnalyticsGetTeamCountForScheme(t *testing.T, ss store.Store) { Type: model.TEAM_OPEN, SchemeId: &s1.Id, } - _ = (<-ss.Team().Save(t1)).Data.(*model.Team) + _, err := ss.Team().Save(t1) + require.Nil(t, err) count2 := (<-ss.Team().AnalyticsGetTeamCountForScheme(s1.Id)).Data.(int64) assert.Equal(t, int64(1), count2) @@ -1542,7 +1583,8 @@ func testTeamStoreAnalyticsGetTeamCountForScheme(t *testing.T, ss store.Store) { Type: model.TEAM_OPEN, SchemeId: &s1.Id, } - _ = (<-ss.Team().Save(t2)).Data.(*model.Team) + _, err = ss.Team().Save(t2) + require.Nil(t, err) count3 := (<-ss.Team().AnalyticsGetTeamCountForScheme(s1.Id)).Data.(int64) assert.Equal(t, int64(2), count3) @@ -1553,7 +1595,8 @@ func testTeamStoreAnalyticsGetTeamCountForScheme(t *testing.T, ss store.Store) { Email: MakeEmail(), Type: model.TEAM_OPEN, } - _ = (<-ss.Team().Save(t3)).Data.(*model.Team) + _, err = ss.Team().Save(t3) + require.Nil(t, err) count4 := (<-ss.Team().AnalyticsGetTeamCountForScheme(s1.Id)).Data.(int64) assert.Equal(t, int64(2), count4) @@ -1566,7 +1609,8 @@ func testTeamStoreAnalyticsGetTeamCountForScheme(t *testing.T, ss store.Store) { SchemeId: &s1.Id, DeleteAt: model.GetMillis(), } - _ = (<-ss.Team().Save(t4)).Data.(*model.Team) + _, err = ss.Team().Save(t4) + require.Nil(t, err) count5 := (<-ss.Team().AnalyticsGetTeamCountForScheme(s1.Id)).Data.(int64) assert.Equal(t, int64(2), count5) @@ -1578,7 +1622,8 @@ func testTeamStoreGetAllForExportAfter(t *testing.T, ss store.Store) { t1.Name = model.NewId() t1.Email = MakeEmail() t1.Type = model.TEAM_OPEN - store.Must(ss.Team().Save(&t1)) + _, err := ss.Team().Save(&t1) + require.Nil(t, err) r1 := <-ss.Team().GetAllForExportAfter(10000, strings.Repeat("0", 26)) assert.Nil(t, r1.Err) @@ -1602,7 +1647,8 @@ func testTeamStoreGetTeamMembersForExport(t *testing.T, ss store.Store) { t1.Name = model.NewId() t1.Email = MakeEmail() t1.Type = model.TEAM_OPEN - store.Must(ss.Team().Save(&t1)) + _, err := ss.Team().Save(&t1) + require.Nil(t, err) u1 := model.User{} u1.Email = MakeEmail() diff --git a/store/storetest/user_store.go b/store/storetest/user_store.go index 36244fdd38..6047fa88bd 100644 --- a/store/storetest/user_store.go +++ b/store/storetest/user_store.go @@ -3325,11 +3325,12 @@ func testUserStoreGetAllAfter(t *testing.T, ss store.Store) { func testUserStoreGetUsersBatchForIndexing(t *testing.T, ss store.Store) { // Set up all the objects needed - t1 := store.Must(ss.Team().Save(&model.Team{ + t1, err := ss.Team().Save(&model.Team{ DisplayName: "Team1", Name: model.NewId(), Type: model.TEAM_OPEN, - })).(*model.Team) + }) + require.Nil(t, err) cPub1 := store.Must(ss.Channel().Save(&model.Channel{ Name: model.NewId(), Type: model.CHANNEL_OPEN, @@ -3445,21 +3446,20 @@ func testUserStoreGetUsersBatchForIndexing(t *testing.T, ss store.Store) { func testUserStoreGetTeamGroupUsers(t *testing.T, ss store.Store) { // create team id := model.NewId() - res := <-ss.Team().Save(&model.Team{ + team, err := ss.Team().Save(&model.Team{ DisplayName: "dn_" + id, Name: "n-" + id, Email: id + "@test.com", Type: model.TEAM_INVITE, }) - require.Nil(t, res.Err) - team := res.Data.(*model.Team) + require.Nil(t, err) require.NotNil(t, team) // create users var testUsers []*model.User for i := 0; i < 3; i++ { id = model.NewId() - res = <-ss.User().Save(&model.User{ + res := <-ss.User().Save(&model.User{ Email: id + "@test.com", Username: "un_" + id, Nickname: "nn_" + id, @@ -3477,7 +3477,7 @@ func testUserStoreGetTeamGroupUsers(t *testing.T, ss store.Store) { userNoGroup := testUsers[2] // add non-group-member to the team (to prove that the query isn't just returning all members) - res = <-ss.Team().SaveMember(&model.TeamMember{ + res := <-ss.Team().SaveMember(&model.TeamMember{ TeamId: team.Id, UserId: userNoGroup.Id, }, 999) @@ -3530,7 +3530,7 @@ func testUserStoreGetTeamGroupUsers(t *testing.T, ss store.Store) { // update team to be group-constrained team.GroupConstrained = model.NewBool(true) - team, err := ss.Team().Update(team) + team, err = ss.Team().Update(team) require.Nil(t, err) // still returns user (being group-constrained has no effect)