summaryrefslogtreecommitdiffstats
path: root/store/storetest/team_store.go
diff options
context:
space:
mode:
Diffstat (limited to 'store/storetest/team_store.go')
-rw-r--r--store/storetest/team_store.go184
1 files changed, 184 insertions, 0 deletions
diff --git a/store/storetest/team_store.go b/store/storetest/team_store.go
index cab06f87f..b209b48c4 100644
--- a/store/storetest/team_store.go
+++ b/store/storetest/team_store.go
@@ -4,14 +4,19 @@
package storetest
import (
+ "strings"
"testing"
"time"
+ "github.com/stretchr/testify/assert"
+
"github.com/mattermost/mattermost-server/model"
"github.com/mattermost/mattermost-server/store"
)
func TestTeamStore(t *testing.T, ss store.Store) {
+ createDefaultRoles(t, ss)
+
t.Run("Save", func(t *testing.T) { testTeamStoreSave(t, ss) })
t.Run("Update", func(t *testing.T) { testTeamStoreUpdate(t, ss) })
t.Run("UpdateDisplayName", func(t *testing.T) { testTeamStoreUpdateDisplayName(t, ss) })
@@ -34,6 +39,9 @@ func TestTeamStore(t *testing.T, ss store.Store) {
t.Run("GetChannelUnreadsForAllTeams", func(t *testing.T) { testGetChannelUnreadsForAllTeams(t, ss) })
t.Run("GetChannelUnreadsForTeam", func(t *testing.T) { testGetChannelUnreadsForTeam(t, ss) })
t.Run("UpdateLastTeamIconUpdate", func(t *testing.T) { testUpdateLastTeamIconUpdate(t, ss) })
+ t.Run("GetTeamsByScheme", func(t *testing.T) { testGetTeamsByScheme(t, ss) })
+ t.Run("MigrateTeamMembers", func(t *testing.T) { testTeamStoreMigrateTeamMembers(t, ss) })
+ t.Run("ResetAllTeamSchemes", func(t *testing.T) { testResetAllTeamSchemes(t, ss) })
}
func testTeamStoreSave(t *testing.T, ss store.Store) {
@@ -1029,3 +1037,179 @@ func testUpdateLastTeamIconUpdate(t *testing.T, ss store.Store) {
t.Fatal("LastTeamIconUpdate not updated")
}
}
+
+func testGetTeamsByScheme(t *testing.T, ss store.Store) {
+ // Create some schemes.
+ s1 := &model.Scheme{
+ DisplayName: model.NewId(),
+ Name: model.NewId(),
+ Description: model.NewId(),
+ Scope: model.SCHEME_SCOPE_TEAM,
+ }
+
+ s2 := &model.Scheme{
+ DisplayName: model.NewId(),
+ Name: model.NewId(),
+ Description: model.NewId(),
+ Scope: model.SCHEME_SCOPE_TEAM,
+ }
+
+ s1 = (<-ss.Scheme().Save(s1)).Data.(*model.Scheme)
+ s2 = (<-ss.Scheme().Save(s2)).Data.(*model.Scheme)
+
+ // Create and save some teams.
+ t1 := &model.Team{
+ Name: model.NewId(),
+ DisplayName: model.NewId(),
+ Email: model.NewId() + "@nowhere.com",
+ Type: model.TEAM_OPEN,
+ SchemeId: &s1.Id,
+ }
+
+ t2 := &model.Team{
+ Name: model.NewId(),
+ DisplayName: model.NewId(),
+ Email: model.NewId() + "@nowhere.com",
+ Type: model.TEAM_OPEN,
+ SchemeId: &s1.Id,
+ }
+
+ t3 := &model.Team{
+ Name: model.NewId(),
+ DisplayName: model.NewId(),
+ Email: model.NewId() + "@nowhere.com",
+ Type: model.TEAM_OPEN,
+ }
+
+ t1 = (<-ss.Team().Save(t1)).Data.(*model.Team)
+ t2 = (<-ss.Team().Save(t2)).Data.(*model.Team)
+ t3 = (<-ss.Team().Save(t3)).Data.(*model.Team)
+
+ // Get the teams by a valid Scheme ID.
+ res1 := <-ss.Team().GetTeamsByScheme(s1.Id, 0, 100)
+ assert.Nil(t, res1.Err)
+ d1 := res1.Data.([]*model.Team)
+ assert.Len(t, d1, 2)
+
+ // Get the teams by a valid Scheme ID where there aren't any matching Teams.
+ res2 := <-ss.Team().GetTeamsByScheme(s2.Id, 0, 100)
+ assert.Nil(t, res2.Err)
+ d2 := res2.Data.([]*model.Team)
+ assert.Len(t, d2, 0)
+
+ // Get the teams by an invalid Scheme ID.
+ res3 := <-ss.Team().GetTeamsByScheme(model.NewId(), 0, 100)
+ assert.Nil(t, res3.Err)
+ d3 := res3.Data.([]*model.Team)
+ assert.Len(t, d3, 0)
+}
+
+func testTeamStoreMigrateTeamMembers(t *testing.T, ss store.Store) {
+ s1 := model.NewId()
+ t1 := &model.Team{
+ DisplayName: "Name",
+ Name: "z-z-z" + model.NewId() + "b",
+ Email: model.NewId() + "@nowhere.com",
+ Type: model.TEAM_OPEN,
+ InviteId: model.NewId(),
+ SchemeId: &s1,
+ }
+ t1 = store.Must(ss.Team().Save(t1)).(*model.Team)
+
+ tm1 := &model.TeamMember{
+ TeamId: t1.Id,
+ UserId: model.NewId(),
+ ExplicitRoles: "team_admin team_user",
+ }
+ tm2 := &model.TeamMember{
+ TeamId: t1.Id,
+ UserId: model.NewId(),
+ ExplicitRoles: "team_user",
+ }
+ tm3 := &model.TeamMember{
+ TeamId: t1.Id,
+ UserId: model.NewId(),
+ ExplicitRoles: "something_else",
+ }
+
+ tm1 = (<-ss.Team().SaveMember(tm1, -1)).Data.(*model.TeamMember)
+ tm2 = (<-ss.Team().SaveMember(tm2, -1)).Data.(*model.TeamMember)
+ tm3 = (<-ss.Team().SaveMember(tm3, -1)).Data.(*model.TeamMember)
+
+ lastDoneTeamId := strings.Repeat("0", 26)
+ lastDoneUserId := strings.Repeat("0", 26)
+
+ for {
+ res := <-ss.Team().MigrateTeamMembers(lastDoneTeamId, lastDoneUserId)
+ if assert.Nil(t, res.Err) {
+ if res.Data == nil {
+ break
+ }
+ data := res.Data.(map[string]string)
+ lastDoneTeamId = data["TeamId"]
+ lastDoneUserId = data["UserId"]
+ }
+ }
+
+ res1 := <-ss.Team().GetMember(tm1.TeamId, tm1.UserId)
+ assert.Nil(t, res1.Err)
+ tm1b := res1.Data.(*model.TeamMember)
+ assert.Equal(t, "", tm1b.ExplicitRoles)
+ assert.True(t, tm1b.SchemeUser)
+ assert.True(t, tm1b.SchemeAdmin)
+
+ res2 := <-ss.Team().GetMember(tm2.TeamId, tm2.UserId)
+ assert.Nil(t, res2.Err)
+ tm2b := res2.Data.(*model.TeamMember)
+ assert.Equal(t, "", tm2b.ExplicitRoles)
+ assert.True(t, tm2b.SchemeUser)
+ assert.False(t, tm2b.SchemeAdmin)
+
+ res3 := <-ss.Team().GetMember(tm3.TeamId, tm3.UserId)
+ assert.Nil(t, res3.Err)
+ tm3b := res3.Data.(*model.TeamMember)
+ assert.Equal(t, "something_else", tm3b.ExplicitRoles)
+ assert.False(t, tm3b.SchemeUser)
+ assert.False(t, tm3b.SchemeAdmin)
+}
+
+func testResetAllTeamSchemes(t *testing.T, ss store.Store) {
+ s1 := &model.Scheme{
+ Name: model.NewId(),
+ DisplayName: model.NewId(),
+ Description: model.NewId(),
+ Scope: model.SCHEME_SCOPE_TEAM,
+ }
+ s1 = (<-ss.Scheme().Save(s1)).Data.(*model.Scheme)
+
+ t1 := &model.Team{
+ Name: model.NewId(),
+ DisplayName: model.NewId(),
+ Email: model.NewId() + "@nowhere.com",
+ Type: model.TEAM_OPEN,
+ SchemeId: &s1.Id,
+ }
+
+ t2 := &model.Team{
+ Name: model.NewId(),
+ DisplayName: model.NewId(),
+ Email: model.NewId() + "@nowhere.com",
+ Type: model.TEAM_OPEN,
+ SchemeId: &s1.Id,
+ }
+
+ t1 = (<-ss.Team().Save(t1)).Data.(*model.Team)
+ t2 = (<-ss.Team().Save(t2)).Data.(*model.Team)
+
+ assert.Equal(t, s1.Id, *t1.SchemeId)
+ assert.Equal(t, s1.Id, *t2.SchemeId)
+
+ res := <-ss.Team().ResetAllTeamSchemes()
+ assert.Nil(t, res.Err)
+
+ t1 = (<-ss.Team().Get(t1.Id)).Data.(*model.Team)
+ t2 = (<-ss.Team().Get(t2.Id)).Data.(*model.Team)
+
+ assert.Equal(t, "", *t1.SchemeId)
+ assert.Equal(t, "", *t2.SchemeId)
+}