From 8bbee74ed811e7aa8167ad7cea6d05042a90f446 Mon Sep 17 00:00:00 2001 From: George Goldberg Date: Thu, 23 Aug 2018 11:48:57 +0100 Subject: MM-11348: Add telemetry for advanced permissions. (#9249) --- store/sqlstore/team_store.go | 11 +++++++ store/store.go | 1 + store/storetest/mocks/TeamStore.go | 16 ++++++++++ store/storetest/team_store.go | 62 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 90 insertions(+) (limited to 'store') diff --git a/store/sqlstore/team_store.go b/store/sqlstore/team_store.go index 4277a0ba2..d9e33df76 100644 --- a/store/sqlstore/team_store.go +++ b/store/sqlstore/team_store.go @@ -913,3 +913,14 @@ func (s SqlTeamStore) ClearAllCustomRoleAssignments() store.StoreChannel { } }) } + +func (s SqlTeamStore) AnalyticsGetTeamCountForScheme(schemeId string) store.StoreChannel { + return store.Do(func(result *store.StoreResult) { + count, err := s.GetReplica().SelectInt("SELECT count(*) FROM Teams WHERE SchemeId = :SchemeId AND DeleteAt = 0", map[string]interface{}{"SchemeId": schemeId}) + if err != nil { + result.Err = model.NewAppError("SqlTeamStore.AnalyticsGetTeamCountForScheme", "store.sql_team.analytics_get_team_count_for_scheme.app_error", nil, "schemeId="+schemeId+" "+err.Error(), http.StatusInternalServerError) + return + } + result.Data = count + }) +} diff --git a/store/store.go b/store/store.go index 89adce188..34ba08091 100644 --- a/store/store.go +++ b/store/store.go @@ -110,6 +110,7 @@ type TeamStore interface { MigrateTeamMembers(fromTeamId string, fromUserId string) StoreChannel ResetAllTeamSchemes() StoreChannel ClearAllCustomRoleAssignments() StoreChannel + AnalyticsGetTeamCountForScheme(schemeId string) StoreChannel } type ChannelStore interface { diff --git a/store/storetest/mocks/TeamStore.go b/store/storetest/mocks/TeamStore.go index db5cb658f..8e27e3c05 100644 --- a/store/storetest/mocks/TeamStore.go +++ b/store/storetest/mocks/TeamStore.go @@ -13,6 +13,22 @@ type TeamStore struct { mock.Mock } +// AnalyticsGetTeamCountForScheme provides a mock function with given fields: schemeId +func (_m *TeamStore) AnalyticsGetTeamCountForScheme(schemeId string) store.StoreChannel { + ret := _m.Called(schemeId) + + var r0 store.StoreChannel + if rf, ok := ret.Get(0).(func(string) store.StoreChannel); ok { + r0 = rf(schemeId) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(store.StoreChannel) + } + } + + return r0 +} + // AnalyticsTeamCount provides a mock function with given fields: func (_m *TeamStore) AnalyticsTeamCount() store.StoreChannel { ret := _m.Called() diff --git a/store/storetest/team_store.go b/store/storetest/team_store.go index 2840f2965..ede1a91d3 100644 --- a/store/storetest/team_store.go +++ b/store/storetest/team_store.go @@ -44,6 +44,7 @@ func TestTeamStore(t *testing.T, ss store.Store) { t.Run("MigrateTeamMembers", func(t *testing.T) { testTeamStoreMigrateTeamMembers(t, ss) }) t.Run("ResetAllTeamSchemes", func(t *testing.T) { testResetAllTeamSchemes(t, ss) }) t.Run("ClearAllCustomRoleAssignments", func(t *testing.T) { testTeamStoreClearAllCustomRoleAssignments(t, ss) }) + t.Run("AnalyticsGetTeamCountForScheme", func(t *testing.T) { testTeamStoreAnalyticsGetTeamCountForScheme(t, ss) }) } func testTeamStoreSave(t *testing.T, ss store.Store) { @@ -1265,3 +1266,64 @@ func testTeamStoreClearAllCustomRoleAssignments(t *testing.T, ss store.Store) { require.Nil(t, r4.Err) assert.Equal(t, "", r4.Data.(*model.TeamMember).Roles) } + +func testTeamStoreAnalyticsGetTeamCountForScheme(t *testing.T, ss store.Store) { + s1 := &model.Scheme{ + DisplayName: model.NewId(), + Name: model.NewId(), + Description: model.NewId(), + Scope: model.SCHEME_SCOPE_TEAM, + } + s1 = (<-ss.Scheme().Save(s1)).Data.(*model.Scheme) + + count1 := (<-ss.Team().AnalyticsGetTeamCountForScheme(s1.Id)).Data.(int64) + assert.Equal(t, int64(0), count1) + + t1 := &model.Team{ + Name: model.NewId(), + DisplayName: model.NewId(), + Email: MakeEmail(), + Type: model.TEAM_OPEN, + SchemeId: &s1.Id, + } + t1 = (<-ss.Team().Save(t1)).Data.(*model.Team) + + count2 := (<-ss.Team().AnalyticsGetTeamCountForScheme(s1.Id)).Data.(int64) + assert.Equal(t, int64(1), count2) + + t2 := &model.Team{ + Name: model.NewId(), + DisplayName: model.NewId(), + Email: MakeEmail(), + Type: model.TEAM_OPEN, + SchemeId: &s1.Id, + } + t2 = (<-ss.Team().Save(t2)).Data.(*model.Team) + + count3 := (<-ss.Team().AnalyticsGetTeamCountForScheme(s1.Id)).Data.(int64) + assert.Equal(t, int64(2), count3) + + t3 := &model.Team{ + Name: model.NewId(), + DisplayName: model.NewId(), + Email: MakeEmail(), + Type: model.TEAM_OPEN, + } + t3 = (<-ss.Team().Save(t3)).Data.(*model.Team) + + count4 := (<-ss.Team().AnalyticsGetTeamCountForScheme(s1.Id)).Data.(int64) + assert.Equal(t, int64(2), count4) + + t4 := &model.Team{ + Name: model.NewId(), + DisplayName: model.NewId(), + Email: MakeEmail(), + Type: model.TEAM_OPEN, + SchemeId: &s1.Id, + DeleteAt: model.GetMillis(), + } + t4 = (<-ss.Team().Save(t4)).Data.(*model.Team) + + count5 := (<-ss.Team().AnalyticsGetTeamCountForScheme(s1.Id)).Data.(int64) + assert.Equal(t, int64(2), count5) +} -- cgit v1.2.3-1-g7c22