mirror of
https://github.com/mattermost/mattermost.git
synced 2025-02-25 18:55:24 -06:00
XYZ-35: Added Support for GlobalRelay Compliance Export Format
* Added username to ChannelMemberHistory struct in anticipation of supporting GlobalRelay in Compliance Export * Removed translation from debug output - this makes it complicated to use utils functions from tests in the enterprise repo * Added an advanced email function that allows for greater control over message details. Updated MessageExport config to support GlobalRelay. Added attachment support to InBucket unit tests * Moving templates in from enterprise to solve test issues * Added export format to diagnostics * Changed email attachment code to use FileBackend so that S3 storage is properly supported
This commit is contained in:
@@ -110,7 +110,8 @@ func (s SqlChannelMemberHistoryStore) getFromChannelMemberHistoryTable(startTime
|
||||
query := `
|
||||
SELECT
|
||||
cmh.*,
|
||||
u.Email
|
||||
u.Email,
|
||||
u.Username
|
||||
FROM ChannelMemberHistory cmh
|
||||
INNER JOIN Users u ON cmh.UserId = u.Id
|
||||
WHERE cmh.ChannelId = :ChannelId
|
||||
@@ -130,9 +131,10 @@ func (s SqlChannelMemberHistoryStore) getFromChannelMemberHistoryTable(startTime
|
||||
func (s SqlChannelMemberHistoryStore) getFromChannelMembersTable(startTime int64, endTime int64, channelId string) ([]*model.ChannelMemberHistory, error) {
|
||||
query := `
|
||||
SELECT DISTINCT
|
||||
ch.ChannelId,
|
||||
ch.UserId,
|
||||
u.email
|
||||
ch.ChannelId,
|
||||
ch.UserId,
|
||||
u.Email,
|
||||
u.Username
|
||||
FROM ChannelMembers AS ch
|
||||
INNER JOIN Users AS u ON ch.UserId = u.id
|
||||
WHERE ch.ChannelId = :ChannelId`
|
||||
@@ -158,7 +160,7 @@ func (s SqlChannelMemberHistoryStore) PermanentDeleteBatch(endTime int64, limit
|
||||
query =
|
||||
`DELETE FROM ChannelMemberHistory
|
||||
WHERE ctid IN (
|
||||
SELECT ctid FROM ChannelMemberHistory
|
||||
SELECT ctid FROM ChannelMemberHistory
|
||||
WHERE LeaveTime IS NOT NULL
|
||||
AND LeaveTime <= :EndTime
|
||||
LIMIT :Limit
|
||||
|
||||
@@ -225,7 +225,8 @@ func (s SqlComplianceStore) MessageExport(after int64, limit int) store.StoreCha
|
||||
Channels.Id AS ChannelId,
|
||||
Channels.DisplayName AS ChannelDisplayName,
|
||||
Users.Id AS UserId,
|
||||
Users.Email AS UserEmail
|
||||
Users.Email AS UserEmail,
|
||||
Users.Username
|
||||
FROM
|
||||
Posts
|
||||
LEFT OUTER JOIN Channels ON Posts.ChannelId = Channels.Id
|
||||
|
||||
@@ -35,6 +35,7 @@ func testLogJoinEvent(t *testing.T, ss store.Store) {
|
||||
user := model.User{
|
||||
Email: model.NewId() + "@mattermost.com",
|
||||
Nickname: model.NewId(),
|
||||
Username: model.NewId(),
|
||||
}
|
||||
user = *store.Must(ss.User().Save(&user)).(*model.User)
|
||||
|
||||
@@ -57,6 +58,7 @@ func testLogLeaveEvent(t *testing.T, ss store.Store) {
|
||||
user := model.User{
|
||||
Email: model.NewId() + "@mattermost.com",
|
||||
Nickname: model.NewId(),
|
||||
Username: model.NewId(),
|
||||
}
|
||||
user = *store.Must(ss.User().Save(&user)).(*model.User)
|
||||
|
||||
@@ -82,6 +84,7 @@ func testGetUsersInChannelAtChannelMemberHistory(t *testing.T, ss store.Store) {
|
||||
user := model.User{
|
||||
Email: model.NewId() + "@mattermost.com",
|
||||
Nickname: model.NewId(),
|
||||
Username: model.NewId(),
|
||||
}
|
||||
user = *store.Must(ss.User().Save(&user)).(*model.User)
|
||||
|
||||
@@ -108,6 +111,7 @@ func testGetUsersInChannelAtChannelMemberHistory(t *testing.T, ss store.Store) {
|
||||
assert.Equal(t, channel.Id, channelMembers[0].ChannelId)
|
||||
assert.Equal(t, user.Id, channelMembers[0].UserId)
|
||||
assert.Equal(t, user.Email, channelMembers[0].UserEmail)
|
||||
assert.Equal(t, user.Username, channelMembers[0].Username)
|
||||
assert.Equal(t, joinTime, channelMembers[0].JoinTime)
|
||||
assert.Nil(t, channelMembers[0].LeaveTime)
|
||||
|
||||
@@ -117,6 +121,7 @@ func testGetUsersInChannelAtChannelMemberHistory(t *testing.T, ss store.Store) {
|
||||
assert.Equal(t, channel.Id, channelMembers[0].ChannelId)
|
||||
assert.Equal(t, user.Id, channelMembers[0].UserId)
|
||||
assert.Equal(t, user.Email, channelMembers[0].UserEmail)
|
||||
assert.Equal(t, user.Username, channelMembers[0].Username)
|
||||
assert.Equal(t, joinTime, channelMembers[0].JoinTime)
|
||||
assert.Nil(t, channelMembers[0].LeaveTime)
|
||||
|
||||
@@ -129,6 +134,7 @@ func testGetUsersInChannelAtChannelMemberHistory(t *testing.T, ss store.Store) {
|
||||
assert.Equal(t, channel.Id, channelMembers[0].ChannelId)
|
||||
assert.Equal(t, user.Id, channelMembers[0].UserId)
|
||||
assert.Equal(t, user.Email, channelMembers[0].UserEmail)
|
||||
assert.Equal(t, user.Username, channelMembers[0].Username)
|
||||
assert.Equal(t, joinTime, channelMembers[0].JoinTime)
|
||||
assert.Equal(t, leaveTime, *channelMembers[0].LeaveTime)
|
||||
|
||||
@@ -138,6 +144,7 @@ func testGetUsersInChannelAtChannelMemberHistory(t *testing.T, ss store.Store) {
|
||||
assert.Equal(t, channel.Id, channelMembers[0].ChannelId)
|
||||
assert.Equal(t, user.Id, channelMembers[0].UserId)
|
||||
assert.Equal(t, user.Email, channelMembers[0].UserEmail)
|
||||
assert.Equal(t, user.Username, channelMembers[0].Username)
|
||||
assert.Equal(t, joinTime, channelMembers[0].JoinTime)
|
||||
assert.Equal(t, leaveTime, *channelMembers[0].LeaveTime)
|
||||
|
||||
@@ -160,6 +167,7 @@ func testGetUsersInChannelAtChannelMembers(t *testing.T, ss store.Store) {
|
||||
user := model.User{
|
||||
Email: model.NewId() + "@mattermost.com",
|
||||
Nickname: model.NewId(),
|
||||
Username: model.NewId(),
|
||||
}
|
||||
user = *store.Must(ss.User().Save(&user)).(*model.User)
|
||||
|
||||
@@ -192,6 +200,7 @@ func testGetUsersInChannelAtChannelMembers(t *testing.T, ss store.Store) {
|
||||
assert.Equal(t, channel.Id, channelMembers[0].ChannelId)
|
||||
assert.Equal(t, user.Id, channelMembers[0].UserId)
|
||||
assert.Equal(t, user.Email, channelMembers[0].UserEmail)
|
||||
assert.Equal(t, user.Username, channelMembers[0].Username)
|
||||
assert.Equal(t, joinTime-500, channelMembers[0].JoinTime)
|
||||
assert.Equal(t, joinTime-100, *channelMembers[0].LeaveTime)
|
||||
|
||||
@@ -201,6 +210,7 @@ func testGetUsersInChannelAtChannelMembers(t *testing.T, ss store.Store) {
|
||||
assert.Equal(t, channel.Id, channelMembers[0].ChannelId)
|
||||
assert.Equal(t, user.Id, channelMembers[0].UserId)
|
||||
assert.Equal(t, user.Email, channelMembers[0].UserEmail)
|
||||
assert.Equal(t, user.Username, channelMembers[0].Username)
|
||||
assert.Equal(t, joinTime-100, channelMembers[0].JoinTime)
|
||||
assert.Equal(t, joinTime+500, *channelMembers[0].LeaveTime)
|
||||
|
||||
@@ -210,6 +220,7 @@ func testGetUsersInChannelAtChannelMembers(t *testing.T, ss store.Store) {
|
||||
assert.Equal(t, channel.Id, channelMembers[0].ChannelId)
|
||||
assert.Equal(t, user.Id, channelMembers[0].UserId)
|
||||
assert.Equal(t, user.Email, channelMembers[0].UserEmail)
|
||||
assert.Equal(t, user.Username, channelMembers[0].Username)
|
||||
assert.Equal(t, joinTime+100, channelMembers[0].JoinTime)
|
||||
assert.Equal(t, joinTime+500, *channelMembers[0].LeaveTime)
|
||||
|
||||
@@ -219,6 +230,7 @@ func testGetUsersInChannelAtChannelMembers(t *testing.T, ss store.Store) {
|
||||
assert.Equal(t, channel.Id, channelMembers[0].ChannelId)
|
||||
assert.Equal(t, user.Id, channelMembers[0].UserId)
|
||||
assert.Equal(t, user.Email, channelMembers[0].UserEmail)
|
||||
assert.Equal(t, user.Username, channelMembers[0].Username)
|
||||
assert.Equal(t, joinTime+100, channelMembers[0].JoinTime)
|
||||
assert.Equal(t, leaveTime-100, *channelMembers[0].LeaveTime)
|
||||
|
||||
@@ -228,6 +240,7 @@ func testGetUsersInChannelAtChannelMembers(t *testing.T, ss store.Store) {
|
||||
assert.Equal(t, channel.Id, channelMembers[0].ChannelId)
|
||||
assert.Equal(t, user.Id, channelMembers[0].UserId)
|
||||
assert.Equal(t, user.Email, channelMembers[0].UserEmail)
|
||||
assert.Equal(t, user.Username, channelMembers[0].Username)
|
||||
assert.Equal(t, joinTime-100, channelMembers[0].JoinTime)
|
||||
assert.Equal(t, leaveTime+100, *channelMembers[0].LeaveTime)
|
||||
|
||||
@@ -237,6 +250,7 @@ func testGetUsersInChannelAtChannelMembers(t *testing.T, ss store.Store) {
|
||||
assert.Equal(t, channel.Id, channelMembers[0].ChannelId)
|
||||
assert.Equal(t, user.Id, channelMembers[0].UserId)
|
||||
assert.Equal(t, user.Email, channelMembers[0].UserEmail)
|
||||
assert.Equal(t, user.Username, channelMembers[0].Username)
|
||||
assert.Equal(t, leaveTime+100, channelMembers[0].JoinTime)
|
||||
assert.Equal(t, leaveTime+200, *channelMembers[0].LeaveTime)
|
||||
}
|
||||
@@ -255,12 +269,14 @@ func testPermanentDeleteBatch(t *testing.T, ss store.Store) {
|
||||
user := model.User{
|
||||
Email: model.NewId() + "@mattermost.com",
|
||||
Nickname: model.NewId(),
|
||||
Username: model.NewId(),
|
||||
}
|
||||
user = *store.Must(ss.User().Save(&user)).(*model.User)
|
||||
|
||||
user2 := model.User{
|
||||
Email: model.NewId() + "@mattermost.com",
|
||||
Nickname: model.NewId(),
|
||||
Username: model.NewId(),
|
||||
}
|
||||
user2 = *store.Must(ss.User().Save(&user2)).(*model.User)
|
||||
|
||||
|
||||
@@ -341,7 +341,8 @@ func testComplianceMessageExport(t *testing.T, ss store.Store) {
|
||||
|
||||
// and two users that are a part of that team
|
||||
user1 := &model.User{
|
||||
Email: model.NewId(),
|
||||
Email: model.NewId(),
|
||||
Username: model.NewId(),
|
||||
}
|
||||
user1 = store.Must(ss.User().Save(user1)).(*model.User)
|
||||
store.Must(ss.Team().SaveMember(&model.TeamMember{
|
||||
@@ -350,7 +351,8 @@ func testComplianceMessageExport(t *testing.T, ss store.Store) {
|
||||
}, -1))
|
||||
|
||||
user2 := &model.User{
|
||||
Email: model.NewId(),
|
||||
Email: model.NewId(),
|
||||
Username: model.NewId(),
|
||||
}
|
||||
user2 = store.Must(ss.User().Save(user2)).(*model.User)
|
||||
store.Must(ss.Team().SaveMember(&model.TeamMember{
|
||||
@@ -415,6 +417,7 @@ func testComplianceMessageExport(t *testing.T, ss store.Store) {
|
||||
assert.Equal(t, channel.DisplayName, *messageExportMap[post1.Id].ChannelDisplayName)
|
||||
assert.Equal(t, user1.Id, *messageExportMap[post1.Id].UserId)
|
||||
assert.Equal(t, user1.Email, *messageExportMap[post1.Id].UserEmail)
|
||||
assert.Equal(t, user1.Username, *messageExportMap[post1.Id].Username)
|
||||
|
||||
// post2 was made by user1 in channel1 and team1
|
||||
assert.Equal(t, post2.Id, *messageExportMap[post2.Id].PostId)
|
||||
@@ -424,6 +427,7 @@ func testComplianceMessageExport(t *testing.T, ss store.Store) {
|
||||
assert.Equal(t, channel.DisplayName, *messageExportMap[post2.Id].ChannelDisplayName)
|
||||
assert.Equal(t, user1.Id, *messageExportMap[post2.Id].UserId)
|
||||
assert.Equal(t, user1.Email, *messageExportMap[post2.Id].UserEmail)
|
||||
assert.Equal(t, user1.Username, *messageExportMap[post2.Id].Username)
|
||||
|
||||
// post3 is a DM between user1 and user2
|
||||
assert.Equal(t, post3.Id, *messageExportMap[post3.Id].PostId)
|
||||
@@ -432,4 +436,5 @@ func testComplianceMessageExport(t *testing.T, ss store.Store) {
|
||||
assert.Equal(t, directMessageChannel.Id, *messageExportMap[post3.Id].ChannelId)
|
||||
assert.Equal(t, user1.Id, *messageExportMap[post3.Id].UserId)
|
||||
assert.Equal(t, user1.Email, *messageExportMap[post3.Id].UserEmail)
|
||||
assert.Equal(t, user1.Username, *messageExportMap[post3.Id].Username)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user